Kubernetes Secrets sind ungefähr so geheim wie dein Browserverlauf. Sie werden im Klartext gespeichert und sind für jeden mit Cluster-Zugriff sichtbar. Und über die Albträume der Versionskontrolle wollen wir gar nicht erst reden. Hier kommen Sealed Secrets ins Spiel, der Verschlüsselungszauberer, der deine sensiblen Daten wirklich... sensibel macht.
Warum ist das wichtig?
- Verschlüssele deine Secrets, bevor sie in die Versionskontrolle gelangen
- Entschlüssele sie automatisch in deinem Cluster
- Schlafe besser, weil deine API-Schlüssel nicht im Internet herumschwirren
Am Ende dieses Artikels wirst du Secrets wie ein Profi versiegeln, deine Kollegen beeindrucken und vielleicht sogar eine Beförderung bekommen. (Okay, die Beförderung kann ich nicht versprechen, aber deine Secrets werden definitiv sicherer sein.)
Sealed Secrets: Die Superhelden-Entstehungsgeschichte
Kubernetes Secrets, aber mit Umhang und Maske. Das sind im Wesentlichen Sealed Secrets. Sie sind verschlüsselte Kubernetes Secrets, die vom Sealed Secrets Controller verwaltet werden. Stell dir das als deinen persönlichen Bodyguard für sensible Daten vor.
Warum Sealed Secrets der Batman von Kubernetes sind:
- Sie können sicher in deinem Git-Repo bleiben, ohne sich zu offenbaren
- Nur dein Kubernetes-Cluster kann sehen, was drin ist
- Sie sind wie normale Kubernetes Secrets, aber mit Superkräften
Installation des Sealed Secrets Controllers: Dein neuer bester Freund
Bevor wir anfangen, Secrets zu versiegeln, als gäbe es kein Morgen, müssen wir den Sealed Secrets Controller installieren.
Voraussetzungen:
- Ein Kubernetes-Cluster (wenn du keinen hast, was machst du dann hier?)
- kubectl konfiguriert und einsatzbereit
Los geht's mit Helm:
# Füge das Sealed Secrets Repo hinzu
helm repo add sealed-secrets https://bitnami-labs.github.io/sealed-secrets
# Aktualisiere deine Repos
helm repo update
# Installiere Sealed Secrets
helm install sealed-secrets sealed-secrets/sealed-secrets
Boom! Dein Cluster ist jetzt mit einer Geheimversiegelungs-Superkraft ausgestattet. Lass uns sicherstellen, dass es läuft:
kubectl get pods -n kube-system | grep sealed-secrets
Wenn du ein laufendes Pod siehst, klopf dir selbst auf die Schulter. Du bist offiziell im Geheimversiegelungsgeschäft.
Erstellen und Verschlüsseln eines Sealed Secret: Spionage 101
Jetzt, da wir unser geheimes Versteck eingerichtet haben, ist es Zeit, einige geheime Dokumente zu erstellen. Aber zuerst brauchen wir die richtigen Werkzeuge.
Schritt 1: Installiere kubeseal
kubeseal ist dein Verschlüsselungshelfer. Installiere es so:
wget https://github.com/bitnami-labs/sealed-secrets/releases/download/v0.18.1/kubeseal-linux-amd64 -O kubeseal
sudo install -m 755 kubeseal /usr/local/bin/kubeseal
Schritt 2: Erstelle ein Secret
Erstellen wir ein supergeheimes Datenbankpasswort:
apiVersion: v1
kind: Secret
metadata:
name: my-database-secret
type: Opaque
stringData:
DB_PASSWORD: "supersecretpassword123"
Speichere dies als secret.yaml
. Aber denk daran, diese Datei ist ungefähr so sicher wie ein Pappmaché-Tresor.
Schritt 3: Versiegle das Secret!
Es ist Zeit, das Secret in einen Tresor zu legen:
kubeseal --format yaml < secret.yaml > sealed-secret.yaml
Voila! Du hast jetzt ein sealed-secret.yaml
, das du ohne Angst in Git einchecken kannst. Es ist, als hätte dein Secret seinen eigenen Iron Man Anzug bekommen.
Bereitstellen von Sealed Secrets: Mission Impossible
Jetzt, da wir unser Secret versiegelt haben, lass es uns in unseren Cluster bereitstellen. Es ist, als würde man ein geheimes Dokument durch feindliches Gebiet schicken.
kubectl apply -f sealed-secret.yaml
Der Sealed Secrets Controller tritt in Aktion, entschlüsselt dein Secret und erstellt ein reguläres Kubernetes Secret. Magie!
Um zu überprüfen, führe aus:
kubectl get secrets
Du solltest dein entschlüsseltes Secret sehen, bereit für deine Anwendungen. Mission erfüllt!
Verwalten von Sealed Secrets über Umgebungen hinweg: Multiversale Geheimhaltung
Verschiedene Umgebungen, verschiedene Secrets. Es ist, als hätte man separate geheime Identitäten für die Arbeit und das Superheldenleben.
Das Multiversum des Wahnsinns (oder einfach deine verschiedenen Umgebungen)
- Dev: Wo Fehler passieren, aber es ist okay
- Staging: Die Generalprobe für deine Secrets
- Produktion: Wo die Magie passiert (und wo Fehler definitiv nicht okay sind)
Um dies zu verwalten, möchtest du für jede Umgebung unterschiedliche Verschlüsselungsschlüssel verwenden. So geht's:
# Für Dev
kubeseal --fetch-cert --controller-name=sealed-secrets-controller --controller-namespace=kube-system > dev-pub-cert.pem
# Für Staging
kubeseal --fetch-cert --controller-name=sealed-secrets-controller --controller-namespace=kube-system > staging-pub-cert.pem
# Für Produktion
kubeseal --fetch-cert --controller-name=sealed-secrets-controller --controller-namespace=kube-system > prod-pub-cert.pem
Jetzt, beim Versiegeln von Secrets für verschiedene Umgebungen:
# Für Dev
kubeseal --format yaml --cert dev-pub-cert.pem < secret.yaml > dev-sealed-secret.yaml
# Für Staging
kubeseal --format yaml --cert staging-pub-cert.pem < secret.yaml > staging-sealed-secret.yaml
# Für Produktion
kubeseal --format yaml --cert prod-pub-cert.pem < secret.yaml > prod-sealed-secret.yaml
Jede Umgebung erhält ihr eigenes einzigartig verschlüsseltes Secret. Es ist, als hätte man für jedes seiner Superheldenteams einen anderen geheimen Handschlag.
Drehen von Secrets und Schlüsseln: Der Kreis des (geheimen) Lebens
Sogar Superhelden müssen manchmal ihre Kostüme wechseln. Dasselbe gilt für deine Secrets und Verschlüsselungsschlüssel.
Wann rotieren:
- Regelmäßig, als Teil deiner Sicherheitsbest Practices
- Wenn du einen Verstoß vermutest
- Wenn Dave aus der IT die Schlüssel versehentlich auf Slack postet (Klassischer Dave)
Wie man ein Secret rotiert:
- Aktualisiere dein ursprüngliches Secret YAML
- Verschließe es erneut mit kubeseal
- Wende das neue Sealed Secret auf deinen Cluster an
Beispiel: Drehen eines Datenbankpassworts
apiVersion: v1
kind: Secret
metadata:
name: my-database-secret
type: Opaque
stringData:
DB_PASSWORD: "evenmoresecretpassword456"
kubeseal --format yaml < updated-secret.yaml > updated-sealed-secret.yaml
kubectl apply -f updated-sealed-secret.yaml
Deine Anwendungen werden jetzt das neue Passwort ohne Ausfallzeiten verwenden. Reibungsloser Ablauf!
Best Practices: Der Superhelden-Kodex
Hier sind deine für Sealed Secrets:
- Vermeide es, Klartext-Secrets in die Versionskontrolle einzuchecken (ich schaue dich an, Praktikant)
- Drehe deine Verschlüsselungsschlüssel regelmäßig, wie du deine Reifen drehst (aber öfter)
- Verwende RBAC, um zu kontrollieren, wer Secrets verschlüsseln/entschlüsseln kann (nicht jeder muss Nick Fury sein)
- Überwache die Secret-Nutzung mit Kubernetes-Audit-Logs (vertrauen, aber überprüfen)
Tools und Alternativen: Wähle deine Superkraft
Sealed Secrets ist nicht der einzige Held in der Stadt. Schauen wir uns einige andere Anwärter an:
- HashiCorp Vault: Das Schweizer Taschenmesser des Secret-Managements
- AWS Secrets Manager: Für den Fall, dass du ganz auf AWS setzt
- Azure Key Vault: Microsofts Antwort auf "Wo lege ich meine Secrets ab?"
Sealed Secrets glänzt durch seine Einfachheit und Kubernetes-native Herangehensweise. Aber wie bei der Wahl zwischen Iron Man und Captain America hängt das beste Tool von deinen spezifischen Bedürfnissen ab.
Fehlerbehebung: Wenn deine Superkräfte versagen
Sogar Superhelden haben schlechte Tage. Hier ist, wie man mit häufigen Sealed Secrets Problemen umgeht:
Secret wird nicht entschlüsselt?
kubectl get sealedsecrets
kubectl get events --field-selector involvedObject.kind=SealedSecret
Controller spielt verrückt?
kubectl logs deployment/sealed-secrets-controller -n kube-system
Nicht übereinstimmende Schlüssel?
Stelle sicher, dass du den richtigen öffentlichen Schlüssel für den richtigen Cluster verwendest. Es ist, als würde man sicherstellen, dass man im richtigen Universum ist, bevor man versucht, Thors Hammer zu heben.
Fazit: Mit großer Macht kommt große Verschlüsselung
Sealed Secrets verwandelt den Albtraum des Kubernetes Secret-Managements in einen Traum. Es ist sicher, es ist skalierbar und es lässt dich nachts ruhig schlafen, weil deine Secrets wirklich geheim sind.
Denke daran:
- Verschließe deine Secrets, bevor sie die Versionskontrolle berühren
- Verwende unterschiedliche Schlüssel für verschiedene Umgebungen
- Drehe regelmäßig
- Überwache und prüfe
Jetzt geh und versiegel diese Secrets! Dein Cluster (und dein Blutdruck) werden es dir danken.
Für weitere Informationen, schau dir die offizielle Sealed Secrets Dokumentation an. Und denk daran, mit großen Secrets kommt große Verantwortung!