🔐 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).
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.
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
- 🐧 Linux / macOS
- 🪟 Windows (PowerShell)
kubectl get secret db-secret -o jsonpath='{.data.DB_PASSWORD}' | base64 -d
$v = kubectl get secret db-secret -o jsonpath="{.data.DB_PASSWORD}"
[System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($v))
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
| Sintoma | Causa | Solução |
|---|---|---|
Pod com CreateContainerConfigError | Secret ou chave não existe | Confira o nome do Secret e da chave (key) |
secrets "db-secret" not found | Secret em outro namespace | Crie no mesmo namespace do pod |
| Senha com caracteres especiais quebra o comando | Faltam aspas | Coloque 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!