Pular para o conteúdo principal

🔐 Secrets

O Secret guarda informações sensíveis, como senhas de banco de dados, tokens e chaves de API, separadas do código da aplicação e das configurações comuns (ConfigMap).

aviso

Por padrão, o Secret é apenas codificado em base64, não criptografado. Qualquer pessoa com permissão de leitura de Secrets no cluster consegue ver o valor. Por isso, controle quem tem acesso usando RBAC.

informação

Secrets são criados com o kubectl. O Painel Nuvion não tem uma tela para esse recurso.


🚀 Antes de começar​

  • Ter o acesso ao cluster configurado (veja Acesso ao Cluster).
  • Use valores de teste neste guia. Não use senhas reais.

🚀 1. Criar um Secret​

kubectl create secret generic db-secret --from-literal=DB_USER=app --from-literal=DB_PASSWORD='troque-esta-senha'

Saída esperada: secret/db-secret created

🚀 2. Verificar o Secret​

kubectl get secret db-secret
kubectl describe secret db-secret

O describe mostra apenas o tamanho de cada valor, não o conteúdo.

🚀 3. Ver o valor armazenado​

kubectl get secret db-secret -o jsonpath='{.data.DB_PASSWORD}' | base64 -d

Isso mostra por que é importante restringir o acesso aos Secrets.

🚀 4. Usar o Secret em um pod​

Crie o arquivo pod-secret.yaml:

apiVersion: v1
kind: Pod
metadata:
name: pod-secret
spec:
containers:
- name: app
image: busybox
command: ["sh", "-c", "echo Usuario: $DB_USER; sleep 3600"]
env:
- name: DB_USER
valueFrom:
secretKeyRef:
name: db-secret
key: DB_USER
- name: DB_PASSWORD
valueFrom:
secretKeyRef:
name: db-secret
key: DB_PASSWORD
kubectl apply -f pod-secret.yaml
kubectl logs pod-secret

Saída esperada: Usuario: app

Para confirmar que a senha chegou ao pod sem exibi-la:

kubectl exec pod-secret -- sh -c 'test -n "$DB_PASSWORD" && echo "Senha definida"'

🔒 Boas práticas​

  • Nunca imprima senhas nos logs da aplicação.
  • Não salve arquivos YAML com senhas em repositórios (Git).
  • Dê acesso de leitura a Secrets somente a quem precisa.
  • Troque as senhas periodicamente.

✅ Como saber se deu certo​

O pod fica Running, o log mostra Usuario: app e o último comando mostra Senha definida.

❗ Problemas comuns​

SintomaCausaSolução
Pod com CreateContainerConfigErrorSecret ou chave não existeConfira o nome do Secret e da chave (key)
secrets "db-secret" not foundSecret em outro namespaceCrie no mesmo namespace do pod
Senha com caracteres especiais quebra o comandoFaltam aspasColoque o valor entre aspas simples

🧹 Limpeza​

kubectl delete pod pod-secret
kubectl delete secret db-secret

🧠 Dúvidas?​

Fale com nosso time de suporte técnico da SaveinCloud!