<p>I recently started to explore k8s extensions and got introduced to two concepts:</p>

<ol>
<li>CRD.</li>
<li>Service catalogs.</li>
</ol>

<p>They look pretty similar to me. The only difference to my understanding is, CRDs are deployed inside same cluster to be consumed; whereas, catalogs are deployed to be exposed outside the cluster for example as database service (client can order cluster of mysql which will be accessible from his cluster). </p>

<p>My query here is:</p>

<p>Is my understanding correct? if yes, can there be any other scenario where I would like to create catalog and not CRD.</p>

<p>Yes, your understanding is correct. Taken from <a href="https://kubernetes.io/docs/concepts/extend-kubernetes/service-catalog" rel="nofollow noreferrer">official documentation</a>: </p>

<blockquote>
  <h3>Example use case</h3>
  
  <p>An application developer wants to use message queuing as part of their application running in a Kubernetes cluster.
  However, they do not want to deal with the overhead of setting such a
  service up and administering it themselves. Fortunately, there is a
  cloud provider that offers message queuing as a managed service
  through its service broker.</p>
  
  <p>A cluster operator can setup Service Catalog and use it to communicate
  with the cloud provider’s service broker to provision an instance of
  the message queuing service and make it available to the application
  within the Kubernetes cluster. The application developer therefore
  does not need to be concerned with the implementation details or
  management of the message queue. The application can simply use it as
  a service.</p>
</blockquote>

<p>With CRD you are responsible for provisioning resources, running backend logic and so on.</p>

<p>More info can be found in this <a href="https://www.youtube.com/watch?v=7wdUa4Ulwxg" rel="nofollow noreferrer">KubeCon 2018 presentation</a>.</p>
