Kubernetes Secrets sind base64-kodiert, nicht verschlüsselt. Für die Produktion benötigen Sie eine bessere Lösung.
Probleme mit K8s Secrets¶
- Base64 != Verschlüsselung
- Sichtbar in etcd (es sei denn, Encryption at Rest)
- Über die API für jeden mit RBAC-Berechtigungen zugänglich
External Secrets Operator¶
apiVersion: external-secrets.io/v1beta1 kind: ExternalSecret metadata: name: app-secrets spec: refreshInterval: 1h secretStoreRef: name: vault kind: ClusterSecretStore data: - secretKey: DB_PASSWORD remoteRef: key: secret/myapp property: db_password
Sealed Secrets¶
Secret verschlüsseln¶
kubeseal –format yaml < secret.yaml > sealed-secret.yaml
sealed-secret.yaml ist sicher für Git!¶
Wichtigste Erkenntnis¶
Niemals plain K8s Secrets in Git. External Secrets Operator + Vault für Produktion, Sealed Secrets für GitOps.