Perfect. Designing SFD301 around the Example Voting App is an excellent pedagogical choice — it gives you a single, evolving system that naturally exposes scheduling, scaling, traffic, security, Helm, CRDs, Operators, and even Agentic concepts without feeling artificial.
Below is a clean, final, instructor-grade design you can directly use to build the course.
SFD301 – Kubernetes Intermediate: For Developers & DevOps Engineers
The bridge between Kubernetes basics and real-world, production-grade systems.
This course takes learners from “I know Kubernetes objects” to “I can design, scale, secure, and extend Kubernetes workloads confidently” — using a single, realistic application as the backbone.
This course is ideal for:
- Software Developers / Application Engineers deploying apps on Kubernetes
- DevOps Engineers supporting application teams
- Engineers who have completed Kubernetes Essentials / Fundamentals
- Professionals preparing to move into Platform Engineering or Advanced Kubernetes roles
This course is not:
- A GitOps or ArgoCD course
- A Kubernetes cluster administration course
- A deep Go or Operator SDK bootcamp
Learners should already be comfortable with:
- Pods, Deployments, Services
- ConfigMaps and Secrets
- Basic Ingress concepts
- kubectl usage
- Containers and Docker
A local Kubernetes cluster will be set up during the course.
Repository: https://github.com/schoolofdevops/example-voting-app
The app consists of:
- Frontend voting service
- Backend result service
- Worker service
- Redis
- PostgreSQL
Each section of the course evolves this same application:
- From basic deployment
- To scaled, traffic-managed, secure workloads
- To custom APIs and Operators
- To AI-assisted troubleshooting
This avoids toy examples and teaches systems thinking.
- Essentials Refresh & Environment Setup
- Advanced Pod Scheduling & Placement
- Resource Management & Autoscaling
- Gateway API & Modern Traffic Control
- Service Mesh Decision Making
- Security for Application Teams
- Helm for Real-World Applications
- Extending Kubernetes with CRDs
- Writing Kubernetes Operators
- Intro to Agentic Kubernetes (Preview)
This is structured exactly how you can build the course.
- Align everyone to a common baseline
- Avoid re-teaching theory
- Get hands-on immediately
- Kubernetes objects recap (Pods, Deployments, Services)
- How the Example Voting App is structured
- Local Kubernetes with KIND
- kubectl context hygiene
Lab Outline
- Create a local Kubernetes cluster using KIND 👉 https://kubernetes-tutorial.schoolofdevops.com/kind_create_cluster/
- Verify cluster health
- Deploy the Example Voting App (baseline)
- Confirm all services are reachable
- Capture the “working baseline” state
Outcome
Everyone starts from the same known-good system.
- Node affinity & anti-affinity
- Pod affinity for co-located services
- Topology spread constraints
- Scheduling failure modes
Lab Outline
- Label nodes by zone / role
- Distribute frontend replicas across nodes
- Prevent Redis/Postgres from co-locating improperly
- Introduce bad constraints and debug Pending pods
Outcome
Learners understand why pods land where they do.
- Requests vs limits (production heuristics)
- CPU throttling & memory OOMs
- HPA internals
- VPA trade-offs
- KEDA overview
Lab Outline
- Add load to the voting frontend
- Observe failures due to poor resource settings
- Configure HPA for frontend
- Evaluate VPA recommendations
- Discuss when KEDA would be appropriate
Outcome
Learners can design autoscaling intentionally, not blindly.
- Why Ingress is insufficient
- Gateway API mental model
- Gateway vs Route vs Listener
- Multi-team traffic ownership
- Routing strategies
Lab Outline
- Identify Ingress limitations in current setup
- Deploy a Gateway
- Route traffic using HTTPRoute
- Split traffic between versions of frontend
- Simulate multiple teams owning routes
Outcome
Learners adopt modern Kubernetes traffic patterns.
- What Gateway API solves
- What it does not
- Clear service mesh adoption signals
- Sidecar vs ambient concepts
- Cost vs complexity trade-offs
Lab Outline
- Evaluate Voting App requirements
- Identify needs: mTLS, retries, observability
- Compare Gateway-only vs Mesh-based designs
- Make an explicit “mesh or no mesh” decision
Outcome
Learners develop architectural judgment.
- NetworkPolicies
- Pod Security Admission
- RBAC from a developer POV
- Secure-by-default manifests
Lab Outline
- Apply default-deny NetworkPolicy
- Allow only required service-to-service traffic
- Enable Pod Security Admission
- Fix blocked deployments
- Validate least-privilege access
Outcome
Security added without breaking the app.
- Helm mental model
- Chart structure best practices
- values.yaml patterns
- Avoiding chart sprawl
Lab Outline
- Convert raw manifests into a Helm chart
- Parameterize environments
- Separate config, secrets, and resources
- Deploy same chart to multiple namespaces
Outcome
Learners create maintainable, reusable charts.
- CRDs as APIs
- Schema validation
- Versioning strategies
- Status subresource
Lab Outline
- Design a
VotingAppCustom Resource - Define desired state (replicas, limits)
- Add schema validation
- Update status to reflect health
Outcome
Learners think in Kubernetes APIs, not YAML hacks.
- Operator pattern & reconciliation loop
- Mapping business logic to controllers
- Lifecycle management
- When not to write Operators
Lab Outline
- Design reconciliation logic for VotingApp CR
- Identify desired vs observed state
- Walk through a minimal operator codebase
- Compare Operator vs CronJobs / Controllers
Outcome
Learners know when Operators are worth it.
- AI-assisted Kubernetes debugging
- Runbooks → agent skills
- Event → signal → action loops
- Human-in-the-loop automation
Lab Outline
- Introduce a failure in the Voting App
- Use AI to analyze logs and events
- Convert troubleshooting steps into a structured runbook
- Add approval checkpoints
- Discuss automation boundaries
Outcome
Learners glimpse the future of Kubernetes operations.
By the end of SFD301, learners will:
- Design scalable Kubernetes workloads
- Apply modern traffic management patterns
- Secure applications correctly
- Extend Kubernetes using CRDs and Operators
- Be ready for Advanced Kubernetes Ops, GitOps, and Agentic Kubernetes