kubeseal Sealed Secrets CLI
Light · Postcard
102 × 152 mm · PDF
Dark · Postcard
102 × 152 mm · PDF
Ink saver · Postcard
102 × 152 mm · PDF
Light · A4 landscape
297 × 210 mm · PDF
Dark · A4 landscape
297 × 210 mm · PDF
Ink saver · A4 landscape
297 × 210 mm · PDF
Light · A3 landscape
420 × 297 mm · PDF
Dark · A3 landscape
420 × 297 mm · PDF
Ink saver · A3 landscape
420 × 297 mm · PDF
Start here
kubeseal --fetch-cert > pub.pem
kubeseal -f secret.yaml -w sealed.yaml
kubectl apply -f sealed.yaml
kubeseal --cert pub.pem < s.yaml
kubeseal --scope cluster-wide
kubeseal --validate < sealed.yaml
kubeseal --re-encrypt < sealed.yaml
kubeseal --merge-into sealed.yaml
Concepts
- Secret plain, local only
- SealedSecret encrypted, in Git
- Controller holds private key
- Secret in the cluster
Seal
kubeseal -f <secret> -w <sealed>
kubeseal < <secret> > <sealed>
kubectl create secret generic <name> --dry-run=client
--from-literal=<k>=<v> -o json | kubeseal >
<sealed>
kubeseal -o yaml < <secret>
kubeseal --namespace <ns> < <secret>
kubectl apply -f <sealed>
kubectl get sealedsecret
kubectl get secret <name>
Certificate
kubeseal --fetch-cert > <pub.pem>
kubeseal --cert <pub.pem> < <secret>
kubeseal --cert <https-url> < <secret>
export SEALED_SECRETS_CERT=<pub.pem>
Controller
kubeseal --controller-name <name>
kubeseal --controller-namespace <ns>
kubeseal --version
Scopes
kubeseal --scope strict
kubeseal --scope namespace-wide
kubeseal --scope cluster-wide
| Annotation on the Secret | Effect |
|---|---|
sealedsecrets.bitnami.com/namespace-wide:
"true"
|
Namespace-wide scope |
sealedsecrets.bitnami.com/cluster-wide:
"true"
|
Cluster-wide scope, wins over the other |
Maintain
kubeseal --validate < <sealed>
kubeseal --re-encrypt < <sealed> >
<new>
kubeseal --merge-into <sealed> <
<secret>
kubeseal --recovery-unseal --recovery-private-key
<k1>,<k2> < <sealed>
kubectl get secret -n kube-system -l
sealedsecrets.bitnami.com/sealed-secrets-key -o yaml >
<main.key>
kubectl apply -f <main.key>
Raw mode
echo -n <value> | kubeseal --raw --name <n>
--namespace <ns>
echo -n <value> | kubeseal --raw --namespace
<ns> --scope namespace-wide
echo -n <value> | kubeseal --raw --scope
cluster-wide
Secret annotations
| Annotation (sealedsecrets.bitnami.com/) | Effect |
|---|---|
managed: "true" |
Take over an existing Secret |
patch: "true" |
Add keys, keep others (0.23+) |
skip-set-owner-references: "true"
|
Secret outlives its SealedSecret |
Recipes
kubectl create secret generic db --dry-run=client \ --from-literal=password=<pw> -n app -o json \ | kubeseal > db-sealed.jsonkubectl apply -f db-sealed.json
# once, with cluster accesskubeseal --fetch-cert > pub.pem# later, anywherekubeseal --cert pub.pem -f secret.yaml -w sealed.yaml
echo -n <new> | kubectl create secret generic db \ --dry-run=client --from-file=token=/dev/stdin -o json \ | kubeseal --merge-into db-sealed.json
kubeseal --re-encrypt < db-sealed.json > tmp.json \ && mv tmp.json db-sealed.jsonkubectl apply -f db-sealed.json



