<p>Worked with <a href="https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/" rel="nofollow noreferrer">CRDs</a> a bit so far. Recently a colleague of mine claimed that custom resources only ever manage pods in the end. Is this true? Can you do CRDs for services or config maps as well?</p>

User12547645
<p>A custom resource <em>definition</em> doesn't manage anything.  It is just a definition for some specific API group, version, and kind (as you see at the top of a Kubernetes manifest) that is not part of the standard Kubernetes API.  If you've installed a CRD then you can <code>kubectl get customtypename</code> and run similar commands, but nothing actually happens as a result of creating one of these objects.</p>
<p>The other part of the typical <a href="https://kubernetes.io/docs/concepts/extend-kubernetes/operator/" rel="nofollow noreferrer">operator pattern</a> is a Kubernetes <a href="https://kubernetes.io/docs/concepts/architecture/controller/" rel="nofollow noreferrer">controller</a>.  This is a program, that usually runs inside the cluster, that uses the <a href="https://kubernetes.io/docs/reference/using-api/" rel="nofollow noreferrer">Kubernetes API</a> to take some action.</p>
<p>A controller can read and write <em>any</em> Kubernetes resource; it is not limited to Pods.  You could, for example, create a ConfigMap in response to a custom resource changing, or reference a ConfigMap in your custom resource and combine those two data to invoke some external API.</p>
