0Pricing
DevOps Bootcamp · Aula

ConfigMaps e Secrets

Gerencie dados de configuração e informações confidenciais com segurança em suas implantações do Kubernetes usando ConfigMaps e Secrets.

ConfigMaps e Secrets é uma aula grátis de DevOps Bootcamp no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de DevOps Bootcamp, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de DevOps Bootcamp inclui 4 aulas no total.

Introdução a ConfigMaps e segredos

Boas-vindas! Nesta lição, você aprenderá a gerenciar dados de configuração e informações confidenciais no Kubernetes. Exploraremos os ConfigMaps e os segredos, duas ferramentas essenciais para implantações de aplicações flexíveis e seguras.

ConfigMaps e Secrets — ilustração 1

Por que externalizar a configuração?

Imagine definir diretamente na imagem Docker da sua aplicação as credenciais do banco de dados ou as chaves de API. Isso dificulta as atualizações e expõe dados confidenciais.

  • Inflexibilidade: as alterações exigem a reconstrução da imagem.
  • Risco de segurança: os dados confidenciais ficam incorporados à imagem.
  • Específico do ambiente: ambientes diferentes (desenvolvimento, produção) precisam de configurações diferentes.

ConfigMaps: dados não confidenciais

Um ConfigMap é um objeto do Kubernetes usado para armazenar dados de configuração não confidenciais como pares de chave e valor. Pense nele como um local central para as configurações da sua aplicação, como níveis de registro ou endpoints de API.

Ele separa a configuração do código da aplicação, tornando suas implantações mais portáteis e fáceis de gerenciar.

Defina um ConfigMap

Você pode criar um ConfigMap a partir de valores literais, arquivos ou diretórios. Veja um exemplo simples definido em um arquivo YAML:

apiVersion: v1
kind: ConfigMap
metadata:
  name: my-app-config
data:
  log_level: "INFO"
  api_endpoint: "http://myapi.example.com"

ConfigMap como variáveis de ambiente

Depois de criado, um pod pode consumir os dados de um ConfigMap como variáveis de ambiente. Essa é uma maneira comum de passar configurações para sua aplicação.

Veja como um pod usa nosso my-app-config:

apiVersion: v1
kind: Pod
metadata:
  name: configmap-env-pod
spec:
  containers:
  - name: my-container
    image: busybox
    command: ["sh", "-c", "echo Log Level: $LOG_LEVEL; echo API: $API_ENDPOINT"]
    env:
    - name: LOG_LEVEL
      valueFrom:
        configMapKeyRef:
          name: my-app-config
          key: log_level
    - name: API_ENDPOINT
      valueFrom:
        configMapKeyRef:
          name: my-app-config
          key: api_endpoint
  restartPolicy: Never

ConfigMap como arquivos montados

Como alternativa, os dados de um ConfigMap podem ser montados como arquivos dentro do seu contêiner. Cada par de chave e valor se torna um arquivo, com a chave como nome do arquivo e o valor como conteúdo.

Isso é útil para arquivos de configuração que sua aplicação espera ler a partir de um caminho específico.

apiVersion: v1
kind: Pod
metadata:
  name: configmap-file-pod
spec:
  containers:
  - name: my-container
    image: busybox
    command: ["sh", "-c", "cat /etc/config/log_level; cat /etc/config/api_endpoint"]
    volumeMounts:
    - name: config-volume
      mountPath: /etc/config
  volumes:
  - name: config-volume
    configMap:
      name: my-app-config
  restartPolicy: Never

Segredos: dados confidenciais

Os segredos são semelhantes aos ConfigMaps, mas foram projetados para dados confidenciais, como senhas, chaves de API ou certificados TLS. O Kubernetes ajuda você a gerenciá-los e distribuí-los com segurança.

Enquanto os ConfigMaps armazenam dados em texto simples, os segredos são codificados em base64. Isso NOT é criptografia, mas evita a exposição acidental.

Defina um segredo

Ao criar um segredo, os valores precisam ser codificados em base64. Você pode usar echo -n 'my-password' | base64 para codificá-los.

Veja um exemplo para a senha de um banco de dados:

apiVersion: v1
kind: Secret
metadata:
  name: db-credentials
type: Opaque
data:
  username: YWRtaW4= # base64 of 'admin'
  password: c3VwZXJzZWNyZXRwYXNz # base64 of 'supersecretpass'

Usando segredos em pods

Os segredos são consumidos pelos pods praticamente da mesma forma que os ConfigMaps: como variáveis de ambiente ou arquivos montados. O Kubernetes os decodifica automaticamente antes de disponibilizá-los ao contêiner.

Em geral, é preferível usá-los como arquivos montados por motivos de segurança, pois as variáveis de ambiente podem ser registradas ou inspecionadas com mais facilidade.

apiVersion: v1
kind: Pod
metadata:
  name: secret-env-pod
spec:
  containers:
  - name: my-app-container
    image: busybox
    command: ["sh", "-c", "echo DB User: $DB_USERNAME; echo DB Pass: $DB_PASSWORD"]
    env:
    - name: DB_USERNAME
      valueFrom:
        secretKeyRef:
          name: db-credentials
          key: username
    - name: DB_PASSWORD
      valueFrom:
        secretKeyRef:
          name: db-credentials
          key: password
  restartPolicy: Never

Práticas recomendadas de segurança

Lembre-se: a codificação em base64 não é criptografia. Para obter criptografia real em repouso, talvez seja necessário usar um backend de segredos do Kubernetes (como o Vault) ou aproveitar os Serviços KMS do provedor de nuvem.

  • RBAC: controle quem pode acessar os segredos.
  • Menor privilégio: conceda aos pods acesso apenas aos segredos de que precisam.
  • Arquivos montados: prefira montar os segredos como arquivos em vez de variáveis de ambiente.

Verificação rápida sobre configuração

Você precisa armazenar uma chave de API (confidencial) e uma configuração de nível de registro (não confidencial) para sua aplicação no Kubernetes.

Quais objetos do Kubernetes você deve usar para cada uma, respectivamente?

Recapitulação: ConfigMaps e segredos

Parabéns! Você aprendeu a gerenciar a configuração de aplicações e os dados confidenciais no Kubernetes.

  • ConfigMaps: armazenam pares de chave e valor não confidenciais.
  • Segredos: armazenam dados confidenciais (codificados em base64).
  • Ambos podem ser consumidos pelos pods como variáveis de ambiente ou arquivos montados.
  • Siga sempre as práticas recomendadas de segurança ao lidar com informações confidenciais.

Em seguida, explore tópicos avançados de segurança, como RBAC e soluções externas de gerenciamento de segredos.

Perguntas Frequentes

A aula “ConfigMaps e Secrets” é grátis?

Sim — o texto completo de “ConfigMaps e Secrets” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de DevOps Bootcamp, atualize para CoddyKit PRO. O curso de DevOps Bootcamp inclui 4 aulas no total.

O que vou aprender em “ConfigMaps e Secrets”?

Gerencie dados de configuração e informações confidenciais com segurança em suas implantações do Kubernetes usando ConfigMaps e Secrets. Você pratica DevOps Bootcamp com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar DevOps Bootcamp?

Nenhuma experiência prévia é necessária. DevOps Bootcamp no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.

Quanto tempo leva a aula “ConfigMaps e Secrets”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de DevOps Bootcamp?

Sim. Cada aula de DevOps Bootcamp inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Implantações para aplicações sem estado
  2. Serviços para acesso à rede
  3. ConfigMaps e Secrets
  4. Ingress e roteamento externo
← Voltar para DevOps Bootcamp