git clone --filter=blob:none --sparse https://github.com/calmict/book_labs.git cd book_labs git sparse-checkout set kubernetes/ed1
The journey starts below Kubernetes: you observe a real process through the two views that make a container look like a separate machine.
Fill in the TODOs in the starter files, then run the solution's test:
cd kubernetes/ed1/cap01/solution ./run.sh
After observing two views in chapter 1, you build the illusion yourself using only Linux kernel tools.
Fill in the TODOs in the starter files, then run the solution's test:
cd kubernetes/ed1/cap02/solution ./run.sh
Namespaces decide what a process sees; now you directly observe the counters that decide how much it may consume.
Fill in the TODOs in the starter files, then run the solution's test:
cd kubernetes/ed1/cap03/solution ./run.sh
After namespaces and cgroups, one last piece of the anatomy is missing: the filesystem. In this lab you open an image, follow the references between its objects, and measure how - and in what sense - container root differs from host root: in its powers, yes; in its identity, no.
Fill in the TODOs in the starter files, then run the solution's test:
cd kubernetes/ed1/cap04/solution ./run.sh
You built a container's pieces by hand; now follow who assembles them. Start from the live process, climb to the shim, query containerd, and finally hand a bundle directly to runc.
Fill in the TODOs in the starter files, then run the solution's test:
cd kubernetes/ed1/cap05/solution ./run.sh
The namespaces from chapter 2 were sealed rooms. Now you lay the cables: two veth pairs and a bridge turn two isolated network views into a small network without ever changing the host network.
Fill in the TODOs in the starter files, then run the solution's test:
cd kubernetes/ed1/cap06/solution ./run.sh
Containers now enter the cluster. In this lab you distinguish the brain from the arms and watch the declarative model correct real sabotage.
Fill in the TODOs in the starter files, then run the solution's test:
cd kubernetes/ed1/cap07/solution ./run.sh
Chapter 7's desired state must survive failures. Here you find it as a replicated key and measure the difference between losing a leader and losing the majority.
Fill in the TODOs in the starter files, then run the solution's test:
cd kubernetes/ed1/cap08/solution ./run.sh
Etcd stores the truth, but only the API server may touch it. Here you use curl to see the gates a request crosses and the stream that reports every change.
Fill in the TODOs in the starter files, then run the solution's test:
cd kubernetes/ed1/cap09/solution ./run.sh
After LIST and WATCH, build the loop that receives state, measures the gap, and acts.
Fill in the TODOs in the starter files, then run the solution's test:
cd kubernetes/ed1/cap10/solution ./run.sh
The loop now has one precise job: choose the node, without executing the Pod.
Fill in the TODOs in the starter files, then run the solution's test:
cd kubernetes/ed1/cap11/solution ./run.sh
After the scheduler's choice, observe the kubelet keeping the Pod healthy and ready on its node.
Fill in the TODOs in the starter files, then run the solution's test:
cd kubernetes/ed1/cap12/solution ./run.sh
> Exercise for Chapter 13 — The Life of a Pod: From kubectl apply to the Running Container of the > *Kubernetes Manual* (Calm ICT series — [calmict.com](https://calmict.com)).
Fill in the TODOs in the starter files, then run the solution's test:
cd kubernetes/ed1/cap13/solution ./run.sh
> Exercise for Chapter 14 — The Pod in Depth of the > *Kubernetes Manual* (Calm ICT series — [calmict.com](https://calmict.com)).
Fill in the TODOs in the starter files, then run the solution's test:
cd kubernetes/ed1/cap14/solution ./run.sh
> Exercise for Chapter 15 — ReplicaSet and Deployment of the > *Kubernetes Manual* (Calm ICT series — [calmict.com](https://calmict.com)).
Fill in the TODOs in the starter files, then run the solution's test:
cd kubernetes/ed1/cap15/solution ./run.sh
> Exercise for Chapter 16 — StatefulSet and State Management of the > *Kubernetes Manual* (Calm ICT series — [calmict.com](https://calmict.com)).
Fill in the TODOs in the starter files, then run the solution's test:
cd kubernetes/ed1/cap16/solution ./run.sh
> Exercise for Chapter 17 — DaemonSet, Job and CronJob of the > *Kubernetes Manual* (Calm ICT series — [calmict.com](https://calmict.com)).
Fill in the TODOs in the starter files, then run the solution's test:
cd kubernetes/ed1/cap17/solution ./run.sh
> Exercise for Chapter 18 — Services and the Magic of kube-proxy of the > *Kubernetes Manual* (Calm ICT series — [calmict.com](https://calmict.com)).
Fill in the TODOs in the starter files, then run the solution's test:
cd kubernetes/ed1/cap18/solution ./run.sh
After chapter 18's Services, the building has many entrances but still cannot read the name written inside an HTTP request. Here you separate declarative rules from their executor and observe L7 routing.
Fill in the TODOs in the starter files, then run the solution's test:
cd kubernetes/ed1/cap19/solution ./run.sh
After routing requests, you assign storage without tying the application to a particular disk: the PVC asks, the PV offers, and the binder arranges the marriage.
Fill in the TODOs in the starter files, then run the solution's test:
cd kubernetes/ed1/cap20/solution ./run.sh
Storage separated request from implementation; now you separate authentication from authorization. You hire a person with a certificate and give a workload an identity of its own.
Fill in the TODOs in the starter files, then run the solution's test:
cd kubernetes/ed1/cap21/solution ./run.sh
RBAC closed the API boundary; now you close the paths between workloads with a network contract.
Fill in the TODOs in the starter files, then run the solution's test:
cd kubernetes/ed1/cap22/solution ./run.sh
The network boundary is closed; now you reduce what a process may do through the kernel shared with its host.
Fill in the TODOs in the starter files, then run the solution's test:
cd kubernetes/ed1/cap23/solution ./run.sh
You have coordinated Kubernetes objects by hand; now one chart turns their shared shape into a versioned release.
Fill in the TODOs in the starter files, then run the solution's test:
cd kubernetes/ed1/cap24/solution ./run.sh
After packaging the platform with Helm, you give it eyes: a reader visits meters and turns raw measurements into verifiable questions.
Fill in the TODOs in the starter files, then run the solution's test:
cd kubernetes/ed1/cap25/solution ./run.sh
You have learned to observe the cluster; now you hand ArgoCD a ledger and ask it to correct every divergence.
Fill in the TODOs in the starter files, then run the solution's test:
cd kubernetes/ed1/cap26/solution ./run.sh
After entrusting state to an auditor, you entrust every call to an escort that applies identity, encryption, and routing without changing the application.
Fill in the TODOs in the starter files, then run the solution's test:
cd kubernetes/ed1/cap27/solution ./run.sh
The journey ends by giving the doorman hired in chapter 19 a verifiable identity. In this lab you build a local CA, ask Cert-Manager to issue a certificate, and prove that Traefik serves the shop over HTTPS without any hand-made keys or certificates.
Fill in the TODOs in the starter files, then run the solution's test:
cd kubernetes/ed1/cap28/solution ./run.sh