A manutenção e operação de clusters Kubernetes pode ser um trabalho desafiador, especialmente quando se trata de analisar problemas e obter rapidamente as informações necessárias. O kubectl, a ferramenta de linha de comando para Kubernetes, oferece uma variedade de opções para facilitar essa tarefa. Entre essas, o parâmetro -o=custom-columns se destaca, permitindo personalizar a saída de comandos para visualizar informações específicas em colunas. Para aumentar ainda mais a eficiência, a criação de aliases (atalhos) para comandos frequentes pode economizar tempo valioso. Neste artigo, abordaremos as vantagens de personalizar aliases no kubectl e forneceremos alguns exemplos práticos.

Vantagens de Personalizar Aliases

  • Agilidade e Eficiência: Ao usar aliases, você reduz o tempo gasto digitando comandos longos e complexos. Isso é especialmente útil em emergências onde cada segundo conta.

  • Consistência: Aliases garantem que você e sua equipe usem comandos padronizados, reduzindo a chance de erros e inconsistências.

  • Facilidade de Uso: Personalizar a saída dos comandos com -o=custom-columns torna a leitura das informações mais intuitiva e focada nos dados realmente importantes.

  • Redução de memorização de comandos: tentar lembrar de todos os parâmetros é algo quase impossível, principalmente naquela madrugada do seu plantão, em que sua cabeça não está 100%. 

Exemplos de Aliases para kubectl

Criamos alguns aliases úteis que personalizam a saída dos comandos do kubectl para facilitar a análise e solução de problemas. Vale ressaltar que fica a cargo do usuário definir o nome do atalho para cada comando. A dica é deixar algo intuitivo, fácil de lembrar e que não tenha conflitos com algum outro comando da sua máquina. No meu caso, uso sempre o atalho começando com k3m (k de kubernetes e 3m porque meu nome completo tem as iniciais com a letra m). Se fosse para Docker, começaria com d3m. Fique à vontade para criar seu padrão. Se quiser ter acesso completo aos meus atalhos, confira lá no Github.

1 - Listar os nós do cluster com seus respectivos Taints:

alias k3mtaint='kubectl get nodes -o=custom-columns="NODE:.metadata.name,TAINTS:.spec.taints"'

2 - Listar as imagens dos Pods do namespace corrente:

alias k3mimage='kubectl get pods -o=custom-columns="PODS:.metadata.name,IMAGES:.spec.containers[*].image"'

3 - Listar os recursos dos Pods do namespace corrente:

alias k3mpodresource='kubectl get pods -o=custom-columns="PODS:.metadata.name,NAMESPACE:.metadata.namespace,REQUEST_CPU:.spec.containers[*].resources.requests.cpu,REQUEST_MEM:.spec.containers[*].resources.requests.memory,LIMITS_CPU:.spec.containers[*].resources.limits.cpu,LIMITS_MEM:.spec.containers[*].resources.limits.memory"'

As colunas podem ser vistas mais facilmente assim:

PODS         -> .metadata.name
NAMESPACE    -> .metadata.namespace
REQUEST_CPU  -> .spec.containers[*].resources.requests.cpu
REQUEST_MEM  -> .spec.containers[*].resources.requests.memory
LIMITS_CPU   -> .spec.containers[*].resources.limits.cpu
LIMITS_MEM   -> .spec.containers[*].resources.limits.memory

4 - Listar os recursos disponíveis dos nós:

alias k3mnoderesource='kubectl get nodes -o=custom-columns="NODE:.metadata.name,CPU:.status.capacity.cpu,MEMORY:.status.capacity.memory"'

Implementando os Aliases em definitivo

Para tornar esses aliases permanentes, você pode adicioná-los ao seu arquivo de perfil de shell, como ~/.bashrc ou ~/.zshrc. Basta abrir o arquivo e adicionar os aliases no final.

Após salvar o arquivo, atualize o perfil do shell com o comando source ~/.bashrc ou source ~/.zshrc dependendo do seu shell.


Banner

Alternativas 

Alguns projetos já existentes implementam esta técnica. Entre eles, se destacam:

Kubectl Aliases - https://github.com/ahmetb/kubectl-aliases

Implementa uma lista de aliases pré-definidos, como kgpo (kubectl get pod). O ponto positivo é que ele se tornou bastante difundido, sendo muito fácil de entender sua lógica. Além disso, os aliases podem ser auto-completados usando TAB. O ponto negativo é que existem muitos aliases possíveis, e apenas aqueles pré-definidos podem ser usados out-of-the-box.

Autokube - https://github.com/caruccio/autokube

Utiliza-se de uma feature do shell para executar um comando específico quando o comando original (alias/function/binário/script) não existe. Isso permite construir sequências de abreviações que traduzem para o comando final. Por exemplo, o comando kgpo é transformado instantaneamente em “kubectl get pod” sem o uso de aliases: tudo é resolvido em tempo de execução, o que permite utilizar qualquer ordem de parâmetros no comando. Por exemplo, kgnoowsl e kgnoslow executam, respectivamente,  “kubectl get nodes -o=wide --show-labels” e “kubectl get nodes --show-labels -o=wide”. Novas observações podem ser definidas em um arquivo simples de configuração yaml.

Conclusão

A personalização de aliases no kubectl pode transformar significativamente a maneira como você interage com seu cluster Kubernetes. A criação de atalhos eficientes e a personalização da saída dos comandos não só economizam tempo, mas também melhoram a clareza e a precisão das informações obtidas. Experimente os exemplos fornecidos e ajuste-os conforme as necessidades do seu ambiente para maximizar sua produtividade e eficiência.

Social

Fale conosco

Almeda Campinas 802, CJ 12, Jardim Paulista,

São Paulo - SP, 01404-001

Faça parte do time

Nossos conteúdos

Social

Fale conosco

Almeda Campinas 802, CJ 12, Jardim Paulista,

São Paulo - SP, 01404-001

Faça parte do time

Nossos conteúdos

Social

Fale conosco

Almeda Campinas 802, CJ 12, Jardim Paulista,

São Paulo - SP, 01404-001

Faça parte do time

Nossos conteúdos