Pular para o conteúdo
NyverraNyverra
Artigos
⌘K
InícioArtigosSite institucional
🇧🇷

Nyverra

Canal editorial

Artigos sobre tecnologia, operações e parceiros — infraestrutura, monitoramento e ambientes críticos.

Explorar

  • Início
  • Artigos
  • Categorias
  • Tags
  • Autores
  • Sobre
  • Contato
  • RSS
  • Site institucional

© 2026 Nyverra. Todos os direitos reservados.

blog.nyverra.com

  1. Início
  2. Kubernetes
  3. Curso Kubernetes 12 — ConfigMap, Secret e o guard de credenciais
Kubernetes
#Kubernetes#Curso Kubernetes#K8S

Curso Kubernetes 12 — ConfigMap, Secret e o guard de credenciais

Wedson LopesWedson Lopes
30 de outubro de 20264 min de leitura

Você não quer rebuildar a imagem para trocar uma URL. ConfigMap e Secret existem para separar configuração de código.

Mas há uma diferença perigosa entre “funciona” e “está seguro”. Um Secret com minioadmin já derrubou um deploy nosso — e o guard estava certo.

Selo do curso: testado em Kubernetes 1.35.

ConfigMap: configuração não sensível

apiVersion: v1
kind: ConfigMap
metadata:
  name: app-config
data:
  APP_ENV: production
  LOG_LEVEL: info
  features.json: |
    {"novoCheckout": true}

Três formas de consumir:

# 1) variável individual
env:
  - name: APP_ENV
    valueFrom:
      configMapKeyRef:
        name: app-config
        key: APP_ENV

# 2) todas as chaves como variáveis
envFrom:
  - configMapRef:
      name: app-config

# 3) arquivo montado
volumes:
  - name: config
    configMap:
      name: app-config

Secret: configuração sensível (com ressalvas)

kubectl create secret generic app-secret \
  --from-literal=DB_PASSWORD='...' \
  --from-literal=API_TOKEN='...'
env:
  - name: DB_PASSWORD
    valueFrom:
      secretKeyRef:
        name: app-secret
        key: DB_PASSWORD

Base64 não é criptografia. Qualquer pessoa com get secret vê o valor. Segurança de Secret depende de:

  • RBAC restritivo.
  • Criptografia do etcd em repouso.
  • Não versionar secrets no Git.
  • Rotação.

ConfigMap/Secret em volume

Montagem como arquivo:

volumes:
  - name: secret
    secret:
      secretName: app-secret

Cada chave vira um arquivo. Atualizações no ConfigMap/Secret propagam para o volume (com atraso), mas não para variáveis de ambiente já injetadas. Se a aplicação lê env no boot, ela precisa reiniciar.

immutable: true impede alterações e reduz carga no kubelet; útil para configurações versionadas.

O guard de credenciais

Um guard de produção verifica se senhas default conhecidas estão em uso. Exemplo real:

INF-SEC-01: credenciais default/segredo ausente detetados em produção
(app.storage.s3.accessKey, app.storage.s3.secretKey).

O app recusou subir porque o secret tinha minioadmin. O guard estava certo; o cluster estava errado.

Lição prática: preflight no pipeline. Antes de trocar a imagem:

VAL=$(kubectl -n portal get secret portal-secrets \
  -o jsonpath='{.data.APP_STORAGE_S3_ACCESSKEY}' | base64 -d)
[ "$VAL" != "minioadmin" ] || { echo "credencial default"; exit 1; }

Rotação sem downtime

  1. Crie a nova credencial no provedor (MinIO, banco, API).
  2. Atualize o Secret.
  3. Reinicie os pods que leem env (rolling update).
  4. Valide.
  5. Revogue a antiga.

Para segredos que não podem coexistir, planeje janela. Para os que suportam múltiplas chaves, faça rotação gradual.

Alternativas ao Secret nativo

Ferramenta Ideia
Sealed Secrets secret criptografado no Git
External Secrets Operator busca no Vault/AWS/GCP
SOPS criptografia no repositório
Vault Agent Injector injeta segredo em runtime

O objetivo é o mesmo: o valor real não fica em texto claro no Git.

Laboratório

  1. Crie ConfigMap e Secret.
  2. Injete como env e como volume.
  3. Altere o ConfigMap e veja o arquivo atualizar (e o env não).
  4. Tente subir um pod com secretKeyRef para uma chave inexistente — veja o erro.
  5. Decodifique o Secret e comprove que base64 não protege.

Erros comuns

Sintoma Causa
CreateContainerConfigError chave do Secret/ConfigMap ausente
App não vê mudança env injetado no boot; precisa restart
illegal base64 data valor inválido no Secret
Arquivo com \r CRLF no valor
Secret no Git vazamento; rotacione
Guard derruba o pod credencial default em produção

Checklist

  • [ ] Configuração não sensível em ConfigMap.
  • [ ] Segredos em Secret com RBAC restrito.
  • [ ] etcd com criptografia em repouso.
  • [ ] Nenhum secret em texto claro no Git.
  • [ ] Plano de rotação documentado.
  • [ ] Preflight de credenciais no pipeline.
  • [ ] Sei que base64 não é criptografia.

Glossário

  • ConfigMap: configuração não sensível.
  • Secret: objeto para dados sensíveis.
  • envFrom: importa todas as chaves como env.
  • immutable: objeto imutável.
  • External Secrets: operador que sincroniza segredos externos.
  • etcd encryption: criptografia do estado em repouso.

Próximo

Agora que a configuração está sob controle, vamos observar o cluster: metrics-server, Prometheus, Grafana e os sinais que realmente importam.

Próximo: Curso Kubernetes 13 — Observabilidade: metrics-server, Prometheus e Grafana

Compartilhar

Continuar a ler

Leia também

  • Kubernetes de Verdade — do zero ao cluster em produção
    Kubernetes

    Kubernetes de Verdade — do zero ao cluster em produção

    Uma trilha prática para entender, montar e operar um cluster Kubernetes — do primeiro pod ao failover do Postgres.

    30 de outubro de 20264 min de leitura
  • Curso Kubernetes 28 — DR e capstone: provar que o cluster volta
    Kubernetes

    Curso Kubernetes 28 — DR e capstone: provar que o cluster volta

    RPO, RTO e drills reais: cenários de desastre, runbook, restore medido e o capstone que fecha o curso com um cluster que se recupera.

    30 de outubro de 20265 min de leitura
  • Curso Kubernetes 27 — SLO/SLI, on-call e postmortem blameless
    Kubernetes

    Curso Kubernetes 27 — SLO/SLI, on-call e postmortem blameless

    O que prometer, como medir e o que fazer quando o erro estoura: SLI, SLO, error budget, alertas que acordam alguém e postmortem sem caça às bruxas.

    30 de outubro de 20264 min de leitura

Comentários

Ainda sem comentários

Seja o primeiro a compartilhar sua opinião sobre este artigo.

Deixe um comentário

Newsletter

Receba novos artigos

Inscreva-se para receber publicações do blog Nyverra no seu e-mail. Enviaremos um link de confirmação.

​