Skip to content

Latest commit

History

37 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

DevOps Engineering: Core Practices

main labsbonusexamdurationfocus

Master production-grade DevOps through hands-on labs. You take a single web service and, week by week, containerize it, wire CI/CD, provision its infrastructure, make it observable, orchestrate it on Kubernetes, and ship it through GitOps and progressive delivery β€” ending with a multi-service, self-healing, fully-observable system and a portfolio that proves you can run software in production.

"You build it, you run it." β€” Werner Vogels


Course Roadmap

The arc is build β†’ integrate β†’ provision β†’ observe β†’ orchestrate β†’ deliver β†’ operate at scale. Each lab builds on the last; your service grows from one container to a three-service cluster.

WeekLabModuleKey Topics & Tooling (May 2026)
11Web Application DevelopmentPython 3.13, Flask/FastAPI, health endpoints
22ContainerizationDocker 29, multi-stage, distroless, Trivy scan, GHCR
33Continuous IntegrationGitHub Actions, testing pyramid, supply-chain safety
44Infrastructure as CodeTerraform 1.15 + Pulumi 3.243, state, OpenTofu
55Configuration Managementansible-core 2.21, roles, idempotency, Vault
66Continuous DeploymentAdvanced Ansible, Compose v2, CI/CD with OIDC
77LoggingLoki 3.7, Grafana Alloy 1.16 (Promtail EOL), LogQL
88MonitoringPrometheus 3.x, PromQL, RED/USE, Grafana 13
99KubernetesK8s 1.36 "Haru", Deployments, Services β€” 2nd service joins
1010HelmHelm 4.1, charts, templating, hooks, OCI registries
1111Secrets ManagementK8s Secrets, OpenBao 2.5, External Secrets Operator
1212Configuration & StorageConfigMaps, PV/PVC, StorageClass, hot-reload
1313GitOpsArgoCD 3.4, ApplicationSet β€” 3rd service joins
1414Progressive DeliveryArgo Rollouts 1.8, canary, blue-green, AnalysisTemplate
1515StatefulSetsHeadless services, volumeClaimTemplates, operators
1616Cluster Monitoringkube-prometheus, ServiceMonitor, init containers
β€”Bonus Labs
β€”17Edge DeploymentCloudflare Workers, V8 isolates, global edge
β€”18Reproducible BuildsNix flakes, deterministic builds

πŸ“… 16-week schedule. If your semester runs shorter, lectures pair up (two per week) so the lab cadence stays one-per-week. Lectures 1-16 map 1:1 to Labs 1-16; bonus labs 17-18 are covered by Lecture 16.


The Project: a service that grows into a system

You start with one Python service (Lab 1) and never throw it away β€” every lab adds a production capability to the same project. Two course-provided plumbing services join later to make orchestration concepts real:

graph LR
U[User] -->|HTTP| WEB[web :8080<br/>your Python service]
WEB -->|Lab 9+| ECHO[echo :8081<br/>plumbing]
WEB -.->|Lab 13+| HEALTH[health :8082<br/>plumbing]
style WEB fill:#2196F3,color:#fff
style ECHO fill:#FF9800,color:#fff
style HEALTH fill:#607D8B,color:#fff
Loading
ServiceRoleOwnerWhen it appears
webYour Python web service β€” the project spineYou build itLab 1
echoGo companion β€” makes Service + kube-DNS meaningfulCourse plumbing (plumbing/echo/)Lab 9
healthGo companion β€” gives ArgoCD ApplicationSet a 3rd targetCourse plumbing (plumbing/health/)Lab 13

You never write the plumbing services β€” you deploy and wire them. They expose Prometheus metrics so your Lab 7-8-16 observability stack picks them up automatically.


What Ships vs. What You Produce

In this repo (course-provided)In YOUR fork (you produce)
lectures/ β€” 16 lecturesapp_python/ β€” your service
labs/ β€” 18 lab specsk8s/ β€” your manifests (Lab 9+)
plumbing/ β€” echo + health servicesansible/, terraform/ β€” your IaC (Labs 4-6)
README.md β€” this file.github/workflows/ β€” your CI (Lab 3+)
monitoring/ β€” your Prometheus/Loki config (Labs 7-8)

Student-produced directories are gitignored in this repo so the upstream stays clean. You commit them to your fork.


Lab Structure

Each main lab (1-16) is worth 10 points of main tasks + up to 2 bonus points:

  • Main tasks sum to 10 pts. Split varies by lab (e.g. 6+4, or 2+3+3+2) β€” Task 1 is always standalone so later labs never depend on a task you skipped.
  • Bonus tasks sum to 2 pts, flat. Genuinely challenging extensions, not busywork.
  • Bonus labs (17, 18) follow the same 10 + 2 shape and are the exam-alternative track.

Acceptance criteria and a rubric table close every lab. Minimum passing per lab: 6/10.


Grading

Five components. Maximum contributions sum to 139%, capped at 100% β€” so there are multiple paths to an A and no single component is mandatory.

ComponentRawWeightRewards
Main labs 1-16 (main tasks)16070%Diligent weekly project work β€” the floor
Bonus tasks (2 pts Γ— 16 labs, flat)3214%Going beyond on weekly topics
Quiz leaderboards (5 rolling windows, top-10 share a pool)β€”5%Engagement + lecture mastery
Bonus labs 17 + 18 (10 pts each)2020%Edge + reproducible-build mastery; the exam alternative
Final examβ€”30%Optional β€” written, comprehensive
Sum (capped at 100%)139%

Paths to an A (β‰₯90%)

  • Practice path: all main labs (70%) + bonuses (14%) + both bonus labs (20%) β†’ 104% β†’ capped A, no exam.
  • Exam path: all main labs (70%) + bonuses (14%) + a solid exam (30%) β†’ A, no bonus labs.
  • Mixed: main labs + some bonuses + one bonus lab + a decent exam.
πŸ“Š Grade scale
GradePercentage
A90-100%
B75-89%
C60-74%
Dbelow 60%

Quiz Leaderboards

Each lecture has a 15-question post-quiz. Quizzes feed 5 rolling leaderboard windows across the semester:

WindowLecturesWeeks
1lec 1-31-3
2lec 4-64-6
3lec 7-97-9
4lec 10-1210-12
5lec 13-1613-16

The top-10 students in each window split that window's small point pool (β‰ˆ1% each, ~5% total). Late-joining students can still win later windows.


Technology Stack (pinned May 2026)

LayerToolVersion
RuntimePython3.13
ContainerDocker Engine29.5
RegistryGHCRβ€”
ScanningTrivyv0.69.3+ (post-CVE-2026-33634 safe)
CI/CDGitHub Actionsubuntu-24.04 runners
IaCTerraform / OpenTofu / Pulumi1.15 / 1.12 / 3.243
Config mgmtansible-core2.21
LogsLoki + Grafana Alloy3.7 / 1.16
MetricsPrometheus + Grafana3.x / 13
OrchestrationKubernetes1.36 "Haru"
Local clusterk3d (k3s-in-Docker)5.7
PackagingHelm4.1
SecretsOpenBao2.5
GitOpsArgoCD3.4
Progressive deliveryArgo Rollouts1.8

Submission Workflow

graph LR
A["Fork repo"] --> B["Branch lab&lt;N&gt;"]
B --> C["Complete tasks"]
C --> D["Push & open PR"]
D --> E["Submit PR URL via Moodle"]
E --> F["Receive feedback"]
style A fill:#4CAF50,color:#fff
style D fill:#F44336,color:#fff
style E fill:#00BCD4,color:#fff
Loading
git checkout -b lab1
# ... complete the lab ...
git add app_python/
git commit -m "Complete lab1"
git push -u origin lab1
# Open a PR from your-fork:lab1 β†’ your-fork:main, submit the PR URL on Moodle
πŸ“ Submission checklist
  • All main tasks completed
  • Documentation written (docs/LABNN.md)
  • Screenshots/CLI output where required
  • Code tested and working
  • Markdown validated
  • PR opened and URL submitted

Key Books & Resources

DevOps foundations

  • The Phoenix Project β€” Gene Kim et al. (2013)
  • The DevOps Handbook (2e) β€” Kim, Humble, Debois, Willis (2021)
  • Accelerate β€” Forsgren, Humble, Kim (2018)

Tooling

  • Docker Deep Dive β€” Nigel Poulton
  • Terraform: Up & Running (4e) β€” Yevgeniy Brikman
  • Ansible for DevOps β€” Jeff Geerling
  • Kubernetes Up & Running (3e) β€” Burns, Beda, Hightower
  • Learning Helm (2e) β€” Butcher, Farina, Dolitsky

Observability & reliability

  • Observability Engineering β€” Majors, Fong-Jones, Miranda
  • Site Reliability Engineering β€” Beyer et al. (free at sre.google/books) β€” pairs with the SRE-Intro elective

Online


Ready? Start with Lab 1. Questions β†’ course Moodle or office hours.

About

πŸš€ DevOps core course β€” 18 hands-on labs building a real service from Docker and CI/CD through Kubernetes, Helm, GitOps with ArgoCD, Argo Rollouts, observability (Prometheus/Grafana/Loki), Terraform, Ansible, secrets management, and Nix reproducible builds.

Topics

Resources

Stars

87 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages