Instalar aplicativos existentes com o Helm no Serviço Kubernetes do Azure (AKS)
O Helm é uma ferramenta de empacotamento de código aberto que ajuda você a instalar e gerenciar o ciclo de vida dos aplicativos Kubernetes. Semelhante aos gerenciadores de pacotes Linux, como APT e Yum, você pode usar o Helm para gerenciar gráficos do Kubernetes, que são pacotes de recursos do Kubernetes pré-configurados.
Este artigo mostra como configurar e usar o Helm em um cluster Kubernetes no Serviço Kubernetes do Azure (AKS).
Antes de começar
- Este artigo pressupõe que você tenha um cluster AKS existente. Se você precisar de um cluster AKS, crie um usando a CLI do Azure, o Azure PowerShell ou o portal do Azure.
- Seu cluster AKS precisa ter um ACR integrado. Para obter detalhes sobre como criar um cluster AKS com um ACR integrado, consulte Autenticar com o Registro de Contêiner do Azure do Serviço Kubernetes do Azure.
- Você também precisa da CLI Helm instalada, que é o cliente que é executado em seu sistema de desenvolvimento. Ele permite que você inicie, pare e gerencie aplicativos com o Helm. Se você usar o Azure Cloud Shell, a CLI Helm já está instalada. Para obter instruções de instalação em sua plataforma local, consulte Instalando o Helm.
Importante
Helm destina-se a ser executado em nós Linux. Se você tiver nós do Windows Server em seu cluster, deverá garantir que os pods Helm estejam agendados apenas para serem executados em nós Linux. Você também precisa garantir que todos os gráficos Helm instalados também estejam programados para serem executados nos nós corretos. Os comandos neste artigo usam seletores de nó para garantir que os pods estejam agendados para os nós corretos, mas nem todos os gráficos Helm podem expor um seletor de nós. Você também pode considerar o uso de outras opções em seu cluster, como manchas.
Verifique a sua versão do Helm
Use o comando para verificar se você tem o
helm version
Helm 3 instalado.helm version
O exemplo de saída a seguir mostra o Helm versão 3.0.0 instalado:
version.BuildInfo{Version:"v3.0.0", GitCommit:"e29ce2a54e96cd02ccfce88bee4f58bb6e2a28b6", GitTreeState:"clean", GoVersion:"go1.13.4"}
Instale um aplicativo com o Helm v3
Adicionar repositórios Helm
Adicione o repositório ingress-nginx usando o comando helm repo .
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
Encontrar gráficos Helm
Pesquise gráficos Helm pré-criados usando o comando helm search .
helm search repo ingress-nginx
A saída de exemplo condensada a seguir mostra alguns dos gráficos Helm disponíveis para uso:
NAME CHART VERSION APP VERSION DESCRIPTION ingress-nginx/ingress-nginx 4.7.0 1.8.0 Ingress controller for Kubernetes using NGINX a...
Atualize a lista de gráficos usando o comando helm repo update .
helm repo update
A saída de exemplo a seguir mostra uma atualização de repositório bem-sucedida:
Hang tight while we grab the latest from your chart repositories... ...Successfully got an update from the "ingress-nginx" chart repository Update Complete. ⎈ Happy Helming!⎈
Importar as imagens do gráfico Helm para o ACR
Este artigo usa o gráfico Helm do controlador de ingresso NGINX, que se baseia em três imagens de contêiner.
Use
az acr import
para importar as imagens do controlador de entrada NGINX para o ACR.REGISTRY_NAME=<REGISTRY_NAME> CONTROLLER_REGISTRY=registry.k8s.io CONTROLLER_IMAGE=ingress-nginx/controller CONTROLLER_TAG=v1.8.0 PATCH_REGISTRY=registry.k8s.io PATCH_IMAGE=ingress-nginx/kube-webhook-certgen PATCH_TAG=v20230407 DEFAULTBACKEND_REGISTRY=registry.k8s.io DEFAULTBACKEND_IMAGE=defaultbackend-amd64 DEFAULTBACKEND_TAG=1.5 az acr import --name $REGISTRY_NAME --source $CONTROLLER_REGISTRY/$CONTROLLER_IMAGE:$CONTROLLER_TAG --image $CONTROLLER_IMAGE:$CONTROLLER_TAG az acr import --name $REGISTRY_NAME --source $PATCH_REGISTRY/$PATCH_IMAGE:$PATCH_TAG --image $PATCH_IMAGE:$PATCH_TAG az acr import --name $REGISTRY_NAME --source $DEFAULTBACKEND_REGISTRY/$DEFAULTBACKEND_IMAGE:$DEFAULTBACKEND_TAG --image $DEFAULTBACKEND_IMAGE:$DEFAULTBACKEND_TAG
Nota
Além de importar imagens de contêiner para seu ACR, você também pode importar gráficos Helm para seu ACR. Para obter mais informações, consulte Enviar e puxar gráficos de leme para um registro de contêiner do Azure.
Executar gráficos Helm
Instale gráficos Helm usando o comando helm install e especifique um nome de versão e o nome do gráfico a ser instalado.
Gorjeta
O exemplo a seguir cria um namespace Kubernetes para os recursos de entrada chamados ingress-basic e destina-se a funcionar dentro desse namespace. Especifique um namespace para seu próprio ambiente, conforme necessário.
ACR_URL=<REGISTRY_URL> # Create a namespace for your ingress resources kubectl create namespace ingress-basic # Use Helm to deploy an NGINX ingress controller helm install ingress-nginx ingress-nginx/ingress-nginx \ --version 4.0.13 \ --namespace ingress-basic \ --set controller.replicaCount=2 \ --set controller.nodeSelector."kubernetes\.io/os"=linux \ --set controller.image.registry=$ACR_URL \ --set controller.image.image=$CONTROLLER_IMAGE \ --set controller.image.tag=$CONTROLLER_TAG \ --set controller.image.digest="" \ --set controller.admissionWebhooks.patch.nodeSelector."kubernetes\.io/os"=linux \ --set controller.service.annotations."service\.beta\.kubernetes\.io/azure-load-balancer-health-probe-request-path"=/healthz \ --set controller.admissionWebhooks.patch.image.registry=$ACR_URL \ --set controller.admissionWebhooks.patch.image.image=$PATCH_IMAGE \ --set controller.admissionWebhooks.patch.image.tag=$PATCH_TAG \ --set defaultBackend.nodeSelector."kubernetes\.io/os"=linux \ --set defaultBackend.image.registry=$ACR_URL \ --set defaultBackend.image.image=$DEFAULTBACKEND_IMAGE \ --set defaultBackend.image.tag=$DEFAULTBACKEND_TAG \ --set defaultBackend.image.digest=""
A saída de exemplo condensada a seguir mostra o status de implantação dos recursos do Kubernetes criados pelo gráfico Helm:
NAME: nginx-ingress LAST DEPLOYED: Wed Jul 28 11:35:29 2021 NAMESPACE: ingress-basic STATUS: deployed REVISION: 1 TEST SUITE: None NOTES: The ingress-nginx controller has been installed. It may take a few minutes for the LoadBalancer IP to be available. You can watch the status by running 'kubectl --namespace ingress-basic get services -o wide -w nginx-ingress-ingress-nginx-controller' ...
Obtenha o EXTERNAL-IP do seu serviço usando o
kubectl get services
comando.kubectl --namespace ingress-basic get services -o wide -w ingress-nginx-ingress-nginx-controller
A saída de exemplo a seguir mostra o EXTERNAL-IP para o serviço ingress-nginx-ingress-nginx-controller :
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR nginx-ingress-ingress-nginx-controller LoadBalancer 10.0.254.93 <EXTERNAL_IP> 80:30004/TCP,443:30348/TCP 61s app.kubernetes.io/component=controller,app.kubernetes.io/instance=nginx-ingress,app.kubernetes.io/name=ingress-nginx
Listar lançamentos
Obtenha uma lista de versões instaladas no cluster usando o
helm list
comando.helm list --namespace ingress-basic
A saída de exemplo a seguir mostra a versão ingress-nginx implantada na etapa anterior:
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION ingress-nginx ingress-basic 1 2021-07-28 11:35:29.9623734 -0500 CDT deployed ingress-nginx-3.34.0 0.47.0
Clean up resources (Limpar recursos)
A implantação de um gráfico Helm cria recursos do Kubernetes como pods, implantações e serviços.
Limpe os recursos usando o comando helm uninstall e especifique o nome da versão.
helm uninstall --namespace ingress-basic ingress-nginx
A saída de exemplo a seguir mostra que a versão chamada ingress-nginx foi desinstalada:
release "nginx-ingress" uninstalled
Exclua todo o namespace de exemplo junto com os recursos usando o comando e especifique seu nome de
kubectl delete
namespace.kubectl delete namespace ingress-basic
Próximos passos
Para obter mais informações sobre como gerenciar implantações de aplicativos Kubernetes com o Helm, consulte a documentação do Helm.
Azure Kubernetes Service