I have hands-on experience working with Kubernetes and want to start creating my own CustomResourceDefinitions. I'm comfortable with Python, but I'm willing to learn Go if that's the usual path. What would be a practical beginner-friendly roadmap, and what small project should I build first to understand CRDs and controllers?
3 Answers
Go is worth learning if you want to work with the Kubernetes controller ecosystem, since most of the common tools and examples use it. A good next step is to follow a Kubebuilder tutorial and build a small operator that manages something simple. Once you’re comfortable, you can try a more advanced project such as a scheduler or another controller that coordinates multiple Pods through a configurable custom resource.
Start with the official Kubernetes documentation on CustomResourceDefinitions. Create a very small custom resource with only one or two fields, apply it to a cluster, and inspect how Kubernetes stores and serves it. This helps you understand the API object before adding any automation.
Once you understand the resource itself, build a tiny controller. You can first write one from scratch to learn the reconciliation loop, watches, desired state, and status updates. After that, move to controller-runtime and then use Kubebuilder or Operator SDK to handle the project scaffolding and common patterns.

That progression makes sense. I’ll start with a simple resource and controller instead of jumping straight into a large operator.