Configurar aplicações no AKS com ConfigMaps, Segredos e armazenamento persistente
Externalize configurações não confidenciais, proteja credenciais com Kubernetes e serviços do Azure e escolha armazenamento durável com PVCs, drivers CSI, modos de acesso e StorageClasses.
Tempo de estudo sugerido: 85 minutos • Nível intermediário • Reescrita autoral completa com versão resumida de cada tópico, avaliação comentada e laboratório guiado
Por João Ricardo Dutra••Conteúdo autoral completo
1. Externalizar estado sem perder segurança ou confiabilidade
Uma de inferência costuma mudar e sinalizadores entre ambientes, autenticar-se em serviços de modelo ou dados e gravar embeddings, , conversas, uploads ou . Embutir isso na imagem acopla configuração à release, expõe credenciais e perde dados quando o Pod é substituído.
O separa essas responsabilidades. ConfigMaps guardam valores não confidenciais, Segredos representam dados sensíveis e PersistentVolumes com PersistentVolumeClaims fornecem armazenamento fora do sistema de arquivos do contêiner. O resultado são rollouts previsíveis, governança e cargas de IA com estado que sobrevivem a reinícios e reagendamentos.
Injetar ConfigMaps como variáveis ou arquivos montados.
Referenciar Segredos do Kubernetes ou serviços centralizados do .
Solicitar capacidade durável por PVC e StorageClass.
Aplicar e verificar configuração, credenciais e persistência com kubectl.
Resumo do tópico
Mantenha código e imagem estáveis enquanto configuração, credenciais e dados duráveis seguem ciclos independentes.
2. Definir ConfigMaps para configurações não confidenciais
ConfigMap é um objeto do Kubernetes com escopo de cujo campo data armazena pares de chave e valor em texto. Serve para sinalizadores, , ajustes e arquivos de configuração, não para senhas ou . Chaves aceitam caracteres alfanuméricos, hífen, sublinhado e ponto.
Cada ConfigMap está limitado a 1 MiB. Use binaryData para valores binários codificados em quando necessário e volume persistente ou serviço externo para conteúdo maior. O limite preserva sincronização eficiente com nós e armazenamento no etcd.
ConfigMaps externalizam configurações pequenas e não sensíveis; arquivos grandes e dados confidenciais pertencem a armazenamentos específicos.
3. Injetar chaves selecionadas ou todas as chaves como variáveis
configMapKeyRef associa uma chave a uma variável do contêiner. envFrom com configMapRef importa todas as chaves e reduz repetitivo. Referências individuais são explícitas e permitem renomear variáveis; a importação em massa convém quando todas as chaves pertencem ao ambiente do processo.
Variáveis são capturadas na inicialização. Alterar o ConfigMap não modifica contêineres existentes: é preciso rollout ou reinício. Valide com kubectl describe pod, printenv via kubectl exec e , sem revelar valores confidenciais.
Escolha a forma de consumo que corresponde à maneira como a aplicação lê a configuração.
Resumo do tópico
Use configMapKeyRef para chaves explícitas, envFrom para importação em massa e reinicie Pods quando valores de ambiente mudarem.
4. Montar ConfigMaps como arquivos e entender a atualização
Aplicações que esperam , INI ou outro arquivo podem montar um volume baseado em ConfigMap. Cada chave vira um arquivo; items seleciona chaves e renomeia caminhos. Marque como somente leitura, pois o ConfigMap é a fonte da verdade.
O kubelet atualiza periodicamente o conteúdo de um volume normal após a alteração. A aplicação precisa observar ou reler o arquivo. Montagem subPath não recebe atualização automática e variáveis de ambiente nunca mudam no lugar. Teste o padrão exato antes de depender de atualização dinâmica.
Resumo do tópico
Monte arquivos quando a aplicação os espera, distinguindo atualização do volume, variáveis estáticas e subPath sem atualização.
5. ConfigMaps imutáveis e centralizada
immutable: true impede alteração acidental e permite ao Kubernetes fechar watches, reduzindo carga da . A imutabilidade não pode ser revertida e os dados não podem ser editados. Publique novo ConfigMap versionado e atualize a referência; reutilizar o nome exige excluir e recriar, enquanto Pods existentes preservam o mount antigo até reiniciar.
Para valores compartilhados entre aplicações, ambientes ou , o provedor Kubernetes da recupera valores e sinalizadores e gera ConfigMaps padrão. Ele também resolve referências ao . As aplicações continuam consumindo variáveis ou arquivos enquanto a operação ganha visão centralizada.
Resumo do tópico
Use ConfigMaps imutáveis e versionados para valores ligados à release e para gerenciamento central entre ambientes.
6. Criar e consumir Segredos do Kubernetes
Um Secret mantém chaves, strings de conexão e credenciais fora da imagem e da configuração comum. O tipo Opaque atende strings arbitrárias; kubernetes.io/dockerconfigjson representa credenciais de registro e kubernetes.io/ representa certificados e chaves . Segredos podem vir de literais, arquivos ou manifestos, mas um manifesto com valores reais não deve ir para o repositório.
secretKeyRef injeta a chave quando o Pod inicia. O valor permanece em memória e não é gravado em disco por padrão. kubectl describe secret mostra e nomes sem imprimir valores; kubectl describe confirma a referência. deve restringir leitura e alteração a identidades necessárias.
Resumo do tópico
Escolha o tipo apropriado, use secretKeyRef, valide nomes sem imprimir dados e aplique de privilégio mínimo.
7. Rotação, criptografia e operação segura de Segredos
não é criptografia. Evite valores literais no Git, histórico do shell, e diagnósticos. Habilite criptografia em repouso dos dados do Kubernetes, limite acesso à , rotacione credenciais e execute rollout quando consumidores por variável precisarem do novo valor.
Conceda , list, watch, create, update ou apenas quando necessário.
Prefira e armazenamento externo em produção.
Audite acessos e falhas de rotação e ensaie revogação emergencial.
Nunca use ConfigMap para senha apenas porque ela é uma configuração.
Resumo do tópico
Segurança exige criptografia, , rotação, comportamento de rollout, auditoria e prevenção de exposição em código e .
8. CSI do ou com referências
O provedor do para Secrets Store CSI Driver monta segredos diretamente no sistema de arquivos do Pod. Eles permanecem no cofre; ou concede acesso. Rotação automática pode atualizar o mount e um Secret sincronizado opcional. Variável de ambiente baseada no Secret sincronizado ainda exige reinício do Pod.
Integração direta é ideal quando o segredo deve permanecer exclusivamente no cofre e cada acesso exige auditoria, rotação, rede privada e conformidade. O provedor Kubernetes da pode manter referências ao , resolvê-las e gerar Secrets nativos; escolha-o para mapear centralmente quais segredos cada aplicação recebe.
Escolha segundo custódia, auditoria, rotação e consumo da aplicação.
Resumo do tópico
Use CSI direto para segredos residentes e auditados no cofre; use para mapeamento central entregue como recurso Kubernetes.
9. PersistentVolume, PersistentVolumeClaim e StorageClass
O sistema de arquivos do contêiner é efêmero. PersistentVolume representa armazenamento durável do , PersistentVolumeClaim solicita capacidade e acesso e StorageClass identifica política e tecnologia. Com provisionamento dinâmico, aplicar o PVC faz o criar e associar o armazenamento do adequado; geralmente não é preciso escrever um PV manual.
Dimensione capacidade e planeje crescimento e expansão compatível. A reivindicação fica Pending quando nenhuma classe ou volume atende tamanho, modo, topologia, cota ou requisitos. Bound não prova permissão da aplicação nem desempenho suficiente.
A aplicação declara intenção; StorageClass e driver CSI a traduzem em armazenamento durável.
Resumo do tópico
PVC expressa a intenção da aplicação, StorageClass dirige o provisionamento e PV é o recurso durável associado fora do ciclo do Pod.
10. Escolher Disco, Arquivos, Blobs ou
Drivers CSI expõem serviços do pelo padrão Kubernetes. fornece bloco para um nó e atende banco ou estado de nó único. oferece SMB ou NFS compartilhado entre nós e Pods. pode ser montado para imagens, documentos, e mídia não estruturada.
é opção gerenciada e nativa para blocos em cargas com estado, com operação pelo Kubernetes e anexação/desanexação rápida. Atende I/O intensivo ou escala rápida. Valide o pool: configurações de NVMe ou SSD local podem ser efêmeras, embora outros pools ofereçam persistência.
Matriz de decisão.
Opção
Acesso
Uso de IA
ReadWriteOnce; bloco
Índice vetorial, banco ou de nó único.
ReadWriteMany; SMB/NFS
Modelos, uploads, e conteúdo compartilhado.
Objetos montados por CSI
Grandes conjuntos de imagens, documentos ou mídia.
Bloco nativo gerenciado
Serviços com estado sensíveis a desempenho.
Resumo do tópico
Associe bloco, arquivo compartilhado, objeto ou armazenamento nativo à concorrência, latência, formato, durabilidade e custo.
11. Modos de acesso e StorageClasses CSI incorporadas
ReadWriteOnce permite montagem de leitura e gravação por um nó, não necessariamente por um único Pod. ReadWriteMany permite montagens simultâneas em nós diferentes. Classes de Disco usam RWO; classes de Arquivos oferecem RWX.
Classes CSI do módulo.
StorageClass
Serviço
Acesso
Uso
managed-csi (default)
Disco do
ReadWriteOnce
HDD/SSD Standard e estado econômico em um nó.
managed-csi-premium
Disco do
ReadWriteOnce
SSD Premium e baixa latência.
azurefile-csi
ReadWriteMany
Arquivos Standard compartilhados.
azurefile-csi-premium
ReadWriteMany
Arquivos Premium compartilhados.
Resumo do tópico
Escolha RWO para bloco por nó e RWX para arquivos compartilhados e selecione Standard ou Premium por latência e vazão medidas.
12. Montar e comprovar persistência após substituir o Pod
O Pod declara volume com persistentVolumeClaim.claimName e o contêiner define volumeMount e mountPath. Confirme que o usuário da imagem pode ler e gravar; propriedade, permissões, security context, protocolo e identidade podem causar falha em execução.
Leia o arquivo no novo Pod e faça pequeno teste de I/O.
Resumo do tópico
PVC Bound vira persistência comprovada quando o Pod substituto remonta, lê dados anteriores e atende a meta de I/O.
13. Laboratório guiado: configurar uma no
O exercício de cerca de 30 minutos implanta e , cria e envia a imagem, configura valores com ConfigMaps, credenciais com Secrets e com PVC, expõe por LoadBalancer, testa em Python, lê persistidos e remove recursos.
Baixe o projeto e identifique os espaços de ConfigMap, Secret, PVC, e Service.
Implante recursos e publique a imagem no registro.
Atualize e aplique e verifique associações e configuração.
Chame a , inspecione , substitua o Pod e confirme os dados.
Remova todos os recursos cobrados.
Pré-requisitos: assinatura do com permissão, , Python 3.12 ou posterior, CLI do atual e kubectl. Tarefas do podem exigir pagamento conforme o uso porque créditos gratuitos podem não cobri-las.
Resumo do tópico
O laboratório comprova configuração, entrega de segredo, acesso público e duráveis em um fluxo completo de .
14. Avaliação, checklist de produção e referências
Decisões da avaliação.
Cenário
Resposta correta
Motivo
String com senha
Kubernetes Secret
É sensível e deve ficar fora do código.
e sem recompilar
ConfigMap e configMapKeyRef
São não sensíveis e externos à imagem.
Aplicar PVC com StorageClass válida
provisiona o armazenamento do
A classe define a política CSI.
Segredo como variável
valueFrom com secretKeyRef
Mapeia a chave na inicialização.
Aplicação espera no disco
Montar ConfigMap como arquivo
O arquivo aparece no caminho esperado.
Versione configurações e documente atualização/reinício.
Mantenha credenciais no quando custódia e auditoria exigirem.
Valide , criptografia, rotação e identidade.
Escolha armazenamento por acesso, desempenho, durabilidade, topologia e custo.
Teste associação, permissões, substituição, sobrevivência e I/O.
A prova decide por sensibilidade, forma de consumo e intenção de armazenamento; produção acrescenta identidade, rotação, observabilidade e evidência de desempenho.