Bitnami sealed secrets have a simple, yet not straight-forward lifecycle due to multiple moving parts involved
Create
# Assuming sealed-secrets was created with the helm chart way described in the previous post ❯ kubectl create secret generic db-creds --from-literal=user=adam --from-literal=password=paSSwoRD --dry-run=client -o yaml | kubeseal --controller-namespace=sealed-secrets --controller-name=ss-app-sealed-secrets -o yaml | kubectl apply -f - sealedsecret.bitnami.com/db-creds created ❯ kubectl get sealedsecrets.bitnami.com NAME AGE db-creds 10s # also created is a kubernetes secret named "db-creds" ❯ kubectl get secrets NAME TYPE DATA AGE db-creds Opaque 2 17s default-token-j8wnt kubernetes.io/service-account-token 3 6h11m
Rename
Under normal circumstances renaming a sealed-secret fails the decryption bacause is part of the encryption/decryption in the default strict
mode
❯ kubectl create secret generic db-creds-alpha --from-literal=user=adam --from-literal=password=paSSwoRD --dry-run=client -o yaml | kubeseal --controller-namespace=sealed-secrets --controller-name=ss-app-sealed-secrets -o yaml | kubectl apply -f - sealedsecret.bitnami.com/db-creds-alpha created ❯ kubectl get sealedsecrets.bitnami.com NAME AGE db-creds-alpha 84s # try editing the name from "db-creds-alpha" to "db-creds-beta" ❯ kubectl edit sealedsecrets.bitnami.com/db-creds-alpha A copy of your changes has been stored to "/var/folders/1w/9brxn3wn27b3xgk2t7hj5ns40000gn/T/kubectl-edit-1525276124.yaml" error: At least one of apiVersion, kind and name was changed
For the secret to be rename-able, one needs to scope it to namespace-wide
or cluster-wide
❯ kubectl create secret generic db-creds-alpha --from-literal=user=adam --from-literal=password=paSSwoRD --dry-run=client -o yaml | kubeseal --controller-namespace=sealed-secrets --controller-name=ss-app-sealed-secrets --scope=namespace-wide -o yaml | kubectl apply -f - sealedsecret.bitnami.com/db-creds-alpha created # edit name from "db-creds-alpha" to "db-creds-beta" ❯ vi /tmp/ss.yaml # apply and verify ❯ k apply -f /tmp/ss.yaml sealedsecret.bitnami.com/db-creds-beta created # a new secret with the new name is created ❯ k get sealedsecrets.bitnami.com NAME AGE db-creds-alpha 3m4s db-creds-beta 7s
Update
# assume sealed-secret is in sealed-secret.yaml ❯ echo -n adminDatabase | kubectl create secret generic mysecret --dry-run=client --from-file=db_name=/dev/stdin -o yaml | kubeseal --controller-namespace=sealed-secrets --controller-name=ss-app-sealed-secrets --merge-into sealed-secret.yaml ❯ kubectl apply -f sealed-secret.yaml sealedsecret.bitnami.com/db-creds configured ❯ k get secret db-creds -o json | jq ".data | map_values(@base64d)" { "db_name": "adminDatabase", "password": "paSSwoRD", "user": "adam" }
Delete
❯ kubectl delete sealedsecrets.bitnami.com db-creds sealedsecret.bitnami.com "db-creds" deleted # Note: this also deletes the kubernetes secret named "db-creds"
Top comments (0)