My best attempt to explain Kubernetes Custom Resource Definitions (CRDs):
I'll keep it short and no fluff.
A CRD helps you create your own custom resources, like a new type of object that can be managed by Kubernetes.
Think of it like this:
Kubernetes has built-in resources. LIke Pods, Deployments, and Services.
But, what if you want to manage a resource for custom monitoring? Well, that's where CRDs can help. Just imagine:
kubectl get custommonitor
How cool is that? 🤩
Now, coming to the topic. How is this done?
1. By letting you define a new resource type ("custommonitor")
2. Specify the properties of that resource
3. And then creating custom controllers
(to manage the lifecycle of that resource)
Why are CRDs needed?
In shortest terms, to extend Kubernetes. For future needs.
Because future is not we enter. It's what we create ❤️