Kubernetes is known for its power and flexibility in managing containerized applications, but did you know it can also be extended to orchestrate custom workflows unique to your organization’s needs? Enter Custom Resource Definitions (CRDs). CRDs allow you to define your own resource types, extending Kubernetes beyond its out-of-the-box functionality. This means that Kubernetes can manage not just Pods and Services, but also any other kind of resource that your team requires.
By defining a CRD, we essentially added a new table to Kubernetes’ internal document store via the API server (etcd). This resource could now be interacted with just like any built-in Kubernetes object. Using tools like kubectl, we could create, update, and delete instances of this new resource, seamlessly integrating it with existing workflows.
By using CRDs and controllers, we can offer reusable services to our teams while avoiding the overhead of developing new APIs from scratch. The built-in Kubernetes ecosystem provides authentication, authorization, and even CLI tooling for free, significantly reducing development time and complexity.