Cansado de digitar extensos e entediantes comandos de kubectl? Não consegue decorar os aliases criados pelos outros? Não aguenta mais criar scripts, funções e aliases sem sentido?

Seus problemas acabaram!

Chegou o incrível Auto Kubectl - https://github.com/caruccio/autokube

Com ele você digita (praticamente) todos os parâmetros do kubectl de forma super abreviada.

Impressione sua família e amigos digitando isso:

kgpoowlnslnhw app=web default

Ao invés disso:

kubectl get pod -n default -o=wide -l=app=web --namespace=default --show-labels --no-headers --watch

Basta iniciar o comando com a letra k que o resto é traduzido para os parâmetros correspondentes.

Por exemplo:

`k`   -> Inicia um comando autokubectl
`g`   -> Verbo `get`
`po`  -> Recurso `pod`
`ow`  -> Opção `-o wide` (`owide` também funciona)
`l`   -> Opção `-L=$1`, onde `$1` é o primeiro parâmetro após o comando `k...`
`n`   -> Opção `--namespace=$2`, onde `$2` é o segundo parâmetro após o comando `k...`
`sl`  -> Opção `--show-label`
`w`   -> Opção `--watch`

Algumas abreviações possuem parâmetros que são usados no comando final. Por exemplo, n exige um parâmetro com o namespace, e l exige um ou mais labels.

Mas o melhor de tudo é que você não precisa aprender a ordem. Cada abreviação é resolvida a partir de uma tabela pré-definida que mapeia um ou mais caracteres em um, ou mais parâmetros de kubectl. A única regra é seguir a sequência verbo -> recurso -> opção.

A ordem dos parâmetros após o comando k... respeita a ordem com que as abreviações aparecem nele. Sendo assim, o comando kgponl default app=web se torna kubectl get pods --namespace=default -l=app=web, enquanto o comando kgpoln app=web default se torna kubectl get pods -l=app=web --namespace=default. Note que n e l mudam de lugar, portanto seus parâmetros invertem a ordem na linha de comando.

Prefixos e Sufixos

Além dos parâmetros de kubectl, você pode usar prefixos e sufixos no comando final.

Por exemplo, para executar o kubectl com o comando time na frente, use:

kgpo- time

O comando final será:

time kubectl get pods

Prefixos são definidos com o caractere - e uma abreviação opcional. Já existem as seguintes opções nativas:

`-`   -> [parametro 1] [ comando final]
`-t`  -> time [comando final]
`-w`  -> watch -n %s -- [comando final]

O prefixo -w é tratado de forma especial, e permite que um valor para sua flag -n seja definido junto a ele, no formato -w[N]. Caso não seja definido, o valor padrão de [N] é 2.

kg-wpo
kg-w5po

Os comandos finais serão:

watch -n 2 -- kubectl get pods
watch -n 5 -- kubectl get pods

Sufixos podem ser utilizados da mesma forma, mas usando a abreviação +. Os sufixos nativos são:

`+`   -> [ comando final] [parametro-1] 
`+gr` -> [ comando final] | grep [parametro-1]

Prefixos e posfixos podem ser usados de forma conjunta:

kgno-+ 'echo DRY: --[' ']--'

Com o comando final sendo:

echo DRY: --[ kubectl get nodes ]

Instalação

Para instalar é simples. Basta baixar o repositório git e fazer o source do autokubectl.sh.

Ele funciona como um hook que executa quando um comando não é encontrado pelo shell em execução. Portanto, se já existe o comando/alias/função kgpo, então este será executado no lugar do autokubectl. Fica a seu critério decidir quais comandos deseja manter e quais quer executar via autokubectl.

git clone https://github.com/caruccio/autokube
cd autokube
make install-user

O comando acima clona o repositório para o diretório local (escolha um de sua preferência) e instala o source no seu ~/.bashrc, ~/.zshrc. Se nenhum deles existir, o arquivo usado será ~/.profile.

É necessário iniciar uma nova sessão de shell, ou para usar imediatamente execute source ~/.bashrc (ou source ~/.zshrc).

Caso deseje instalar no sistema operacional, execute o comando

sudo make install

Este último apenas copia os scripts necessário para /usr/local/bin e /etc/profile.d.

Configuração

Para criar ou alterar abreviações, basta adicioná-las aos arquivos /etc/autokubectl ou ~/.autokubectl. Estes arquivos são lidos sempre que o autokubectl é executado, e possuem validade imediata.

verb:
    wapo: wait --for=condition=Ready pod/%s
    evpo: alpha events --for pod/%s
    pug: deprecations   ## https://kubepug.xyz/
resource:
    po: pod -n default            # substitui `pod` por `pod -n default`
    hr: helmrelease
    hrepo: helmrepository
option:
    v5: -v=5
    v6: -v=6
prefix:
    dry: "echo DRY:"
suffix:
    wcl: "--no-headers | wc -l"

Agora você pode usar:

kgpo
kgnsv6
kevpon web-api default

Com os comandos finais sendo:

kubectl get pod -n default
kubectl get namespaces -v=6
kubectl alpha events --for pod/web-api --namespace=default


Banner

Conclusão

Para mais detalhes sobre a importância de usarmos nossas ferramentas de forma mais ágil, consulte o artigo do Marcelo Melo em getup.io/blog/dicas-aliases.

Como vocês podem ver, existem mil maneiras de executar kubectl. Invente a sua!

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