DEV Community

Carlos Nogueira
Carlos Nogueira

Posted on

[PT-BR] Kubectl: boas práticas

Boas práticas para usar o kubectl de forma eficiente e segura:

  1. Use contextos e namespaces de forma explícita
  • Defina o contexto atual com kubectl config use-context para evitar operações no cluster errado.
  • Sempre especifique o --namespace ou configure o namespace padrão no contexto.
  • Liste e alterne entre contextos com kubectl config get-contexts.
  1. Aliases e autocompletion para ganhar velocidade
  • Crie aliases comuns, por exemplo:
  alias k='kubectl'
  alias kgp='kubectl get pods'
  alias ksys='kubectl --namespace kube-system'
Enter fullscreen mode Exit fullscreen mode
  • Habilite o autocomplete (Bash/Zsh) – isso reduz erros de digitação e acelera comandos.
  1. Use kubectl explain para documentação rápida
  • Antes de escrever um YAML, consulte os campos disponíveis:
  kubectl explain pod.spec.containers
Enter fullscreen mode Exit fullscreen mode
  1. Manipulação segura de recursos
  • Nunca use kubectl delete sem antes validar com --dry-run=client ou kubectl get.
  • Prefira kubectl apply -f em vez de create/replace – é declarativo e seguro.
  • Para edição, use kubectl edit (o editor respeita o schema) e evite editar YAMLs baixados manualmente.
  1. Aproveite os comandos integrados para debugging
  • kubectl logs --previous – vê logs do container anterior (útil após crash).
  • kubectl exec -it -- /bin/sh – acesso interativo.
  • kubectl port-forward – expõe serviços localmente sem alterar o cluster.
  • kubectl top pod/node – métricas de CPU/memória (requer Metrics Server).
  1. Formatação e filtros de saída
  • Use -o wide, -o yaml ou -o json conforme necessário.
  • Combine com jq ou custom-columns para extrair informações específicas:
  kubectl get pods -o json | jq '.items[].metadata.name'
  kubectl get pods -o custom-columns=NAME:.metadata.name,STATUS:.status.phase
Enter fullscreen mode Exit fullscreen mode
  1. Plugins e extensões
  • Instale o Krew (gerenciador de plugins) e experimente:
    • kubectl tree – mostra donos de recursos.
    • kubectl ns – troca de namespace rapidamente.
    • kubectl neat – remove campos gerados de YAMLs.
  1. Evite comandos imperativos em produção
  • Prefira arquivos YAML versionados (Git) a comandos como kubectl run ... --image=.... Isso garante reprodutibilidade e revisão.
  1. Limite escopo de ações
  • Use --all-namespaces apenas quando realmente necessário – pode retornar milhares de objetos.
  • Combine --selector (label selector) para operações em subconjuntos de recursos.
  1. Segurança
  • Nunca exponha o kubeconfig (ele contém certificados ou tokens).
  • Revise permissões com kubectl auth can-i antes de executar ações críticas.

Seguindo essas práticas, você reduz riscos, ganha produtividade e mantém o controle sobre clusters Kubernetes.

Referências
https://kubernetes.io/docs/reference/kubectl/
https://krew.sigs.k8s.io/

Top comments (0)