kubectl vs k9s

  • kubectl — secrets are base64-encoded (not encrypted, just for binary-safe storage)
  • k9s — auto-decodes base64, use :secrets to browse

List secrets

kubectl get secrets -n <namespace>
kubectl get secrets --all-namespaces | grep <name>

Decode a specific key

kubectl get secret <name> -o jsonpath='{.data.password}' | base64 --decode && echo

Decode all keys at once

kubectl get secret <name> -o json | jq '.data | map_values(@base64d)'

Set default namespace

kubectl config set-context --current --namespace=ev
# verify
kubectl config view --minify | grep namespace

Check permissions

kubectl auth can-i get secrets -n <namespace>

See also

  • k9s — browse secrets interactively with auto base64 decode
  • dev-setup — kubeconfig and context setup