External Secrets Operator vs. Sealed Secrets: Kubernetes Secrets Management im Vergleich 2026
Kubernetes Secrets sind standardmäßig nur base64-kodiert — nicht verschlüsselt. Das stellt Teams vor die Frage: Wie verwaltet man Secrets sicher in GitOps-Workflows? Zwei Lösungen dominieren 2026 den Markt: External Secrets Operator (ESO) und Sealed Secrets von Bitnami (jetzt CNCF). Dieser Vergleich erklärt, wann welche Lösung besser passt.
Das Problem: Kubernetes Secrets sind nicht GitOps-fähig
Ein Standard-Kubernetes Secret enthält nur base64-kodierte Werte — das ist keine Verschlüsselung:
echo -n "mein-passwort" | base64
# bWVpbi1wYXNzd29ydA== ← trivial dekodierbar
Solche Secrets dürfen nie in Git eingecheckt werden. Aber GitOps erfordert, dass der gesamte Cluster-Zustand im Git-Repository liegt. Wie löst man diesen Widerspruch?
Lösung 1: Sealed Secrets
Sealed Secrets (Bitnami, CNCF Sandbox) löst das Problem durch asymmetrische Verschlüsselung. Ein SealedSecret ist ein Kubernetes Custom Resource, das verschlüsselte Daten enthält — sicher zum Einchecken in Git.
# SealedSecret (sicher in Git einchecken)
apiVersion: bitnami.com/v1alpha1
kind: SealedSecret
metadata:
name: database-credentials
namespace: production
spec:
encryptedData:
DB_PASSWORD: AgA7kXmR2Bh... # RSA-verschlüsselt, nur Cluster-Controller kann entschlüsseln
DB_USER: AgB3nPqW1Cm...
Der Sealed Secrets Controller im Cluster hält den privaten Schlüssel und entschlüsselt SealedSecrets zu regulären Kubernetes Secrets.
# Secret versiegeln mit kubeseal
kubectl create secret generic database-credentials --from-literal=DB_PASSWORD=super-secret --from-literal=DB_USER=postgres --dry-run=client -o yaml | kubeseal --format yaml > database-credentials-sealed.yaml
# Resultat in Git einchecken
git add database-credentials-sealed.yaml
git commit -m "feat: add sealed database credentials"
Sealed Secrets: Stärken und Schwächen
Stärken:
- Einfaches Konzept: Secrets existieren vollständig in Git
- Keine externe Abhängigkeit: Alles läuft im Cluster
- Perfekt für air-gapped Umgebungen
- Nahtlose ArgoCD/Flux-Integration
Schwächen:
- Rotation ist aufwändig: Bei Key-Rotation müssen alle SealedSecrets neu verschlüsselt werden
- Kein zentrales Audit-Log: Wer hat was wann genutzt?
- Secret-Wert im Git: Auch wenn verschlüsselt, liegt der verschlüsselte Wert im Git-History
- Cluster-gebunden: SealedSecrets sind an den Cluster-Key gebunden, kein einfaches Multi-Cluster-Sharing
Lösung 2: External Secrets Operator
External Secrets Operator (ESO) verfolgt einen anderen Ansatz: Secrets werden in einem externen Secret Store (AWS Secrets Manager, HashiCorp Vault, GCP Secret Manager, Azure Key Vault, 1Password, Doppler, ...) gespeichert. ESO liest sie und erstellt daraus reguläre Kubernetes Secrets.
# ExternalSecret: Definiert, woher das Secret kommt
apiVersion: external-secrets.io/v1beta1
kind: ExternalSecret
metadata:
name: database-credentials
namespace: production
spec:
refreshInterval: 1h
secretStoreRef:
name: aws-secrets-manager
kind: SecretStore
target:
name: database-credentials # Name des resultierenden K8s-Secrets
creationPolicy: Owner
data:
- secretKey: DB_PASSWORD
remoteRef:
key: production/database
property: password
- secretKey: DB_USER
remoteRef:
key: production/database
property: username
Das ExternalSecret-Manifest enthält keine Geheimniswerte — nur Referenzen. Es ist sicher in Git einzuchecken.
# SecretStore: Verbindung zu AWS Secrets Manager
apiVersion: external-secrets.io/v1beta1
kind: SecretStore
metadata:
name: aws-secrets-manager
namespace: production
spec:
provider:
aws:
service: SecretsManager
region: eu-central-1
auth:
jwt:
serviceAccountRef:
name: external-secrets-sa
External Secrets Operator: Stärken und Schwächen
Stärken:
- Kein Geheimnis in Git: Nur Referenzen, niemals Werte
- Zentrales Secret-Management: Ein Vault für alle Cluster und Dienste
- Automatische Rotation: ESO lädt Secrets regelmäßig neu (
refreshInterval) - Audit-Trail: Secret-Store-Zugriffe sind zentralisiert auditierbar
- Multi-Cluster: Dasselbe Secret in mehreren Clustern nutzbar
Schwächen:
- Externe Abhängigkeit: Cluster ist auf den Secret Store angewiesen (Availability-Risiko)
- Komplexere Einrichtung: Secret Store muss konfiguriert und gesichert werden
- Kosten: AWS Secrets Manager, Vault etc. kosten Geld oder erfordern eigene Infrastruktur
- Kein vollständiger GitOps-State: Secret-Werte leben außerhalb von Git
Direkter Vergleich
| Aspekt | Sealed Secrets | External Secrets Operator |
|---|---|---|
| Secret-Wert in Git | Verschlüsselt (SealedSecret) | Nein (nur Referenzen) |
| Externe Abhängigkeit | Keine | Secret Store (Vault, AWS, etc.) |
| Rotation | Aufwändig | Automatisch (refreshInterval) |
| Audit-Trail | Keiner | Im Secret Store |
| Multi-Cluster | Schwierig | Einfach |
| Air-Gap-fähig | Ja | Nur mit Self-Hosted Vault |
| CNCF-Status | Sandbox | Incubating |
| Lernkurve | Niedrig | Mittel–Hoch |
| Provider-Support | — | 30+ Provider |
Wann Sealed Secrets?
- Kleine Teams ohne dedizierten Secret Store
- Air-gapped Umgebungen ohne Internetzugang
- Einfache GitOps-Setups mit ArgoCD oder Flux
- Single-Cluster-Szenarien ohne Multi-Cluster-Anforderungen
Wann External Secrets Operator?
- Enterprise-Umgebungen mit bestehenden Secret Stores (Vault, AWS Secrets Manager)
- Compliance-Anforderungen mit zentralem Audit-Log
- Multi-Cluster-Setups mit gemeinsamem Secret Management
- Dynamische Secrets (z.B. kurzlebige Datenbank-Credentials via Vault)
Kombination möglich
Viele Teams nutzen beide Tools: Sealed Secrets für cluster-interne Secrets (Zertifikate, Bootstrap-Credentials), ESO für Anwendungs-Secrets aus dem zentralen Vault. Das gibt maximale Flexibilität.
Fazit
Sealed Secrets ist die einfachere, elegantere Lösung für Teams, die echtes GitOps ohne externe Abhängigkeiten wollen. Das Konzept ist klar und die Integration in ArgoCD oder Flux funktioniert reibungslos.
External Secrets Operator ist die Enterprise-Lösung für Teams mit bestehenden Secret Stores, Compliance-Anforderungen und Multi-Cluster-Setups. Die automatische Rotation und das zentrale Audit-Log sind in Produktionsumgebungen entscheidende Vorteile.
Wer bei null anfängt: Mit Sealed Secrets starten — und zu ESO wechseln, wenn Skalierungsanforderungen es erfordern.
Weiterführende Artikel
- Vault vs. Infisical: Secrets Management für Self-Hosting und Kubernetes im Vergleich 2026
- ArgoCD vs. Flux CD: GitOps für Kubernetes im Vergleich 2026
- Zitadel vs. Keycloak: Identity Provider im Vergleich 2026
- Authelia vs. Authentik: Self-Hosted Single Sign-On im Vergleich 2026