Introdução ao Krew, o gerenciador de plugins Kubectl

0
23


Krew é um gerenciador de pacotes para Kubectl, a CLI oficial do Kubernetes. Com o Krew, você pode encontrar, instalar e atualizar plugins Kubectl que estendem a CLI com recursos adicionais.

O mecanismo de plug-in do Kubectl suporta vários métodos de instalação de plug-in. A maneira mais fácil é colocar plugins diretamente em um diretório que esteja em seu PATH. Este é um processo manual que não oferece nenhuma maneira de atualizar o plug-in à medida que novas versões são lançadas.

Krew fornece funcionalidade comum de gerenciamento de pacotes para o ecossistema de plugins Kubectl. Ele mantém um índice público de pacotes conhecidos e também suporta índices de terceiros. O último permite que você publique plugins de forma privada dentro de uma organização ou equipe.

equipe de instalação

Krew é uma ferramenta de código aberto que faz parte do projeto Kubernetes. No entanto, ele não vem com o Kubectl. Para começar a usar o Krew, você deve baixar e instalar manualmente a versão mais recente. As distribuições atuais do Krew funcionam com Kubectl v1.12 e posterior.

Os downloads estão disponíveis na página de lançamentos do GitHub do projeto. Os tarballs de distribuição contêm o binário Krew. Execute seu script de instalação para terminar de adicionar o Krew ao seu sistema:

$ ./krew-linux_amd64 install krew

Um script completo que baixa e instala automaticamente a distribuição correta do Krew para seu sistema está disponível na documentação.

Em seguida, você precisa atualizar seu PATH para incluir Krew bin diretório. Isso está dentro $KREW_ROOT que geralmente é $HOME/.krew. Os executáveis ​​do plugin Kubectl que você instalar serão armazenados dentro do bin subdiretório.

$ export PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH"

Agora você deve ser capaz de usar o Krew através do kubectl krew domínio:

~$ kubectl krew
krew is the kubectl plugin manager.
You can invoke krew through kubectl: "kubectl krew [command]..."

Usage:
  kubectl krew [command]
...

Atualização do índice do plug-in

Krew’s Plugin Index cataloga todos os plugins atualmente disponíveis que você pode instalar. Funciona de forma semelhante às listas de pacotes usadas pelos gerenciadores de pacotes no nível do sistema operacional, como apt.

Atualize o índice periodicamente para que sua instalação do Krew tenha acesso às versões mais recentes de todos os plugins disponíveis:

$ kubectl krew update
Updated the local copy of plugin index.

Instalação de plug-ins

a install O comando adiciona novos plugins ao Kubectl. Você pode instalar qualquer um dos plugins listados no índice do Krew. Krew se encarrega de baixar o plugin e registrá-lo no Kubectl.

$ kubectl krew install ctx
Updated the local copy of plugin index.
Installing plugin: ctx
Installed plugin: ctx
...

O Krew atualiza automaticamente seu índice de plugins antes da instalação, garantindo que você obtenha a versão mais recente do novo plugin. Quando a instalação estiver concluída, você verá algumas informações básicas sobre o autor do plug-in na parte inferior da saída do comando.

Agora você pode usar os comandos do plugin através do kubectl CLI:

$ kubectl ctx my-context

Atualização para novas versões de plugins

Uma das maiores vantagens do Krew é seu sistema integrado de atualização de plugins. executando o upgrade O comando atualizará o índice do pacote e atualizará todos os plug-ins instalados para a versão mais recente. Este processo é totalmente automático.

$ kubectl krew upgrade
Updated the local copy of plugin index.
...

Você pode atualizar os plugins individualmente passando seus nomes para o upgrade domínio:

$ kubectl krew upgrade ctx

Se você quiser remover um plug-in, forneça seu nome ao uninstall domínio:

$ kubectl krew uninstall ctx

Krew irá certificar-se de que o plugin seja completamente removido do seu sistema.

a list O comando exibe todos os seus plugins e suas versões instaladas:

~$ kubectl krew list
PLUGIN  VERSION
ctx     v0.9.4
krew    v0.4.3
ns      v0.9.4

O próprio Krew aparece na lista de plugins e é suportado pelo sistema de atualização. Corre upgrade qualquer upgrade krew irá buscar e instalar a versão mais recente do Krew antes que seus plugins sejam atualizados.

Pesquisa de plug-ins

a search O comando permite que você navegue pelo índice de pacotes do Krew a partir do seu terminal.

~$ kubectl krew search cert-manager
NAME          DESCRIPTION                                        INSTALLED
cert-manager  Manage cert-manager resources inside your cluster  no

Depois de encontrar um plug-in de seu interesse, execute o info Comando para obter mais informações sobre ele. Isso revela o número da versão atual do plug-in, um link para seu site e uma breve descrição fornecida pelo autor.

~$ kubectl krew info cert-manager
NAME: cert-manager
INDEX: default
URI: https://github.com/jetstack/cert-manager/releases/download/v1.7.0/kubectl-cert_manager-linux-amd64.tar.gz
SHA256: 73618617b9ec42994c3ea77bbc8be743e382501d42ad2ee7aeca0d32c15655c0
VERSION: v1.7.0
HOMEPAGE: https://github.com/jetstack/cert-manager
DESCRIPTION: 
The official plugin accompanying cert-manger, a Kubernetes add-on to
automate the management and issuance of TLS certificates. Allows for
direct interaction with cert-manager resources e.g. manual renewal of
Certificate resources.

Usando índices personalizados

Krew suporta índices personalizados que facilitam a instalação de plugins de suas próprias fontes. Índices são simplesmente repositórios Git com um plugins pasta contendo manifestos YAML. Esses arquivos definem os plugins que estão disponíveis para instalação. A estrutura de índice padrão do Krew é um modelo útil ao configurar o seu próprio.

Para adicionar um índice, passe o URL do seu repositório para o index add domínio:

$ kubectl krew index add custom-index https://example.com/krew/index.git

Para referenciar plugins em seu índice, prefixe seus nomes com o nome do índice escolhido:

$ kubectl krew install custom-index/example-plugin

Quando nenhum prefixo é dado, Krew usa o default/ prefixo em vez disso. Isso sempre se refere ao índice de plugins embutido do Krew. Se você preferir direcionar nomes de plugins não prefixados para seu próprio índice, defina o KREW_DEFAULT_INDEX_URI variável de ambiente para a URL do seu repositório:

$ export KREW_DEFAULT_INDEX_URI="https://example.com/krew/index.git"

# Automatically resolved to the custom index
$ kubectl krew install example-plugin

Publicando seus próprios plugins

É muito fácil distribuir seus próprios plugins aos usuários através do Krew. Primeiro você precisa criar um arquivo do conteúdo do seu plugin Kubectl, seja como .tar.gz qualquer .zip processos. Faça o upload para um local acessível publicamente: o site do seu projeto ou a página de lançamentos do GitHub são boas opções.

Escreva um manifesto do plugin Krew abaixo. Este é um arquivo YAML simples que fornece informações básicas sobre seu plug-in, como nome, descrição e versão atual. O manifesto também inclui a URL pública do arquivo de plug-in. Quando um usuário instala seu plugin, o Krew buscará seu arquivo na URL especificada no manifesto.

Depois de escrever seu manifesto, você pode enviá-lo para um repositório Git. Adicione esse repositório como um índice Krew personalizado para adicionar seu plug-in à sua instalação do Kubectl. Os pushes para o índice público do Krew são aceitos criando um pull request em seu repositório que adiciona seu manifesto ao plugins diretório.

conclusão

O Krew facilita a descoberta, instalação e gerenciamento de plug-ins do Kubernetes. É uma ferramenta útil e conveniente para quem usa plugins Kubectl. O Krew oferece uma experiência completa de gerenciamento de pacotes que inclui índices privados personalizados para suas ferramentas internas.

O índice público contém mais de 180 plugins que cobrem todos os aspectos do gerenciamento do Kubernetes. Algumas opções populares incluem cert-manager, para trabalhar com objetos Cert-Manager em seu cluster, tail, que oferece streaming de log simplificado, pontuação para análise estática de seus objetos e ctx e ns para alternar mais rapidamente entre contextos e namespaces.