Beispiel-Dokumentation: Registry-Hosts konfigurieren
1. Ziel
hosts.toml für Registry-Mirror, Pull- und Resolve-Capabilities wird geprüft.
2. Was gemacht wird
Das Beispiel erzeugt lokale Evidence unter work/, validiert Artefakte und sammelt optionale Runtime-Ausgaben, wenn die Werkzeuge installiert sind. Es bleibt sicher ausführbar, auch wenn containerd nicht als Dienst läuft.
3. Warum es gemacht wird
containerd-Probleme entstehen häufig durch Ebenenverwechslung: Docker-Workflow, containerd-API, CRI, OCI, CNI und Kubernetes beschreiben unterschiedliche Verantwortlichkeiten. Dieses Beispiel macht die jeweilige Grenze sichtbar.
4. Typische Kommandos
containerd --version 2>/dev/null || true
ctr version 2>/dev/null || true
ctr plugins ls 2>/dev/null || true
ctr namespaces ls 2>/dev/null || true
ctr -n k8s.io images ls 2>/dev/null || true
journalctl -u containerd -n 50 --no-pager 2>/dev/null || true
5. Erfolg prüfen
- Artefakte sind syntaktisch gültig.
- Evidence liegt unter
work/evidence/. - Es gibt keine echten Secrets.
- Der Scope ist klar: Modell, lokaler Host oder Kubernetes-Node.
- Risiken und Cleanup sind nachvollziehbar.
6. Typische Fehler
- falscher Namespace in
ctr. crictlohne passenden Runtime Endpoint.- Registry-Hosts im falschen Host-Namespace.
- TOML für falsche containerd-Major-Version.
- Snapshotter oder RuntimeClass konfiguriert, aber Runtime fehlt auf dem Node.
7. Sicherheitsaspekte
containerd läuft oft mit hoher Host-Nähe. Runtime-Änderungen können alle Pods eines Nodes betreffen. Deshalb werden Konfigurationsänderungen als Modell geprüft, bevor sie auf echte Nodes übertragen werden.
8. Realistischer Einsatz
Das Beispiel lässt sich in Node-Runbooks, Plattform-Reviews, Kubernetes-Troubleshooting, Registry-Incident-Analysen und Security-Härtung übertragen.
9. Workshop-Durchführung
- Lernziel lesen.
- Artefakte öffnen.
run.shausführen.- Evidence prüfen.
- betroffene Runtime-Schicht benennen.
- Risiko formulieren.
- Cleanup dokumentieren.
- Ergebnis mit einer zweiten Person reviewen.
10. Review-Matrix
| Prüffeld | Erwartung |
|---|---|
| Ebene | Host, containerd, CRI, OCI, CNI oder Kubernetes ist benannt. |
| Artefakt | TOML, YAML, JSON, Shell oder Log ist vorhanden. |
| Sicherheit | Keine produktiven Credentials oder Endpunkte. |
| Betrieb | Rollback oder Cleanup ist beschrieben. |
| Evidence | Nachweis ist reproduzierbar. |
Offizielle Referenzen
- containerd Dokumentation: https://containerd.io/docs/2.3/getting-started/
- containerd Registry-Konfiguration: https://github.com/containerd/containerd/blob/main/docs/hosts.md
- containerd Runtime v2: https://github.com/containerd/containerd/blob/main/docs/runtime-v2.md
- Kubernetes Container Runtimes: https://kubernetes.io/docs/setup/production-environment/container-runtimes/
- Kubernetes CRI: https://kubernetes.io/docs/concepts/containers/cri/
- OCI Image Specification: https://github.com/opencontainers/image-spec
- OCI Runtime Specification: https://github.com/opencontainers/runtime-spec
Beispielanhang: Evidence, Betrieb und Transfer
Dieser Zusatzteil macht das Beispiel als Trainingsbaustein vollständig. Er beschreibt, wie aus einem lokalen Modell eine belastbare Runtime-Analyse entsteht, ohne produktive Nodes oder Zugangsdaten zu berühren.
B.1 Scope bestimmen
Scope bestimmen ist für dieses Beispiel notwendig, weil containerd-Labs sonst leicht von einem sicheren Modell zu einer unkontrollierten Node-Änderung werden. Die Bewertung muss klar sagen, ob ein Artefakt nur erklärt, lokal prüft oder auf einem echten Node angewendet würde.
| Frage | Erwartung |
|---|---|
| Was ist betroffen? | Host, Daemon, Plugin, Content, Snapshotter, Runtime, CRI, CNI oder Kubernetes ist genannt. |
| Was ist belegt? | Eine Datei oder Ausgabe unter work/evidence/ zeigt den Befund. |
| Was bleibt offen? | Voraussetzungen für echte Nodes sind als Grenze dokumentiert. |
Reviewpunkte:
- keine produktiven Secrets
- keine ungeprüften Socket- oder Systemd-Änderungen
- keine Registry-Ausnahmen ohne Begründung
- keine Verwechslung von
ctr,crictlundnerdctl - Cleanup durch Entfernen von
work/möglich
B.2 Artefakte validieren
Artefakte validieren ist für dieses Beispiel notwendig, weil containerd-Labs sonst leicht von einem sicheren Modell zu einer unkontrollierten Node-Änderung werden. Die Bewertung muss klar sagen, ob ein Artefakt nur erklärt, lokal prüft oder auf einem echten Node angewendet würde.
| Frage | Erwartung |
|---|---|
| Was ist betroffen? | Host, Daemon, Plugin, Content, Snapshotter, Runtime, CRI, CNI oder Kubernetes ist genannt. |
| Was ist belegt? | Eine Datei oder Ausgabe unter work/evidence/ zeigt den Befund. |
| Was bleibt offen? | Voraussetzungen für echte Nodes sind als Grenze dokumentiert. |
Reviewpunkte:
- keine produktiven Secrets
- keine ungeprüften Socket- oder Systemd-Änderungen
- keine Registry-Ausnahmen ohne Begründung
- keine Verwechslung von
ctr,crictlundnerdctl - Cleanup durch Entfernen von
work/möglich
B.3 Runtime-Schicht benennen
Runtime-Schicht benennen ist für dieses Beispiel notwendig, weil containerd-Labs sonst leicht von einem sicheren Modell zu einer unkontrollierten Node-Änderung werden. Die Bewertung muss klar sagen, ob ein Artefakt nur erklärt, lokal prüft oder auf einem echten Node angewendet würde.
| Frage | Erwartung |
|---|---|
| Was ist betroffen? | Host, Daemon, Plugin, Content, Snapshotter, Runtime, CRI, CNI oder Kubernetes ist genannt. |
| Was ist belegt? | Eine Datei oder Ausgabe unter work/evidence/ zeigt den Befund. |
| Was bleibt offen? | Voraussetzungen für echte Nodes sind als Grenze dokumentiert. |
Reviewpunkte:
- keine produktiven Secrets
- keine ungeprüften Socket- oder Systemd-Änderungen
- keine Registry-Ausnahmen ohne Begründung
- keine Verwechslung von
ctr,crictlundnerdctl - Cleanup durch Entfernen von
work/möglich
B.4 Kubernetes-Bezug prüfen
Kubernetes-Bezug prüfen ist für dieses Beispiel notwendig, weil containerd-Labs sonst leicht von einem sicheren Modell zu einer unkontrollierten Node-Änderung werden. Die Bewertung muss klar sagen, ob ein Artefakt nur erklärt, lokal prüft oder auf einem echten Node angewendet würde.
| Frage | Erwartung |
|---|---|
| Was ist betroffen? | Host, Daemon, Plugin, Content, Snapshotter, Runtime, CRI, CNI oder Kubernetes ist genannt. |
| Was ist belegt? | Eine Datei oder Ausgabe unter work/evidence/ zeigt den Befund. |
| Was bleibt offen? | Voraussetzungen für echte Nodes sind als Grenze dokumentiert. |
Reviewpunkte:
- keine produktiven Secrets
- keine ungeprüften Socket- oder Systemd-Änderungen
- keine Registry-Ausnahmen ohne Begründung
- keine Verwechslung von
ctr,crictlundnerdctl - Cleanup durch Entfernen von
work/möglich
B.5 Security-Grenzen festhalten
Security-Grenzen festhalten ist für dieses Beispiel notwendig, weil containerd-Labs sonst leicht von einem sicheren Modell zu einer unkontrollierten Node-Änderung werden. Die Bewertung muss klar sagen, ob ein Artefakt nur erklärt, lokal prüft oder auf einem echten Node angewendet würde.
| Frage | Erwartung |
|---|---|
| Was ist betroffen? | Host, Daemon, Plugin, Content, Snapshotter, Runtime, CRI, CNI oder Kubernetes ist genannt. |
| Was ist belegt? | Eine Datei oder Ausgabe unter work/evidence/ zeigt den Befund. |
| Was bleibt offen? | Voraussetzungen für echte Nodes sind als Grenze dokumentiert. |
Reviewpunkte:
- keine produktiven Secrets
- keine ungeprüften Socket- oder Systemd-Änderungen
- keine Registry-Ausnahmen ohne Begründung
- keine Verwechslung von
ctr,crictlundnerdctl - Cleanup durch Entfernen von
work/möglich
B.6 Rollback formulieren
Rollback formulieren ist für dieses Beispiel notwendig, weil containerd-Labs sonst leicht von einem sicheren Modell zu einer unkontrollierten Node-Änderung werden. Die Bewertung muss klar sagen, ob ein Artefakt nur erklärt, lokal prüft oder auf einem echten Node angewendet würde.
| Frage | Erwartung |
|---|---|
| Was ist betroffen? | Host, Daemon, Plugin, Content, Snapshotter, Runtime, CRI, CNI oder Kubernetes ist genannt. |
| Was ist belegt? | Eine Datei oder Ausgabe unter work/evidence/ zeigt den Befund. |
| Was bleibt offen? | Voraussetzungen für echte Nodes sind als Grenze dokumentiert. |
Reviewpunkte:
- keine produktiven Secrets
- keine ungeprüften Socket- oder Systemd-Änderungen
- keine Registry-Ausnahmen ohne Begründung
- keine Verwechslung von
ctr,crictlundnerdctl - Cleanup durch Entfernen von
work/möglich
B.7 Evidence bereinigen
Evidence bereinigen ist für dieses Beispiel notwendig, weil containerd-Labs sonst leicht von einem sicheren Modell zu einer unkontrollierten Node-Änderung werden. Die Bewertung muss klar sagen, ob ein Artefakt nur erklärt, lokal prüft oder auf einem echten Node angewendet würde.
| Frage | Erwartung |
|---|---|
| Was ist betroffen? | Host, Daemon, Plugin, Content, Snapshotter, Runtime, CRI, CNI oder Kubernetes ist genannt. |
| Was ist belegt? | Eine Datei oder Ausgabe unter work/evidence/ zeigt den Befund. |
| Was bleibt offen? | Voraussetzungen für echte Nodes sind als Grenze dokumentiert. |
Reviewpunkte:
- keine produktiven Secrets
- keine ungeprüften Socket- oder Systemd-Änderungen
- keine Registry-Ausnahmen ohne Begründung
- keine Verwechslung von
ctr,crictlundnerdctl - Cleanup durch Entfernen von
work/möglich
B.8 Transfer begrenzen
Transfer begrenzen ist für dieses Beispiel notwendig, weil containerd-Labs sonst leicht von einem sicheren Modell zu einer unkontrollierten Node-Änderung werden. Die Bewertung muss klar sagen, ob ein Artefakt nur erklärt, lokal prüft oder auf einem echten Node angewendet würde.
| Frage | Erwartung |
|---|---|
| Was ist betroffen? | Host, Daemon, Plugin, Content, Snapshotter, Runtime, CRI, CNI oder Kubernetes ist genannt. |
| Was ist belegt? | Eine Datei oder Ausgabe unter work/evidence/ zeigt den Befund. |
| Was bleibt offen? | Voraussetzungen für echte Nodes sind als Grenze dokumentiert. |
Reviewpunkte:
- keine produktiven Secrets
- keine ungeprüften Socket- oder Systemd-Änderungen
- keine Registry-Ausnahmen ohne Begründung
- keine Verwechslung von
ctr,crictlundnerdctl - Cleanup durch Entfernen von
work/möglich
B.9 Review abschließen
Review abschließen ist für dieses Beispiel notwendig, weil containerd-Labs sonst leicht von einem sicheren Modell zu einer unkontrollierten Node-Änderung werden. Die Bewertung muss klar sagen, ob ein Artefakt nur erklärt, lokal prüft oder auf einem echten Node angewendet würde.
| Frage | Erwartung |
|---|---|
| Was ist betroffen? | Host, Daemon, Plugin, Content, Snapshotter, Runtime, CRI, CNI oder Kubernetes ist genannt. |
| Was ist belegt? | Eine Datei oder Ausgabe unter work/evidence/ zeigt den Befund. |
| Was bleibt offen? | Voraussetzungen für echte Nodes sind als Grenze dokumentiert. |
Reviewpunkte:
- keine produktiven Secrets
- keine ungeprüften Socket- oder Systemd-Änderungen
- keine Registry-Ausnahmen ohne Begründung
- keine Verwechslung von
ctr,crictlundnerdctl - Cleanup durch Entfernen von
work/möglich
B.10 Cleanup durchführen
Cleanup durchführen ist für dieses Beispiel notwendig, weil containerd-Labs sonst leicht von einem sicheren Modell zu einer unkontrollierten Node-Änderung werden. Die Bewertung muss klar sagen, ob ein Artefakt nur erklärt, lokal prüft oder auf einem echten Node angewendet würde.
| Frage | Erwartung |
|---|---|
| Was ist betroffen? | Host, Daemon, Plugin, Content, Snapshotter, Runtime, CRI, CNI oder Kubernetes ist genannt. |
| Was ist belegt? | Eine Datei oder Ausgabe unter work/evidence/ zeigt den Befund. |
| Was bleibt offen? | Voraussetzungen für echte Nodes sind als Grenze dokumentiert. |
Reviewpunkte:
- keine produktiven Secrets
- keine ungeprüften Socket- oder Systemd-Änderungen
- keine Registry-Ausnahmen ohne Begründung
- keine Verwechslung von
ctr,crictlundnerdctl - Cleanup durch Entfernen von
work/möglich
B.11 Abschluss
Ein Beispiel gilt als fertig, wenn das Skript erfolgreich läuft, alle Modellartefakte syntaktisch gültig sind, die betroffene Runtime-Schicht benannt ist und die Evidence keine vertraulichen Daten enthält.