Labs
Labs
Unless a lab says otherwise, run everything on support01, and create every
file directly in your home directory - the labs cd ~ before writing
anything, so kubectl apply -f pod.yaml always finds what you just wrote. The
only exceptions create their own folder and say so: the Docker build contexts in
Labs 03 and 04, helm create in Lab 21, and the git clone in the extended labs.
Labs come in two flavours, and the difference is deliberate:
- Guided - every command is given, with an explanation of what it does and what you should see. Use these to build the vocabulary.
- Discovery Infodiscover - you get the
task and the expected result, but the command is hidden behind a
Show the command box. Try first, look second. This is what the job actually
feels like, and the cheat sheets
plus
kubectl explainand--helpare your reference.
Day 1
| # | Lab | Type |
|---|---|---|
| 01 | Workstation setup | guided |
| 02 | Docker containers | guided |
| 03 | Docker images and Dockerfile | guided |
| 04 | Docker networking and volumes | guided |
| 05 | First look at the cluster | guided |
| 06 | Finding your way around kubectl | discovery |
| 07 | Pods | guided + discovery |
Day 2
| # | Lab | Type |
|---|---|---|
| 08 | Pod troubleshooting | discovery |
| 09 | Namespaces | guided |
| 10 | ReplicaSets | guided |
| 11 | Deployments and probes | guided + discovery |
| 12 | DaemonSets | guided |
| 13 | Taints, tolerations and affinity | guided + discovery |
| 14 | Services | guided |
| 15 | Gateway API | guided + discovery |
| 16 | Node operations | discovery |
Day 3
| # | Lab | Type |
|---|---|---|
| 17 | ConfigMaps and Secrets | guided |
| 18 | Persistent storage on NFS | guided + discovery |
| 19 | StatefulSets | guided |
| 20 | Helm releases | guided |
| 21 | Writing your own chart | guided |
| 22 | An operator: PostgreSQL | guided + discovery |
| 23 | Application end to end | discovery (optional) |
Extended labs
Two longer challenge labs built on one real application - a Blazor frontend, an ASP.NET Core API and a highly available PostgreSQL cluster run by an operator. They live in their own repository, together with the application source and a script that grades each stage, so you can work through them alone and at your own pace - during the course, or long after it.
git clone https://github.com/ecaha/kubequiz.git ~/kubequiz
cd ~/kubequiz && ./labs/verify.sh a0
| # | Lab | Type |
|---|---|---|
| 24 | Deploy KubeQuiz | challenge |
| 25 | Ship a change | challenge |
Lab 24 covers deployment and operations: an operator-managed database, probes, a database failover under load, autoscaling, draining a node and a NetworkPolicy. Lab 25 covers the pipeline: fork the repository, change one line of C#, and follow it through GitHub Actions, a container registry, git and Argo CD into the running cluster.
Rules of the house
- Every lab ends with a clean-up step. Run it - the next lab assumes a tidy cluster.
- In a discovery task, spend two minutes trying before you open the box. The answer you find yourself is the one you keep.
kubectl explainand--helpare not cheating. They are the job.