You don’t know where to start?
Do you want to design an Operator to package your solutions?
I recommend the following plan — in just one day you can cover the foundations, and in about 5 hours you’ll have a strong base over the fundamentals to begin developing your own Operators.
(15 min) Start with the Quick Start
Ensure that you have Kubebuilder installed and run the initial commands:
👉 https://book.kubebuilder.io/quick-start
Quick Start — Prerequisites
- Kubebuilder: https://book.kubebuilder.io/quick-start
- KIND: https://book.kubebuilder.io/reference/kind
- kubectl: https://kubernetes.io/docs/tasks/tools/#kubectl
- Golang: https://go.dev/
(1 hour) Start with the basics
Kubebuilder’s Getting Started guide walks you through building your first Operator step by step:
👉 https://book.kubebuilder.io/getting-started
(15 min) Learn the core concepts
The CronJob tutorial explains Groups, Versions, and Kinds (GVKs) — essential to understanding how Kubernetes APIs are structured:
👉 https://book.kubebuilder.io/cronjob-tutorial/gvks
(30 min) Understand Watching Resources
Read how to watch and reconcile external resources efficiently, a key skill for building effective Operators:
👉 https://book.kubebuilder.io/reference/watching-resources
(15 min) Understand Finalizers
Learn how to use finalizers to manage cleanup logic when resources are deleted, ensuring Operators handle lifecycle events correctly:
👉 https://book.kubebuilder.io/reference/using-finalizers
(15 min) Understand Webhooks
Learn what webhooks are, how they’re used for validation, defaulting, and mutation, and why they are important for Operator design:
👉 https://book.kubebuilder.io/reference/webhook-overview
(1 hour min) Get hands-on with scaffolding
Use the deploy-image plugin to scaffold a project and explore the generated API, controller, and tests:
👉 https://book.kubebuilder.io/plugins/available/deploy-image-plugin-v1-alpha
kubebuilder init
kubebuilder create api \
--group example.com \
--version v1alpha1 \
--kind Busybox \
--image=busybox:1.36.1 \
--plugins="deploy-image/v1-alpha"
Ensure that you check:
- API scaffold under
api/(also see the markers, https://book.kubebuilder.io/reference/markers) - Controller under
internal/controller/(read the reconciliation and see all concepts above applied) - Controller tests and suite tests using ENVTEST(https://book.kubebuilder.io/reference/envtest)
- E2E tests under
test/e2e/, which are called using GitHub Actions - Push to GitHub: create a repo, push your project, and see everything running
- Explore the
config/directory where you have the manifests
For more on the project layout:
👉 https://book.kubebuilder.io/cronjob-tutorial/basic-project
(15 min) Learn Good Practices
Review the recommended practices for structuring, documenting, and maintaining your projects:
👉 https://book.kubebuilder.io/reference/good-practices