Operações com Pods EKS
Leia logs, encontre pods, execute comandos em contêineres e reinicie deployments em ambientes EKS.
Quando usar este skill
Use este skill quando o usuário quiser:
- Visualizar logs de um pod ou serviço
- Listar ou encontrar pods em um ambiente EKS
- Executar um comando dentro de um pod em execução
- Reiniciar (rollout restart) um deployment
- Depurar um pod (descrever, verificar status, visualizar logs anteriores)
- Verificar se um serviço está em execução em um ambiente específico
Pré-requisitos
- kubectl: instalado e disponível no PATH
- AWS CLI: instalado com perfis SSO configurados por ambiente
- Kubeconfigs: gerados por ambiente em
~/.kube/config_<env> - Config:
~/.eks-config.json— gerado automaticamente na primeira execução ao escanear kubeconfigs e perfis AWS. Veja CONFIG.md para configuração manual.
Verificações de pré-voo
Execute o script de pré-voo antes da primeira operação em uma conversa:
python3 <skill_dir>/scripts/eks_preflight.py
Para verificar também um ambiente específico (kubeconfig + SSO):
python3 <skill_dir>/scripts/eks_preflight.py --env stg
Se o SSO estiver expirado, informe ao usuário: aws sso login --sso-session <sessão> (o nome da sessão está na saída do pré-voo).
Operações
pods — Listar ou descrever pods
# Encontrar pods de um serviço
python3 <skill_dir>/scripts/eks_ops.py pods --env stg --service my-service
# Listar todos os pods em um ambiente
python3 <skill_dir>/scripts/eks_ops.py pods --env stg --all
# Descrever um pod (eventos, condições, montagens)
python3 <skill_dir>/scripts/eks_ops.py pods --env stg --service my-service --describe
logs — Ler logs de pods
# Últimas 100 linhas (padrão)
python3 <skill_dir>/scripts/eks_ops.py logs --env stg --service my-service
# Tamanho de cauda personalizado e janela de tempo
python3 <skill_dir>/scripts/eks_ops.py logs --env stg --service my-service --tail 500 --since 1h
# Contêiner anterior (após falha/reinicialização)
python3 <skill_dir>/scripts/eks_ops.py logs --env stg --service my-service --previous
# Todas as réplicas de uma vez (usa stern se instalado)
python3 <skill_dir>/scripts/eks_ops.py logs --env stg --service my-service --all-pods
# Transmitir logs em tempo real
python3 <skill_dir>/scripts/eks_ops.py logs --env stg --service my-service --follow
# Pod específico por nome (ignora resolução de serviço)
python3 <skill_dir>/scripts/eks_ops.py logs --env stg --pod my-service-abc123-xyz --tail 200
exec — Executar um comando dentro de um pod
Mostre o comando exato ao usuário e obtenha aprovação antes de executar.
python3 <skill_dir>/scripts/eks_ops.py exec --env dev --service my-service -- ls /app/conf
python3 <skill_dir>/scripts/eks_ops.py exec --env dev --service my-service -- cat /app/conf/application.conf
python3 <skill_dir>/scripts/eks_ops.py exec --env stg --service my-service -- env | grep -i heap
python3 <skill_dir>/scripts/eks_ops.py exec --env stg --service my-service -- df -h
restart — Reiniciar um deployment (rollout restart)
Mostre o comando de reinicialização ao usuário e obtenha aprovação antes de executar.
python3 <skill_dir>/scripts/eks_ops.py restart --env dev --service my-service
python3 <skill_dir>/scripts/eks_ops.py restart --env dev --service my-service --watch
Regras importantes
execerestartexigem aprovação explícita do usuário. Mostre o comando exato e aguarde confirmação.podselogssão somente leitura. Execute-os diretamente sem aprovação.- Toda a saída é automaticamente redigida — segredos, tokens, chaves e credenciais são substituídos por
[REDIGIDO]. Veja references/REDACTION.md. - Comandos
env,printenvousetsem especificação são bloqueados dentro deexec. Useenv | grep -i <palavra-chave>. - A leitura de arquivos em
/secrets/,/vault/ou caminhos de credenciais é bloqueada dentro deexec. - Se
[REDIGIDO]aparecer na saída, não tente recuperar o valor original. - O script seleciona automaticamente o contêiner da aplicação em pods com múltiplos contêineres (ignora sidecars como statsite, istio-proxy).
- Múltiplas réplicas: quando um serviço tem vários pods,
--serviceescolhe o primeiro em execução. Se o usuário quiser uma réplica específica, execute primeiropods --env <env> --service <nome>para listar todas as réplicas, pergunte ao usuário qual delas, depois use--pod <nome-do-pod>em vez de--service. - Prefira Grafana ou Splunk para investigação de logs em produção — use este skill como complemento.
- Desenvolvedores geralmente têm acesso somente leitura ao EKS —
restartpode falhar em clusters de produção.
Tratamento de erros
| Erro | Causa | Correção |
|---|---|---|
SSO session may be expired | Token AWS SSO expirado | aws sso login --sso-session <sessão> |
Kubeconfig not found | Arquivo kubeconfig ausente | aws eks update-kubeconfig --profile <env> --name <cluster> --kubeconfig ~/.kube/config_<env> |
No pods found for service | Nome de serviço incorreto ou nenhum pod em execução | pods --env <env> --all para ver pods disponíveis |
Blocked: Dumps all environment variables | Lista de bloqueio do exec acionada | Use env | grep -i <palavra-chave> |
connection refused localhost:8080 | Conflito com kubectl do Rancher Desktop | O script detecta isso automaticamente. Se persistir, verifique which kubectl |
Solução de problemas
| Problema | Correção |
|---|---|
kubectl: command not found | brew install kubectl |
aws: command not found | brew install awscli |
| Config não encontrado | Crie ~/.eks-config.json — veja Pré-requisitos |
| Namespace errado | Defina namespace na configuração do ambiente |
| Logs vazios | Tente --previous para contêineres com falha, ou aumente --since |
stern não encontrado | brew install stern (opcional — volta para kubectl sequencial) |