Início Rápido: Desenvolver no Serviço de Kubernetes do Azure (AKS) com o Helm
Helm é uma ferramenta de empacotamento de software livre que ajuda a instalar e gerenciar o ciclo de vida de aplicativos Kubernetes. Semelhante a gerenciadores de pacotes do Linux, como o APT e o Yum, o Helm gerencia gráficos do Kubernetes, que são pacotes de recursos de Kubernetes pré-configurados.
Neste guia de início rápido, você usa o Helm para empacotar e executar um aplicativo no AKS. Para obter mais informações sobre como instalar um aplicativo existente usando o Helm, confira Instalar aplicativos existentes com o Helm no AKS.
Pré-requisitos
- Uma assinatura do Azure. Caso não tenha uma assinatura do Azure, é possível criar uma conta gratuita.
- CLI do Azure ou Azure PowerShell instalados.
- Helm v3 instalado.
Criar um Registro de Contêiner do Azure
Você precisa armazenar suas imagens de contêiner em um Registro de Contêiner do Azure (ACR) para executar seu aplicativo no cluster do AKS usando o Helm. O seu nome do registro deve ser exclusivo no Azure e conter de 5 a 50 caracteres alfanuméricos. Somente são permitidos caracteres minúsculos. A SKU Basic é um ponto de entrada de otimização de custo para fins de desenvolvimento que fornece um equilíbrio entre o armazenamento e taxa de transferência.
Crie um grupo de recursos do Azure usando o comando az group create. O exemplo a seguir cria um grupo de recursos chamado myResourceGroup no local eastus.
az group create --name myResourceGroup --location eastus
Crie um Registro de Contêiner do Azure com um nome exclusivo chamando o comando az acr create. O exemplo a seguir cria um ACR chamado myhelmacr com o SKU Básico.
az acr create --resource-group myResourceGroup --name myhelmacr --sku Basic
Sua saída deve se parecer com o seguinte exemplo resumido. Anote o valor de loginServer do seu ACR para usar em uma etapa posterior.
{ "adminUserEnabled": false, "creationDate": "2023-12-26T22:36:23.998425+00:00", "id": "/subscriptions/<ID>/resourceGroups/myResourceGroup/providers/Microsoft.ContainerRegistry/registries/myhelmacr", "location": "eastus", "loginServer": "myhelmacr.azurecr.io", "name": "myhelmacr", "networkRuleSet": null, "provisioningState": "Succeeded", "resourceGroup": "myResourceGroup", "sku": { "name": "Basic", "tier": "Basic" }, "status": null, "storageAccount": null, "tags": {}, "type": "Microsoft.ContainerRegistry/registries" }
Criar um cluster do AKS
O novo cluster AKS precisa acessar seu ACR para efetuar pull das imagens de contêiner e executá-las.
Crie um cluster do AKS usando o comando az aks create com o parâmetro
--attach-acr
para conceder ao cluster acesso ao teu ACR. O exemplo a seguir cria um cluster do AKS denominado myAKSCluster e concede acesso ao ACR myhelmacr. Certifique-se de substituirmyhelmacr
pelo nome do seu ACR.az aks create --resource-group myResourceGroup --name myAKSCluster --location eastus --attach-acr myhelmacr --generate-ssh-keys
Conectar-se ao cluster do AKS
Para conectar um cluster do Kubernetes localmente, use o cliente de linha de comando do Kubernetes, kubectl. kubectl
já está instalado se você usa o Azure Cloud Shell.
Instale
kubectl
localmente usando o comando az aks install-cli.az aks install-cli
Configure o
kubectl
para se conectar ao cluster do Kubernetes usando o comando az aks get-credentials. O comando a seguir obtém as credenciais do cluster do AKS chamado myAKSCluster em myResourceGroup.az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
Baixar o aplicativo de exemplo
Este guia de início rápido usa o aplicativo de voto do Azure.
Clone o aplicativo do GitHub usando o comando
git clone
.git clone https://github.com/Azure-Samples/azure-voting-app-redis.git
Navegue até o diretório
azure-vote
usando o comandocd
.cd azure-voting-app-redis/azure-vote/
Compilar e enviar por push o aplicativo de exemplo para o ACR
Crie e envie por push a imagem para o seu ACR usando o comando az acr build. O exemplo a seguir cria uma imagem chamada azure-vote-front:v1 e a envia por push para o ACR myhelmacr. Certifique-se de substituir
myhelmacr
pelo nome do seu ACR.az acr build --image azure-vote-front:v1 --registry myhelmacr --file Dockerfile .
Observação
Você também pode importar gráficos do Helm para o ACR. Para saber mais, confira Enviar por push e efetuar pull de gráficos Helm para um registro de contêiner do Azure.
Criar um gráfico Helm
Gere o gráfico Helm usando o comando
helm create
.helm create azure-vote-front
Atualize azure-vote-front/Chart.yaml para adicionar uma dependência para o gráfico redis do repositório de gráficos
https://charts.bitnami.com/bitnami
e atualizar oappVersion
parav1
, como mostrado no exemplo a seguir:Observação
As versões da imagem de contêiner mostradas neste guia foram testadas para funcionar com este exemplo, mas podem não ser a versão mais recente disponível.
apiVersion: v2 name: azure-vote-front description: A Helm chart for Kubernetes dependencies: - name: redis version: 17.3.17 repository: https://charts.bitnami.com/bitnami ... # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. appVersion: v1
Atualize suas dependências de gráficos do Helm usando o comando
helm dependency update
.helm dependency update azure-vote-front
Atualize azure-vote-front/values.yaml com as seguintes alterações.
- Adicione uma seção Redis para definir os detalhes da imagem, a porta do contêiner e o nome da implantação.
- Adicione um backendName para conectar a parte de front-end à implantação do redis.
- Altere image.repository para
<loginServer>/azure-vote-front
. - Altere image.tag para
v1
. - Altere o service.type para LoadBalancer.
Por exemplo:
replicaCount: 1 backendName: azure-vote-backend-master redis: image: registry: mcr.microsoft.com repository: oss/bitnami/redis tag: 6.0.8 fullnameOverride: azure-vote-backend auth: enabled: false image: repository: myhelmacr.azurecr.io/azure-vote-front pullPolicy: IfNotPresent tag: "v1" ... service: type: LoadBalancer port: 80 ...
Adicione uma seção
env
a azure-vote-front/templates/deployment.yaml para aprovar o nome da implantação do redis.... containers: - name: {{ .Chart.Name }} securityContext: {{- toYaml .Values.securityContext | nindent 12 }} image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" imagePullPolicy: {{ .Values.image.pullPolicy }} env: - name: REDIS value: {{ .Values.backendName }} ...
Executar o gráfico Helm
Com o comando
helm install
, instale o aplicativo que usa o gráfico Helm.helm install azure-vote-front azure-vote-front/
Demora alguns minutos para o serviço retornar um endereço IP público. Monitore o andamento usando o comando
kubectl get service
com o argumento--watch
.kubectl get service azure-vote-front --watch
Quando o serviço estiver pronto, o valor
EXTERNAL-IP
será alterado de<pending>
para um endereço IP. PressioneCTRL+C
para interromper o processo de inspeçãokubectl
.NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE azure-vote-front LoadBalancer 10.0.18.228 <pending> 80:32021/TCP 6s ... azure-vote-front LoadBalancer 10.0.18.228 52.188.140.81 80:32021/TCP 2m6s
Navegue até o balanceador de carga do aplicativo em um navegador usando o
<EXTERNAL-IP>
para ver o aplicativo de exemplo.
Excluir o cluster
Remova o seu grupo de recursos, cluster do AKS, registro de contêiner do Azure, imagens de contêiner armazenadas no ACR e todos os recursos relacionados usando o comando az group delete com o parâmetro
--yes
para confirmar a exclusão e o parâmetro--no-wait
para retornar ao prompt de comando sem precisar aguardar a conclusão da operação.az group delete --name myResourceGroup --yes --no-wait
Observação
Se você criou seu cluster do AKS com uma identidade gerenciada atribuída pelo sistema (a opção de identidade padrão neste guia de início rápido), a identidade é gerenciada pela plataforma e não requer remoção.
Se você criou seu cluster do AKS com uma entidade de serviço, a entidade de serviço não é removida quando você exclui o cluster. Para remover a entidade de serviço, leia as Considerações sobre a entidade de serviço do AKS e sua exclusão.
Próximas etapas
Para obter mais informações sobre como usar o Helm, confira a documentação do Helm.
Azure Kubernetes Service