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:

  1. Module 1: Kubernetes Architecture Deep Dive
  2. Module 2: Introduction to Operators
  3. Module 3: Building Custom Controllers
  4. Module 4: Advanced Reconciliation Patterns
  5. Module 5: Webhooks and Admission Control
  6. Module 6: Testing and Debugging
  7. Module 7: Production Considerations
  8. 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

  1. Clone this repository:

    git clone https://github.com/piyushjajoo/k8s-operators-course.git
    cd k8s-operators-course
    
  2. Set up your development environment:

    ./scripts/setup-dev-environment.sh
    
  3. Create a kind cluster:

    ./scripts/setup-kind-cluster.sh
    
  4. 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

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:

  1. Open a new issue in this repository with the label enhancement (if available) or use the title prefix [Feature Request]
  2. 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?
  3. 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.