Pular para o conteúdo
Abrir o Kubepier

IA no DevOps · guia

Diagnóstico de pod com IA: o que mandar ao modelo e o que nunca mandar

Equipe IA4CODE
engenharia de plataforma e SRE
publicado em 25 set 2026 6 min de leitura o que vaza e o filtro foram testados num cluster k3s 1.35 em 25 set 2026

TL;DR

Um modelo de linguagem explica bem um pod que caiu se recebe o que um humano olharia: os eventos, o estado com o exit code, as últimas linhas do log anterior e a configuração de recursos e probes. O risco está no que vem junto. No nosso teste, o describe escondeu o valor que vinha de um Secret, mas mostrou em texto puro a senha de uma variável literal; e o log trouxe o token inteiro, porque a aplicação o escreveu. Mande eventos, estado e configuração; mande o log só mascarado; nunca mande Secrets, o bloco Environment do describe nem o kubeconfig.

O que mandar

O quêPor quêDe onde
Eventos do podWarning e Normal em ordem de tempo; é onde aparecem OOMKilled, probes, pull de imagem e agendamento.kubectl get events --field-selector involvedObject.name=POD
Estado e último términoState, Last State, Reason e Exit Code: o número que separa memória de erro da aplicação.describe pod, sem o bloco Environment
Trecho do log anteriorAs últimas linhas antes da queda, já mascaradas.logs --previous --tail=100 com o filtro abaixo
Requests, limits e probesA configuração que explica metade dos erros.describe pod (blocos Limits, Requests, Liveness, Readiness)

O que nunca mandar

O quêPor quê
Valores de Secretkubectl get secret -o yaml entrega os valores em base64, que qualquer um decodifica.
O bloco Environment do describeVariável passada como valor literal aparece em texto puro, como a senha dentro de uma URL de banco.
Log sem filtroA aplicação escreve o que quiser, inclusive tokens e URLs com senha.
kubeconfig e tokens de acessoDão acesso ao cluster inteiro; não fazem parte de nenhum diagnóstico de pod.

O que vazou no teste

Um pod de teste com duas variáveis: DATABASE_URL com a senha escrita no manifesto, e GATEWAY_TOKEN lida de um Secret. A aplicação imprime as duas ao subir, como muita aplicação faz em modo de depuração. Os valores são fictícios.

saída real, bloco Environment do describe
kubectl -n loja describe pod pagamentos
    Environment:
      DATABASE_URL:   postgres://loja:senha-em-texto@db:5432/loja
      GATEWAY_TOKEN:  <set to the key 'token' in secret 'gateway'>  Optional: false

O describe protegeu o valor do Secret e entregou a senha literal. O log entregou os dois:

saída real
kubectl -n loja logs pagamentos
conectando com DATABASE_URL=postgres://loja:senha-em-texto@db:5432/loja
token=tok_ex_9f8a7b6c

Os comandos, já filtrados

describe sem o bloco Environment

terminal
kubectl -n loja describe pod pagamentos \
  | sed '/^    Environment:/,/^    Mounts:/{/^    Mounts:/!d;}'

log com senha de URL e tokens mascarados (use --previous se o container reiniciou)

saída real, com o filtro
kubectl -n loja logs pagamentos --tail=100 \
  | sed -E 's#(://[^:/@ ]+:)[^@ ]+@#\1***@#g; s#((token|senha|password|secret|key)[=:] ?)[^ &"]+#\1***#Ig'
conectando com DATABASE_URL=postgres://loja:***@db:5432/loja
token=***

avisoO filtro cobre formatos comuns, não todos. E o describe ainda mostra o Command do container, que pode ter segredo se alguém o colocou na linha de comando. Leia o que vai sair antes de mandar.

A correção definitiva fica na aplicação e no manifesto: segredo só por Secret (secretKeyRef ou volume), nunca como valor literal no manifesto, e nenhum log imprimindo credencial.

Perguntas frequentes

O describe esconde os Secrets?

Em parte. Variáveis que vêm de secretKeyRef aparecem como "<set to the key ... in secret ...>", sem o valor. Mas variáveis passadas como valor literal no manifesto aparecem em texto puro. No nosso teste, a URL do banco com a senha apareceu inteira no describe.

Mascarar o log resolve?

Reduz o risco, não zera. O filtro deste guia pega os formatos comuns (senha em URL, token=, password=), mas uma aplicação pode escrever segredo em qualquer formato. O mais seguro é a aplicação não logar segredo nenhum.

O que o provedor de IA faz com o que eu mando?

Depende do provedor e do contrato da sua conta. Leia a política de uso de dados da API que você usa, principalmente retenção e uso para treinamento, antes de mandar dados de produção.

Como o Kubepier trata isso?

O diagnóstico por IA do Kubepier usa a sua própria chave de API (Anthropic ou OpenAI) e explica o erro a partir dos eventos e do log do pod. Por isso vale para ele o mesmo cuidado deste guia: o que a aplicação escreve no log vai junto para o provedor que você escolheu.

Leia em seguida

Todos os guias →