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:
2 - Listar as imagens dos Pods do namespace corrente:
3 - Listar os recursos dos Pods do namespace corrente:
As colunas podem ser vistas mais facilmente assim:
4 - Listar os recursos disponíveis dos nós:
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.
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.