Building Kubernetes Operators Course
A comprehensive, hands-on and free course for building production-ready Kubernetes operators using Kubebuilder.
Course Overview
This course teaches you how to build Kubernetes operators from the ground up. You’ll learn the fundamentals of Kubernetes architecture, the controller pattern, and how to use Kubebuilder to create custom operators that manage complex applications.
Duration: 8 weeks (40-50 hours total)
Level: Intermediate to Advanced
Prerequisites: Basic Kubernetes knowledge, Go programming fundamentals, understanding of containerization
License: Free and open-source - Licensed under MIT License
Course Structure
The course is divided into 8 modules, each building on the previous:
- Module 1: Kubernetes Architecture Deep Dive
- Module 2: Introduction to Operators
- Module 3: Building Custom Controllers
- Module 4: Advanced Reconciliation Patterns
- Module 5: Webhooks and Admission Control
- Module 6: Testing and Debugging
- Module 7: Production Considerations
- Module 8: Advanced Topics and Real-World Patterns
Getting Started
Prerequisites
- Go 1.24+
- kubectl
- Docker or Podman
- kind v0.29+
- Kubebuilder 4.7+
Setup
-
Clone this repository:
git clone https://github.com/piyushjajoo/k8s-operators-course.git cd k8s-operators-course -
Set up your development environment:
./scripts/setup-dev-environment.sh -
Create a kind cluster:
./scripts/setup-kind-cluster.sh -
Start with Module 1:
cd module-01 cat README.md
Learning Approach
This course emphasizes:
- Practical Learning: Every concept is demonstrated through hands-on exercises
- Visual Learning: Extensive use of Mermaid diagrams for architecture and flows
- Progressive Complexity: Start simple, build to production-ready operators
- Real-world Examples: Build actual operators you can use
Resources
- Kubebuilder Documentation
- Kubernetes API Documentation
- Operator Pattern
- Complete Hello World Operator Code built following this course, you can refer.
- Complete Postgres Operator Code built following this course, you can refer.
Contributing
We welcome contributions and feedback! Here’s how you can help improve this course:
Reporting Issues
If you find bugs, typos, or errors in the course materials, please open an issue in this repository.
Requesting New Concepts
Have an idea for a new concept, topic, or module you’d like to see added to the course? We’d love to hear from you!
To request a new concept:
- Open a new issue in this repository with the label
enhancement(if available) or use the title prefix[Feature Request] - Include the following information:
- Concept/Topic Name: What concept would you like to see covered?
- Description: A brief description of the concept and why it would be valuable
- Suggested Module: Which module do you think this fits best in? (or suggest a new module)
- Use Case: How would this help learners build better operators?
- Priority: Is this a nice-to-have or a critical gap in the course?
- Example format:
[Feature Request] Operator SDK Comparison Description: Add a lesson comparing Kubebuilder with Operator SDK Suggested Module: Module 2 or new comparison module Use Case: Help learners understand when to choose which framework Priority: Nice-to-have
We review all requests and prioritize based on:
- Community interest and upvotes
- Alignment with course learning objectives
- Complexity and time required to develop
- Gaps in current course coverage
Note: While we can’t guarantee every request will be implemented, we value your input and will consider all suggestions!
License
This course is free and open-source, licensed under the MIT License. You are free to:
- Use, share, and modify the course materials
- Use for personal or commercial purposes
- Distribute and sublicense the materials
The only requirement is that you include the original copyright notice and license text. See the LICENSE file for full details.
Share Your Project
If you’ve completed the course and built an operator, we’d love to see it! Share your project on LinkedIn and tag Piyush Jajoo. I’ll make my best effort in my free time to review your code and provide feedback. Please consider ⭐ing the project if you found it useful.
Support
For questions and discussions, please open an issue in this repository.