Почему нельзя просто закодировать в base64
В Kubernetes Secret данные хранятся в base64 — это не шифрование, а просто кодирование. Любой, кто имеет доступ к кластеру или к git, может декодировать их за секунду.
Как работает Sealed Secrets

Приватный ключ никогда не покидает кластер — поэтому зашифрованный SealedSecret бесполезен без доступа к нему.
Единственная уязвимость: если кластер пересоздаётся без резервной копии мастер-ключа, все SealedSecrets не расшифровать. Поэтому бэкап обязателен:
kubectl get secret -n kube-system \
-l sealedsecrets.bitnami.com/sealed-secrets-key \
-o yaml > sealed-secrets-master-key-backup.yamlПрактическое создание SealedSecret
Plain-text пароли в манифестах — очевидно плохая идея.
Решение: Sealed Secrets. Утилита kubeseal шифрует Secret публичным ключом контроллера — расшифровать может только контроллер внутри кластера. Зашифрованный SealedSecret безопасно коммитить в git.
kubectl create secret generic my-secret \
--from-literal=password=реальный_пароль \
--dry-run=client -o yaml | \
kubeseal \
--controller-name sealed-secrets \
--controller-namespace kube-system \
--format yaml > my-sealed-secret.yamlВажно: сделать бэкап мастер-ключа и хранить его отдельно. Если пересоздать кластер без бэкапа — старые SealedSecrets не расшифровать:
kubectl get secret -n kube-system \
-l sealedsecrets.bitnami.com/sealed-secrets-key \
-o yaml > sealed-secrets-master-key-backup.yaml