ConfigMap e Secrets
O que são problemas relacionados a ConfigMap e Secrets?
Um problema com ConfigMap ou Secret ocorre quando um aplicativo não consegue ler sua configuração ou dados confidenciais, causando falhas na inicialização ou comportamento incorreto do aplicativo.
-
ConfigMap armazena configurações não sensíveis (por exemplo, configurações de aplicativos).
-
Secret armazena informações confidenciais (por exemplo, senhas, chaves de API, certificados).
Dica: Se um Pod iniciar, mas o aplicativo falhar com a mensagem "configuração não encontrada" ou "segredo não encontrado", verifique primeiro a configuração do ConfigMap ou do Secret.
Sintomas
- O aplicativo não consegue ler a configuração.
- O Pod não inicia ou trava.
- Variáveis de ambiente estão faltando.
- Os arquivos de configuração montados não estão disponíveis.
- Erros como "ConfigMap não encontrado" ou "Segredo não encontrado" .
Causas comuns
| Causa | Descrição |
|---|---|
| Caminho de Montagem Incorreto | O ConfigMap ou Secret está montado no diretório errado. |
| Chave Incorreta | A chave referenciada não existe. |
| ConfigMap ou Secret Ausente | O recurso não existe no namespace. |
env/envFrom Incorreto |
As variáveis de ambiente estão sendo referenciadas incorretamente. |
| Restrição RBAC | A conta de serviço não tem permissão para ler o Secret. |
Como diagnosticar
- Verifique os ConfigMaps e os Segredos
kubectl get configmap -n <namespace>
kubectl get secret -n <namespace>
Verifique se os recursos necessários existem.
- Descreva o ConfigMap ou o Secret
kubectl describe configmap <configmap-name> -n <namespace>
kubectl describe secret <secret-name> -n <namespace>
Verificar:
- Keys
- Values (metadata dos Secrets)
- Events
- Verificar a configuração do Pod
kubectl describe pod <nome-do-pod> -n <namespace>
Verificar:
- env
- envFrom
- volumeMounts
- volumes
Certifique-se de que o Pod faça referência ao ConfigMap ou Secret correto.
- Verificar arquivos montados
kubectl exec -it <nome-do-pod> -n <namespace> -- ls /caminho/para/montagem
Confirme se os arquivos esperados estão montados dentro do contêiner.
- Verifique RBAC (dos Secrets)
kubectl auth can-i get secrets -n <namespace> \
--as=system:serviceaccount:<namespace>:<serviceaccount>
Certifique-se de que a ServiceAccount tenha permissão para acessar o Secret.
Como corrigir
- Certifique-se de que os nomes das chaves e os caminhos de montagem (mount paths) estejam configurados corretamente.
- Reinicie os Pods após atualizar o ConfigMap ou o Secret.
- Recrie o ConfigMap ou o Secret caso estejam corrompidos.
- Verifique as permissões RBAC para acesso a Secrets.
- Confirme se o Pod referencia o ConfigMap ou Secret correto em
env,envFromouvolumeMounts.
Comandos importantes
kubectl get configmap -n <namespace>
kubectl get secret -n <namespace>
kubectl describe configmap <configmap-name> -n <namespace>
kubectl describe secret <secret-name> -n <namespace>
kubectl describe pod <pod-name> -n <namespace>
kubectl exec -it <pod-name> -n <namespace> -- ls /path/to/mount
kubectl auth can-i get secrets --as=system:serviceaccount:<namespace>:<serviceaccount> -n <namespace>
Pontos-chave
-
O ConfigMap armazena configurações não sensíveis, enquanto o Secret armazena dados sensíveis.
-
Sempre verifique se o recurso existe, se os nomes das chaves estão corretos e se o Pod o referencia corretamente usando
env,envFromouvolumeMounts. -
Após atualizar um ConfigMap ou Secret, reinicie os Pods (a menos que sua aplicação suporte recarregamento dinâmico) para que as alterações entrem em vigor.
-
Se o acesso a um Secret falhar com um erro de Forbidden (Proibido), verifique a
ServiceAccounte as permissões RBAC.