Skip to content
Latchkey

O que e um ConfigMap? Externalizando a configuracao do Kubernetes

Um ConfigMap guarda configuracao nao secreta como dados chave-valor, que o Kubernetes injeta em pods como variaveis de ambiente ou arquivos montados.

A configuracao nao deve ser embutida na imagem do seu continer - a mesma imagem deve rodar em dev, staging e prod com configuracoes diferentes. Um ConfigMap e como o Kubernetes externaliza essa configuracao nao sensivel, para que uma imagem possa ser configurada por ambiente no momento do deploy.

O que ele armazena

Um ConfigMap e um conjunto de pares chave-valor (e arquivos de config inteiros). E para dados nao sensiveis - feature flags, URLs, valores de tuning. Dados sensiveis pertencem a um Secret.

Como os pods o consomem

  • Como variaveis de ambiente injetadas nos contineres.
  • Como arquivos montados em um volume que o continer le.
  • Como argumentos de linha de comando derivados de seus valores.

Por que externalizar a config

Manter a config fora da imagem significa que uma imagem imutavel e promovida de forma limpa entre ambientes - voce muda o ConfigMap, nao reconstroi. Tambem mantem valores especificos de ambiente fora de artifacts com versao fixada.

Um detalhe: updates e restarts

Valores de env var vindos de um ConfigMap sao lidos no start do pod, entao mudar o ConfigMap nao atualiza pods em execucao ate que reiniciem. Valores de arquivos montados podem atualizar em tempo real, mas os apps precisam le-los de novo.

ConfigMaps na CI/CD

Um pipeline de entrega aplica o ConfigMap do ambiente alvo junto com o Deployment, ou o gera via um Helm chart. A imagem permanece a mesma; apenas o ConfigMap difere entre os ambientes.

Principais conclusões

  • Um ConfigMap externaliza config nao secreta como env vars ou arquivos.
  • Ele permite que uma imagem imutavel seja configurada por ambiente.
  • Valores de env var sao lidos no start do pod, entao mudancas exigem um restart para ter efeito.

Guias relacionados