Lektion 09 · Sicher betreiben

Sicher aufräumen

Löschen ohne Reue — plus Labels, Namespaces und die Grundidee von RBAC.

Der gefährlichste Befehl ist delete. Diese Lektion gibt dir die Gewohnheiten, mit denen Profis löschen, ohne nachts wach zu liegen — und schließt deinen sicheren Kreislauf.

1. Die goldene Regel: löschen wie du erstellt hast

Hast du mit einem Manifest erstellt, lösche mit demselben Manifest. Dann verschwindet genau das, was du angelegt hast — nicht mehr, nicht weniger:

kubectl delete -f web.yaml -n lernen
Eselsbrücke fürs Löschen per Label

„Erst get, dann delete.“ Vor jedem Lösch-Befehl mit Selector denselben Selector mit get ausführen — die Liste, die du siehst, ist exakt die, die gleich verschwindet:

kubectl get pods -l app=web -n lernen     # Vorschau: trifft das WIRKLICH nur web?
kubectl delete pods -l app=web -n lernen  # erst danach löschen

2. Namespaces als Schutzwall

Ein eigener Namespace ist deine Sandbox. Im Notfall räumst du alles auf einen Schlag auf — ohne fremde Workloads zu gefährden:

kubectl delete namespace lernen     # löscht ALLES darin. Mächtig — Kontext prüfen!
Doppelt absichern

Vor einem delete namespace oder jedem Lösch-Befehl im Zweifel: kubectl config current-context. Der falsche Kontext + delete ist der Klassiker unter den Unfällen.

3. Darf ich das überhaupt? — RBAC in einer Zeile

RBAC regelt, wer was darf. Du musst es (noch) nicht konfigurieren — aber du kannst dich schützen, indem du vorher fragst, ob ein Befehl überhaupt erlaubt ist:

kubectl auth can-i delete pods -n lernen        # yes / no
kubectl auth can-i '*' '*' --all-namespaces      # bin ich Cluster-Admin?
Sicherheits-Mindset

Im Job arbeitest du oft mit eingeschränkten Rechten — das ist ein Feature, kein Hindernis. Wenig Rechte = wenig Schaden möglich. auth can-i zeigt dir deine Grenzen, bevor du anstößt.

4. Ressourcen-Leitplanken: requests & limits

Ohne Limits kann ein einziger Pod einen Node aushungern. Setze pro Container:

resources:
  requests: { cpu: "100m", memory: "128Mi" }   # garantiert (für Scheduling)
  limits:   { cpu: "500m", memory: "256Mi" }   # Obergrenze (RAM-Überschreitung → OOMKilled)

5. Hands-on: Übung sauber abbauen

kubectl auth can-i delete namespace lernen
kubectl get all -n lernen          # was ist da überhaupt drin?
kubectl config current-context     # sicher der richtige Cluster?
kubectl delete namespace lernen    # Sandbox restlos entfernen

Selbsttest

1. Du willst Pods per Label löschen. Was tust du direkt davor?
2. Welcher Befehl sagt dir, ob du etwas überhaupt darfst?
3. Wozu dienen limits an einem Container?
Frag deinen Lehrer: „Wie baue ich mir eine eigene Role mit minimalen Rechten?“, „Was passiert mit dem Service, wenn ich das Deployment lösche?“ oder „Wie verhindere ich versehentliches Löschen in Produktion?“