Kubernetes CRD Demo
Building a Kubernetes Custom Resource Definition (CRD) following professional patterns.
- How to define custom resources using Go types
- How Kubernetes code generation works
- How to install and use custom resources
- Professional patterns used by major Kubernetes tools
- Kubernetes cluster (kind, minikube, or any K8s cluster)
kubectlinstalled and configured
Create Go structs that define your custom resource schema
Use Kubernetes code generators to create client libraries automatically
Register your custom resource type with Kubernetes
This project uses Kubernetes code-generator to generate clients, informers, and listers for the NamespaceCleaner CRD. Starting with Kubernetes 1.30+ (code-generator v0.30.x+), generate-groups.sh has been removed. To make code generation work, I have pin code-generator to v0.27.3 or lower:
go get k8s.io/[email protected]
go mod tidy
Then you can generate your CRD clients by running:
./hack/update-codegen.sh
bash hack/update-codegen.shkubectl apply -f config/crd/namespacecleaners.yamlkubectl apply -f example-namespacecleaner.yamlkubectl get namespacecleanerspkg/apis/clusterops/v1alpha1/types.go- Go type definitionspkg/apis/clusterops/v1alpha1/register.go- API registrationconfig/crd/namespacecleaners.yaml- CRD definitionhack/update-codegen.sh- Code generation script