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

helm illustration for: 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

				
			
				
					
 [secondary_label 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 &lt;^&gt;context-name&lt;^&gt;

				
			

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:

				
					
[secondary_label 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á:

				
					
[secondary_label 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:

				
					
[secondary_label Output]

NAME: &lt;^&gt;dashboard-demo&lt;^&gt;

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:

				
					
[secondary_label 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:

				
					
[secondary_label Output]

NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE

dashboard-demo-kubernetes-dashboard ClusterIP 10.245.115.214 &lt;none&gt; 443/TCP 4m44s

kubernetes ClusterIP 10.245.0.1 &lt;none&gt; 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 &lt;^&gt;dashboard-demo&lt;^&gt; stable/kubernetes-dashboard &lt;^&gt;--set fullnameOverride="kubernetes-dashboard"&lt;^&gt; --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:

				
					
[secondary_label Output]

NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE

kubernetes ClusterIP 10.245.0.1 &lt;none&gt; 443/TCP 38m

kubernetes-dashboard ClusterIP 10.245.49.157 &lt;none&gt; 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:

				
					
[secondary_label Output]

NAME 	REVISION	UPDATED 	STATUS 	CHART 	NAMESPACE

dashboard-demo	&lt;^&gt;2&lt;^&gt; 	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 &lt;^&gt;dashboard-demo&lt;^&gt; 1

				
			

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

				
					
[secondary_label 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 &lt;^&gt;dashboard-demo&lt;^&gt;

				
			

O resultado será:

				
					
[secondary_label Output]

release "dashboard-demo" uninstalled

				
			

Tente listar as versões do Helm:

				
					
helm list

				
			

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

				
					
[secondary_label 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.