Lektion 07 · Sicher betreiben

Updaten & Zurückrollen

Neue Version ohne Downtime ausrollen — und im Notfall in Sekunden zurück.

Das Deployment macht Updates rollend: neue Pods hoch, alte runter, Stück für Stück. Geht etwas schief, rollst du zurück. Das ist deine größte Sicherheitsfunktion im Betrieb.

1. Eine neue Version ausrollen

Der saubere Weg ist deklarativ: Image im Manifest ändern und apply. Schnell-Variante:

# Image ändern (löst rollendes Update aus)
kubectl set image deploy/web web=nginx:1.28 -n lernen

# Das Update LIVE beobachten — wartet bis fertig
kubectl rollout status deploy/web -n lernen
rollout status ist dein Wächter

Er blockiert, bis das Update durch ist — oder meldet, dass es hängt. Nie „blind“ updaten und weggehen; immer den rollout status abwarten.

2. Historie & Rollback

Jedes Update erzeugt eine neue Revision. Das ist deine Zeitmaschine:

# Welche Versionen gab es?
kubectl rollout history deploy/web -n lernen

# NOTFALL: eine Version zurück
kubectl rollout undo deploy/web -n lernen

# Gezielt zu einer bestimmten Revision
kubectl rollout undo deploy/web --to-revision=2 -n lernen
Eselsbrücke fürs Notfall-Trio

status → history → undo: „Wie läufts? — Was gab's? — Zurück!“ Wenn ein Update Ärger macht, ist rollout undo fast immer der erste, ruhigste Griff.

3. Skalieren & Neustarten

# Mehr/weniger Replicas (Last, Wartung)
kubectl scale deploy/web --replicas=4 -n lernen

# Pods neu starten OHNE Image-Änderung (z.B. nach ConfigMap-Update)
kubectl rollout restart deploy/web -n lernen

4. Warum kein Ausfall entsteht

Das Deployment hält während des Updates eine Mindestzahl Pods bereit (maxUnavailable) und startet neue erst, bevor alte gehen. Mit einem Readiness-Probe nimmt der Service einen neuen Pod erst in den Lastverkehr, wenn er wirklich bereit ist — defekte Versionen erreichen so nie alle Nutzer.

Hands-on

kubectl set image deploy/web web=nginx:1.28 -n lernen
kubectl rollout status deploy/web -n lernen
kubectl rollout history deploy/web -n lernen
kubectl rollout undo deploy/web -n lernen      # wieder zurück
kubectl get pods -n lernen -w                  # beim Undo live zusehen

Selbsttest

1. Ein Update enthält einen Fehler. Was ist dein erster ruhiger Griff?
2. Welcher Befehl wartet, bis ein Update wirklich fertig ist?
3. Du willst Pods neu starten, ohne das Image zu ändern. Wie?
Frag deinen Lehrer: „Was sind maxSurge und maxUnavailable?“, „Was ist eine Readiness-Probe genau?“ oder „Wie rolle ich zu einer ganz bestimmten alten Version zurück?“