Boas práticas para usar o kubectl de forma eficiente e segura:
- 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.
- 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'
- Habilite o autocomplete (Bash/Zsh) – isso reduz erros de digitação e acelera comandos.
- Use kubectl explain para documentação rápida
- Antes de escrever um YAML, consulte os campos disponíveis:
kubectl explain pod.spec.containers
- 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.
- 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).
- 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
- 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.
- Evite comandos imperativos em produção
- Prefira arquivos YAML versionados (Git) a comandos como kubectl run ... --image=.... Isso garante reprodutibilidade e revisão.
- 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.
- 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)