Unidade 5 / 11

Kubernetes: Manifesto, Helm e orquestração baseada em IA

Ganhos:

  • Capacidade de compreender os objetos básicos (Pod, Deployment, Service, ConfigMap, Secret, Namespace) e a filosofia declarativa do Kubernetes e produzir manifestos sólidos para inteligência artificial
  • Capacidade de deixar manifestos prontos para produção e seguros com limites de recursos, verificações de integridade (sondagens), tags de imagem fixas e RBAC estreito
  • Capacidade de verificar o contexto correto antes da execução e aplicar disciplina de simulação com simulação/diff

É fácil executar um contêiner. Mas estabelecer um sistema que distribua centenas de contêineres por dezenas de servidores, reinicie automaticamente quando um deles travar, replique-o quando a carga aumentar e atualize-o sem tempo de inatividade? Isso é orquestração, e a ferramenta padrão do setor é o Kubernetes (K8s, abreviado) — a plataforma que implanta, dimensiona e gerencia contêineres automaticamente em um cluster. O Kubernetes é poderoso, mas complexo: tudo é definido por arquivos YAML longos e sensíveis à indentação — chamados manifestos. É aqui que a IA dá uma lufada de ar fresco; Com o contexto certo, ele produz rapidamente esses manifestos e decodifica seus erros misteriosos.

Mas no Kubernetes, um manifesto errado significa deixar de suportar um serviço inteiro, dimensionar incorretamente ou deixar uma vulnerabilidade. É sua responsabilidade entender e verificar cada manifesto que a IA produz — especialmente antes da aplicação do kubectl.

Objetos principais do Kubernetes

Para auditar o Kubernetes, você deve conhecer os principais conceitos:

  • Pod: Menor unidade de trabalho; Ele contém um ou vários contêineres. Geralmente, o pod não é usado diretamente, mas os objetos pai que o gerenciam são usados.
  • Deployment: Define quantas cópias de uma aplicação serão executadas, qual imagem ela utilizará e como será atualizada. Se um pod travar, ele será recriado automaticamente.
  • Serviço: Fornece endereço de rede fixo e balanceamento de carga para os pods; Mesmo que os pods venham e vão, o endereço de acesso não muda.
  • ConfigMap e Secret: Mantém valores de configuração e informações secretas separadas dos Pods. ConfigMap é para configurações explícitas, Secret é para valores confidenciais.
  • Namespace: a área que divide e isola logicamente os recursos (por exemplo, dev, prod).
  • Entrada: o conjunto de regras que direciona o tráfego HTTP do mundo externo para os serviços no cluster.

Helm é o “gerenciador de pacotes” do Kubernetes: ele permite modelar manifestos recorrentes (gráficos) e instalá-los com valores diferentes em ambientes diferentes com um único comando. A IA produz manifesto bruto e gráfico Helm.

Por que existem tantos objetos? Porque a filosofia central do Kubernetes é declarativa: você define "como deseja que o sistema fique" (por exemplo, "sempre tenha 3 cópias deste aplicativo em execução"), enquanto o Kubernetes move continuamente o estado atual para mais perto do estado desejado. Se um Pod morrer, ele criará um novo; se um nó ficar inativo, ele moverá a carga de trabalho para outro nó. É por isso que os manifestos não são comandos “do”, mas sim receitas “deixe assim”. Compreender esta distinção é fundamental ao ler os manifestos que a IA produz: cada domínio descreve parte do estado desejado do sistema. Um domínio errado significa que o Kubernetes está trabalhando em direção a um objetivo errado – e esse objetivo é aplicado de forma silenciosa e persistente.

Dica: No Kubernetes, a ferramenta de teste seguro mais importante é kubectl apply --dry-run=server -f file.yaml: mostra se o servidor aceitará e o que fazer sem realmente aplicar o manifesto. Certifique-se de executar o teste e o kubectl diff antes de aplicar um manifesto ao prod.

Passo a passo: Criando manifestos com IA

  1. Descreva a aplicação e a necessidade. Nome da imagem, porta, quantas réplicas, limites de recursos (CPU/memória).
  2. Solicitar implantação + serviço. Geralmente ambos são necessários juntos.
  3. Configuração e segredo separados. Configurações para ConfigMap, valores confidenciais para Secret.
  4. Adicione verificações de integridade. livenessProbe (está ativo) e readinessProbe (está pronto para tráfego) são críticos.
  5. Defina um limite de recursos. Sem solicitações/limites, um Pod pode consumir o nó inteiro.
  6. Verifique com `--dry-run` e `diff` e aplique. Primeiro no namespace de teste.

Segurança: riscos específicos do Kubernetes

  1. Segredo não é realmente secreto – é apenas base64. O objeto secreto do Kubernetes base64 codifica valores; Isso não é criptografia, é facilmente descriptografado. Para uma verdadeira privacidade, são necessários criptografia etcd e cofre externo (Vault, gerenciador de segredos em nuvem). Nunca envie manifestos secretos diretamente para o Git (existem soluções para isso, como Segredos Selados/Segredos Externos).
  2. Defina um limite de recursos. Um pod sem limites pode travar todo o nó com vazamento de memória.
  3. Autoridade mínima (RBAC). Com o controle de acesso baseado em função, cada serviço/usuário tem apenas as permissões necessárias. A IA às vezes fornece grandes administradores de cluster; restringir isso.
  4. Não use a tag de imagem `latest`. Você não sabe qual versão está em execução e não pode revertê-la.
Cuidado: a exclusão de kubectl ou uma aplicação incorreta podem destruir uma implantação ativa. Certifique-se de verificar em qual namespace você está (kubectl config current-context) antes de executar os comandos; O trabalho acidental é um desastre comum no contexto de produção.

Manifesto bruto vs. tabela Helm

critério

Manifesto YAML bruto

Gráfico do leme

Instalação

kubectl aplicar -f

instalação do leme

Multimídia (desenvolvimento/produção)

Copiar e colar, sujeito a erros

Gráfico único, valores diferentes.yaml

Versão/reversão

à mão

fácil com reversão do leme

Curva de aprendizado

baixo

médio

quando

Ambiente pequeno e único

Serviço multimídia e repetitivo

três mini cases

Caso 1 — o segredo do serviço travado. Um pod era reinicializado constantemente (CrashLoopBackOff). A equipe entregou os logs e o manifesto à IA; A IA mostrou que o Pod nunca foi considerado “pronto” porque o readinessProbe estava olhando para a porta errada. Eles consertaram a porta, o serviço ficou estável em 10 minutos. Estabelecer esse relacionamento manualmente pode levar horas.

Caso 2 – não estabelecer limites quebrou o nó. Não havia limites em uma implantação; Um vazamento de memória inchou o pod e travou todo o nó, derrubando também os serviços vizinhos. Após o incidente, eles fizeram a IA dizer "adicionar solicitações e limites razoáveis ​​de CPU/memória a todas as implantações" e tornaram isso padrão. Uma linha perdida custa horas de inatividade.

Caso 3 – RBAC grande capturado. Durante uma investigação, descobriu-se que um manifesto ServiceAccount gerado pela IA estava vinculado à função de administrador do cluster – o que significa que o serviço poderia gerenciar todo o cluster. A equipe reduziu a permissão para apenas ler pods em seu namespace. O princípio do privilégio mínimo eliminou uma vulnerabilidade de segurança.

Quatro modelos copiáveis

1) Implantação + Produção de serviços:

Escreva um manifesto de implantação e serviço para Kubernetes. Aplicativo: [AD], imagem: [imagem: versão fixa], porta: [X], réplica: [N]. Regras:- Adicionar solicitações e limites de CPU/memória.- Definir livenessProbe e readinessProbe.- Ler configuração do ConfigMap, segredo do objeto Secret; Não incorpore valores no manifesto, use espaços reservados. - NÃO use a tag de imagem ":latest". Dê com descrição.

2) Resolução de erros manifestos:

O pod atual está no estado [CrashLoopBackOff / Pending / ImagePullBackOff]. De acordo com o manifesto a seguir e a saída 'kubectl description', liste as possíveis causas raiz em ordem de probabilidade e emita o comando verify para cada uma. Manifesto: [YAML] Descrever: [SAÍDA]

3) Verificação de segurança/integridade:

Verifique este manifesto do Kubernetes: está faltando o limite de recursos, está faltando prob, há uma tag:latest, há um RBAC/permissão excessivamente amplo, o segredo está incorporado no manifesto? Escreva as descobertas em ordem de importância e com correção. Manifesto: [YAML]

4) Gráfico de conversão para Helm:

Converta os seguintes manifestos brutos em um gráfico Helm reutilizável: quais valores devem ir para valores.yaml (imagem, réplica, origem, ambiente)? Mostrar estrutura do gráfico e exemplos de valores.yaml.Manifests: [YAML]

Alerta fraco / Alerta forte

Fraco: "Escreva Kubernetes YAML para meu aplicativo."

Resultado: uma implantação sem investigação e sem limite com a tag :latest, incorporando a planície secreta; Inseguro e frágil na produção.

Forte: "Escreva Kubernetes Deployment + Service. Imagem myapp:1.4.2, 3 réplicas, 8080 portas. CPU 100m-500m, memória 128Mi-512Mi adiciona solicitações/limites. Coloque sonda de vivacidade para /healthz, sonda de prontidão para /ready. Leia o segredo do objeto secreto, não o incorpore no manifesto. Forneça com a descrição."

Diferença: a segunda versão do prompt fornece escala, limites de recursos, verificações de integridade e regras secretas; A saída está próxima da produção e segura.

Erros comuns

  • Não definir limites de recursos. Um único pod pode consumir o nó inteiro.
  • Não adicionar uma verificação de integridade (sonda). O Kubernetes não consegue detectar um pod com falha/não pronto.
  • Etiqueta `:mais recente`. Não fica claro qual versão está em execução, ela não pode ser revertida.
  • Confirmando o segredo diretamente no Git. Base64 não é criptografia; todo mundo resolve.
  • Executando comandos em contexto/namespace errado. A maneira mais comum de travar no prod.
  • ignorando `--dry-run`/`diff`. Não vendo o que acontecerá antes da implementação.

Em resumo

Kubernetes é um orquestrador poderoso, mas complexo, que implanta, dimensiona e otimiza contêineres automaticamente em um cluster; Tudo é definido por YAMLs de manifesto, que o Helm modela. A IA produz rapidamente manifestos de implantação/serviço e gráficos Helm, resolve bugs misteriosos — mas você precisa solicitar explicitamente limite de recursos, verificação de integridade, tag de imagem imutável, RBAC restrito e regras de segurança secretas. --dry-run, diff e verificação correta do contexto são hábitos que evitam travamentos do produto.

Tarefa de aplicativo

Faça com que a IA gere um manifesto para um aplicativo de amostra com o modelo "Implantação + Geração de serviço". Em seguida: (1) Verifique o limite de recursos, investigação, :latest e segredo com o modelo "Verificação de segurança/sanidade"; (2) execute kubectl apply --dry-run=server em um cluster/minikube de teste, se possível, e leia a saída; (3) anote os dois itens mais críticos de segurança/robustez que você acha que estão faltando.

lista de verificação

  • [ ] Adicionei a versão da imagem, número de réplicas, portas e limites de recursos à minha solicitação.
  • [] Adicionei sonda de vivacidade e prontidão ao manifesto.
  • [] Tag da imagem corrigida; Eu não usei: mais recente.
  • [] O segredo não está incorporado no manifesto; Usei objeto secreto/cofre externo.
  • [] Reduzi RBAC/permissões para permissões mínimas.
  • [] Antes de me inscrever, verifiquei se estava no contexto correto e se --dry-run/diff gerava.