Tutorial

Como instalar softwares em clusters do Kubernetes com o gerenciador de pacotes Helm 3

Kubernetes

Introdução

O Helm é um gerenciador de pacotes para o Kubernetes que permite que os desenvolvedores e operadores configurem e implantem mais facilmente aplicativos nos clusters do Kubernetes.

Neste tutorial, você vai configurar o Helm 3 e usá-lo para instalar, reconfigurar, reverter e excluir uma instância do aplicativo Painel de Controle (Dashboard) do Kubernetes. O painel é uma GUI oficial do Kubernetes baseada em Web.

Para obter uma visão geral abstrata do Helm e de seu ecossistema de empacotamento, leia nosso artigo Uma introdução ao Helm.

Pré-requisitos

Para este tutorial, você precisará de:

  • Um cluster do Kubernetes com controle de acesso baseado em função (RBAC) habilitado. O Helm 3.1 é compatível com os clusters das versões 1.14 a 1.17. Para obter mais informações, consulte a página de Versões do Helm.
  • A ferramenta kubectl de linha de comando instalada em sua máquina local, configurada para se conectar ao seu cluster. Você pode ler mais sobre como instalar o kubectl na documentação oficial.

Você pode testar sua conectividade com o seguinte comando:

  • kubectl cluster-info

Se não houver erros, você está conectado ao cluster. Se acessar vários clusters com o kubectl, certifique-se de verificar se você selecionou o contexto de cluster correto:

  • kubectl config get-contexts
Output
CURRENT NAME CLUSTER AUTHINFO NAMESPACE * do-fra1-helm3-example do-fra1-helm3-example do-fra1-helm3-example-admin

Neste exemplo, o asterisco (*) indica que estamos conectados ao cluster do-fra1-helm3-example. Para trocar os clusters execute:

  • kubectl config use-context context-name

Quando estiver conectado ao cluster correto, continue para o Passo 1 para começar a instalar o Helm.

Passo 1 — Como instalar o Helm

Primeiro, você instalará o utilitário de linha de comando do helm em sua máquina local. O Helm fornece um script que lida com o processo de instalação no MacOS, Windows ou Linux.

Mude para um diretório gravável e baixe o script do repositório do GitHub do Helm:

  • cd /tmp
  • curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3

Crie o executável do script com o chmod:

  • chmod u+x get_helm.sh

Você pode usar o seu editor de texto favorito para abrir o script e inspecioná-lo, a fim de garantir que esteja seguro. Quando estiver satisfeito, execute-o:

  • ./get_helm.sh

Você pode ser solicitado a colocar sua senha. Digite a senha e pressione ENTER para continuar.

O resultado ficará parecido com este:

Output
Downloading https://get.helm.sh/helm-v3.1.2-linux-amd64.tar.gz Preparing to install helm into /usr/local/bin helm installed into /usr/local/bin/helm

Agora que o Helm está instalado, você está pronto para usar o Helm para instalar seu primeiro chart.

Passo 2 — Instalando um chart do Helm

Os pacotes de software do Helm são chamados de charts. Existe um repositório de charts coletados chamado stable, constituído em sua maioria, por charts comuns, que podem ser vistos no repositório GitHub deles. O Helm não vem pré-configurado para esse repositório. Assim, será necessário adicioná-lo manualmente. Agora, como um exemplo, você instalará o Painel de Controle (Dashboard) do Kubernetes.

Adicione o repositório stable executando:

  • helm repo add stable https://kubernetes-charts.storage.googleapis.com

O resultado será:

Output
"stable" has been added to your repositories

Em seguida, use o helm para instalar o pacote kubernetes-dashboard a partir do repositório stable:

  • helm install dashboard-demo stable/kubernetes-dashboard --set rbac.clusterAdminRole=true

O parâmetro --set permite que você personalize as variáveis de chart, as quais o chart expõe para que você possa personalizar sua configuração. Aqui, defina a variável rbac.clusterAdminRole para true, concedendo ao Painel de Controle (Dashboard) do Kubertnetes acesso total ao seu cluster.

O resultado se parecerá com o seguinte:

Output
NAME: dashboard-demo LAST DEPLOYED: Tue Mar 31 15:04:19 2020 NAMESPACE: default STATUS: deployed REVISION: 1 TEST SUITE: None NOTES: ...

Observe a linha NAME, em destaque no exemplo de resultado acima. Neste caso, você especificou o nome dashboard-demo. Esse é o nome da versão. Um release do Helm é uma implantação única de um chart com uma configuração específica. Você pode implantar várias versões do mesmo chart, cada qual com sua própria configuração.

Você pode listar todas as versões no cluster:

  • helm list

O resultado será como este:

Output
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION dashboard-demo default 1 2020-03-31 15:04:19.324774799 +0000 UTC deployed kubernetes-dashboard-1.10.1 1.10.1

Agora, use o kubectl para verificar se um novo serviço foi implantado no cluster:

  • kubectl get services

O resultado ficará parecido com este:

Output
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE dashboard-demo-kubernetes-dashboard ClusterIP 10.245.115.214 <none> 443/TCP 4m44s kubernetes ClusterIP 10.245.0.1 <none> 443/TCP 19m

Note que, por padrão, o nome de serviço correspondente à versão é uma combinação do nome da versão do Helm e o nome do chart.

Agora que você implantou o aplicativo, use o Helm para alterar sua configuração e atualizar a implantação.

Passo 3 — Atualizando uma versão

O comando helm upgrade pode ser usado para atualizar uma versão com um chart novo ou atualizado, ou atualizar suas opções de configuração (variáveis).

Você fará uma alteração simples à versão do dashboard-demo para demonstrar o processo de atualização e reversão: atualizaremos o nome do serviço do painel para apenas kubernetes-dashboard, em vez de dashboard-demo-kubernetes-dashboard.

O chart kubernetes-dashboard fornece uma opção de configuração fullnameOverride para controlar o nome do serviço. Para renomear a versão, execute helm upgrade com esta opção definida:

  • helm upgrade dashboard-demo stable/kubernetes-dashboard --set fullnameOverride="kubernetes-dashboard" --reuse-values

Ao enviar o argumento --reuse-values, você assegura que as variáveis de chart previamente set (definidas) não serão redefinidas pelo processo de atualização.

Você verá um resultado parecido com o passo inicial do helm install.

Verifique se seus serviços do Kubernetes refletem os valores atualizados:

  • kubectl get services

O resultado ficará parecido com o seguinte:

Output
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.245.0.1 <none> 443/TCP 38m kubernetes-dashboard ClusterIP 10.245.49.157 <none> 443/TCP 8s

Note que o nome do serviço foi atualizado para o novo valor.

Nota: neste ponto, você pode carregar o Painel do Kubernetes no seu navegador e verificá-lo. Para fazer isso, execute primeiro o seguinte comando:

  • kubectl proxy

Isso cria um proxy que permite que você acesse recursos de cluster remotos do seu computador local. Com base nas instruções anteriores, o seu serviço de painel é nomeado como kubernetes-dashboard e está executando no namespace default. Agora, você pode acessar o painel no seguinte URL:

http://localhost:8001/api/v1/namespaces/default/services/https:kubernetes-dashboard:https/proxy/

As instruções para a utilização prática do painel estão fora do escopo deste tutorial, mas você pode ler os documentos oficiais do Painel de Controle (Dashboard) do Kubernetes para obter mais informações.

Em seguida, você verá a capacidade do Helm para reverter e excluir versões.

Passo 4 — Revertendo e excluindo uma versão

Quando você atualizou a versão dashboard-demo no passo anterior, você criou uma segunda revisão da versão. O Helm retém todos os detalhes das versões anteriores, para o caso de você ter que reverter para uma configuração ou chart anteriores.

Use o helm list para verificar a versão novamente:

  • helm list

Você verá o seguinte resultado:

Output
NAME REVISION UPDATED STATUS CHART NAMESPACE dashboard-demo 2 Wed Aug 8 20:13:15 2018 DEPLOYED kubernetes-dashboard-0.7.1 default

A coluna REVISION informa a você que essa agora será a segunda revisão.

Use o helm rollback para reverter para a primeira revisão:

  • helm rollback dashboard-demo 1

Você deve ver o seguinte resultado, indicando que a reversão foi bem-sucedida:

Output
Rollback was a success! Happy Helming!

Neste ponto, se você executar o kubectl get services novamente, verá que o nome do serviço mudou para seu valor anterior. O Helm reimplantou o aplicativo com a configuração da revisão 1.

As versões do Helm podem ser excluídas com o comando helm delete:

  • helm delete dashboard-demo

O resultado será:

Output
release "dashboard-demo" uninstalled

Tente listar as versões do Helm:

  • helm list

Verá que não há versões disponíveis:

Output
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION

Agora, a versão foi realmente excluída e você pode reutilizar seu nome.

Conclusão

Neste tutorial, você instalou a ferramenta de linha de comando do helm e explorou a instalação, a atualização, a reversão e a exclusão de charts e versões do Helm, gerenciando o chart kubernetes-dashboard.

Para saber mais sobre o Helm e os charts do Helm, consulte a documentação oficial do Helm.

0 Comments

Creative Commons License