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, vamos configurar o Helm e usá-lo para instalar, reconfigurar, reverter e então excluir uma instância do aplicativo de painel do Kubernetes. O painel é uma GUI oficial do Kubernetes baseada em Web.
Para uma visão conceitual do Helm e seu ecossistema de empacotamento, leia nosso artigo Uma introdução ao Helm.
Para este tutorial, você precisará de:
Um cluster do Kubernetes 1.8+ com controle de acesso baseado na função (RBAC) habilitado
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
OutputCURRENT NAME CLUSTER AUTHINFO NAMESPACE
* do-nyc1-k8s-example do-nyc1-k8s-example do-nyc1-k8s-example-admin
docker-for-desktop docker-for-desktop-cluster docker-for-desktop
Neste exemplo, o asterisco (*
) indica que estamos conectados ao cluster do-nyc1-k8s-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.
Primeiro, vamos instalar o utilitário de linha de comando helm
na nossa 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 https://raw.githubusercontent.com/kubernetes/helm/master/scripts/get > install-helm.sh
Crie o executável do script com o chmod
:
- chmod u+x install-helm.sh
Neste ponto, você pode usar seu editor de texto favorito para abrir o script e inspecioná-lo para garantir que ele está seguro. Quando estiver satisfeito, execute-o:
- ./install-helm.sh
Você pode ser solicitado a colocar sua senha. Digite ela e pressione ENTER
.
Outputhelm installed into /usr/local/bin/helm
Run 'helm init' to configure helm.
Em seguida, vamos concluir a instalação instalando alguns componentes do Helm no nosso cluster.
O Tiller é um companheiro do comando helm
que é executado no seu cluster, recebendo comandos do helm
e se comunicando diretamente com a API do Kubernetes para fazer o trabalho real de criar e excluir recursos. Para dar ao Tiller as permissões que ele precisa para ser executado no cluster, vamos fazer um recurso do Kubernetes, o serviceaccount
.
Nota: vamos ligar esse serviceaccount
à função do cluster cluster-admin. Isso dará ao superusuário do serviço tiller
acesso ao cluster e permitirá que ele instale todos os tipos de recurso em todos os namespaces. Isso é bom para explorar o Helm, mas você pode querer uma configuração mais fechada para um cluster do Kubernetes de produção.
Por favor, consulte a documentação oficial do Helm RBAC para mais informações sobre a configuração de diferentes cenários RBAC para o Tiller.
Crie o tiller serviceaccount
:
- kubectl -n kube-system create serviceaccount tiller
Em seguida, vincule o tiller serviceaccount
à função cluster-admin:
- kubectl create clusterrolebinding tiller --clusterrole cluster-admin --serviceaccount=kube-system:tiller
Agora, podemos executar o helm init
, que instala o Tiller no nosso cluster, junto com algumas tarefas de organização local, como baixar os detalhes do repositório stable:
- helm init --service-account tiller
Output. . .
Tiller (the Helm server-side component) has been installed into your Kubernetes Cluster.
Please note: by default, Tiller is deployed with an insecure 'allow unauthenticated users' policy.
For more information on securing your installation see: https://docs.helm.sh/using_helm/#securing-your-helm-installation
Happy Helming!
Para verificar se o Tiller está funcionando, liste os módulos no namespace kube-system:
- kubectl get pods --namespace kube-system
OutputNAME READY STATUS RESTARTS AGE
. . .
kube-dns-64f766c69c-rm9tz 3/3 Running 0 22m
kube-proxy-worker-5884 1/1 Running 1 21m
kube-proxy-worker-5885 1/1 Running 1 21m
kubernetes-dashboard-7dd4fc69c8-c4gwk 1/1 Running 0 22m
tiller-deploy-5c688d5f9b-lccsk 1/1 Running 0 40s
O nome do módulo do Tiller começa com o prefixo tiller-deploy-
.
Agora que instalamos ambos os componentes do Helm, estamos prontos para usar o helm
para instalar nosso primeiro aplicativo.
Os pacotes de software do Helm são chamados de charts. O Helm vem pré-configurado com um repositório de charts coletados chama do stable. Você pode verificar os gráficos disponíveis nos seus repositórios do GitHub. Vamos instalar o Painel do Kubernetes como um exemplo.
Use o helm
para instalar o pacote kubernetes-dashboard
do repositório stable
:
- helm install stable/kubernetes-dashboard --name dashboard-demo
OutputNAME: dashboard-demo
LAST DEPLOYED: Wed Aug 8 20:11:07 2018
NAMESPACE: default
STATUS: DEPLOYED
. . .
Observe a linha NAME
, em destaque no exemplo de resultado acima. Neste caso, especificamos o nome dashboard-demo
. Este é o nome do nosso release. Um release do Helm é uma única implantação de um chart com uma configuração específica. Você pode implantar vários releases do mesmo chart, tendo cada um sua própria configuração.
Se não especificar seu próprio nome de release usando --name
, o Helm criará um nome aleatório para você.
Podemos pedir ao Helm uma lista de releases neste cluster:
- helm list
OutputNAME REVISION UPDATED STATUS CHART NAMESPACE
dashboard-demo 1 Wed Aug 8 20:11:11 2018 DEPLOYED kubernetes-dashboard-0.7.1 default
Agora, podemos usar o kubectl
para verificar se um novo serviço foi implantado no cluster:
- kubectl get services
OutputNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
dashboard-demo-kubernetes-dashboard ClusterIP 10.32.104.73 <none> 443/TCP 51s
kubernetes ClusterIP 10.32.0.1 <none> 443/TCP 34m
Note que por padrão, o nome de serviço correspondente ao nosso release é uma combinação do nome de release do Helm e o nome do chart.
Agora que implantamos o aplicativo, vamos usar o Helm para alterar sua configuração e atualizar a implantação.
O comando helm upgrade
pode ser usado para atualizar um release com um chart novo ou atualizado, ou atualizar as suas opções de configuração.
Vamos fazer uma alteração simples no nosso release dashboard-demo
para demonstrar o processo de atualização e reversão: atualizaremos o nome do serviço do painel para apenas 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. Vamos executar o helm upgrade
com esta opção definida:
- helm upgrade dashboard-demo stable/kubernetes-dashboard --set fullnameOverride="dashboard"
Você verá um resultado similar ao passo inicial helm install
.
Verifique se seus serviços do Kubernetes refletem os valores atualizados:
- kubectl get services
OutputNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.32.0.1 <none> 443/TCP 36m
dashboard ClusterIP 10.32.198.148 <none> 443/TCP 40s
Nosso nome de 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. Baseado nas instruções anteriores, seu serviço de dashboard é chamado kubernetes-dashboard
e ele está funcionando no namespace default
. Agora, você pode acessar o painel no seguinte URL:
http://localhost:8001/api/v1/namespaces/default/services/https:dashboard:/proxy/
Se necessário, substitua seu próprio nome de serviço e namespace pelas porções destacadas. As instruções para de fato usar o painel estão fora do escopo deste tutorial, mas você pode ler os docs oficiais do Painel do Kubernetes para mais informações.
Em seguida, vamos ver a capacidade do Helm para reverter releases.
Quando atualizamos nosso release dashboard-demo
no passo anterior, criamos uma segunda _revisio_n do release. O Helm retém todos os detalhes dos release anteriores caso precise reverter para uma configuração ou chart prévia.
Use o helm list
para verificar o release novamente:
- helm list
OutputNAME 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
nos diz que essa é agora 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:
OutputRollback was a success! Happy Helming!
Neste ponto, caso execute o kubectl get services
novamente, verá que o nome de serviço mudou para seu valor anterior. O Helm reimplantou o aplicativo com a configuração da revisão 1.
Em seguida, vamos ver como excluir releases com o Helm.
Os releases do Helm podem ser excluídos com o comando helm delete
:
- helm delete dashboard-demo
Outputrelease "dashboard-demo" deleted
Embora o release tenha sido excluído e o aplicativo do painel não esteja mais em funcionamento, o Helm salva todas as informações de revisão caso queira reimplantar o release. Se você tentasse usar o helm install
em um novo release dashboard-demo
agora, receberia um erro:
Error: a release named dashboard-demo already exists.
Se você usar a flag --deleted
para listar seus releases excluídos, verá que o release ainda está presente:
- helm list --deleted
OutputNAME REVISION UPDATED STATUS CHART NAMESPACE
dashboard-demo 3 Wed Aug 8 20:15:21 2018 DELETED kubernetes-dashboard-0.7.1 default
Para realmente excluir o release e purgar todas as revisões antigas, utilize a flag --purge
com o comando helm delete
:
- helm delete dashboard-demo --purge
Agora, o release foi realmente excluído e você pode reutilizar seu nome.
Neste tutorial, instalamos a ferramenta de linha de comando helm
e seu serviço companheiro tiller
. Também exploramos instalar, atualizar, reverter e excluir charts e releases do Helm.
Para maiores informações sobre o Helm e charts do Helm, consulte a documentação oficial do Helm.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!