Guia de início rápido: desenvolver no Serviço Kubernetes do Azure (AKS) com o Helm
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, o Helm gerencia gráficos Kubernetes, que são pacotes de recursos Kubernetes pré-configurados.
Neste início rápido, você usa o Helm para empacotar e executar um aplicativo no AKS. Para obter informações sobre como instalar um aplicativo existente usando o Helm, consulte Instalar aplicativos existentes com o Helm no AKS.
Pré-requisitos
- Uma subscrição do Azure. Se não tiver uma subscrição do Azure, pode criar uma conta gratuita.
- CLI do Azure ou Azure PowerShell instalado.
- Leme v3 instalado.
Criar um Azure Container Registry
Você precisa armazenar suas imagens de contêiner em um Registro de Contêiner do Azure (ACR) para executar seu aplicativo em seu cluster AKS usando o Helm. Seu nome do Registro deve ser exclusivo no Azure e conter de 5 a 50 caracteres alfanuméricos. Apenas caracteres minúsculos são permitidos. O SKU Básico é um ponto de entrada com otimização de custos para fins de desenvolvimento que fornece um equilíbrio de armazenamento e débito.
Crie um grupo de recursos do Azure usando o comando az group create . O exemplo seguinte cria um grupo de recursos com o nome myResourceGroup na localização 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 a SKU básica .
az acr create --resource-group myResourceGroup --name myhelmacr --sku Basic
Sua saída deve ser semelhante à saída de exemplo condensada a seguir. Anote o valor do seu loginServer para o seu ACR 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
Seu novo cluster AKS precisa acessar seu ACR para extrair as imagens de contêiner e executá-las.
Crie um cluster AKS usando o comando az aks create com o
--attach-acr
parâmetro para conceder ao cluster acesso ao seu ACR. O exemplo a seguir cria um cluster AKS chamado 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
Conecte-se ao cluster AKS
Para conectar um cluster Kubernetes localmente, use o cliente de linha de comando Kubernetes, kubectl. kubectl
já está instalado se você usar o Azure Cloud Shell.
Instale
kubectl
localmente usando o comando az aks install-cli .az aks install-cli
Configure
kubectl
para se conectar ao cluster do Kubernetes usando o comando az aks get-credentials . O comando a seguir obtém credenciais para o cluster AKS chamado myAKSCluster em myResourceGroup.az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
Transferir a aplicação de exemplo
Este guia de início rápido usa o aplicativo Azure Vote.
Clone o aplicativo do GitHub usando o
git clone
comando.git clone https://github.com/Azure-Samples/azure-voting-app-redis.git
Navegue até o
azure-vote
diretório usando ocd
comando.cd azure-voting-app-redis/azure-vote/
Crie e envie o aplicativo de exemplo para o ACR
Crie e envie 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 .
Nota
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.
Crie seu gráfico de leme
Gere seu gráfico de leme usando o
helm create
comando.helm create azure-vote-front
Atualize azure-vote-front/Chart.yaml para adicionar uma dependência para o gráfico redis do
https://charts.bitnami.com/bitnami
repositório de gráficos e atualizeappVersion
parav1
, conforme mostrado no exemplo a seguir:Nota
As versões de 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 as dependências do gráfico Helm usando o
helm dependency update
comando.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 do frontend à implantação do redis .
- Altere image.repository para
<loginServer>/azure-vote-front
. - Altere image.tag para
v1
. - Altere 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
env
seção a azure-vote-front/templates/deployment.yaml para passar 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 }} ...
Execute seu gráfico Helm
Instale seu aplicativo usando o gráfico Helm usando o
helm install
comando.helm install azure-vote-front azure-vote-front/
Leva alguns minutos para o serviço retornar um endereço IP público. Monitore o progresso usando o
kubectl get service
comando com o--watch
argumento.kubectl get service azure-vote-front --watch
Quando o serviço estiver pronto, o
EXTERNAL-IP
valor muda de<pending>
para um endereço IP. PressioneCTRL+C
para parar o processo dekubectl
observação.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 seu aplicativo em um navegador usando o
<EXTERNAL-IP>
para ver o aplicativo de exemplo.
Eliminar o cluster
Remova seu grupo de recursos, cluster 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 para confirmar a
--yes
exclusão e o--no-wait
parâmetro para retornar ao prompt de comando sem esperar a conclusão da operação.az group delete --name myResourceGroup --yes --no-wait
Nota
Se você criou seu cluster AKS com uma identidade gerenciada atribuída ao sistema (a opção de identidade padrão neste início rápido), a identidade é gerenciada pela plataforma e não requer remoção.
Se você criou seu cluster AKS com uma entidade de serviço, a entidade de serviço não será removida quando você excluir o cluster. Para remover a entidade de serviço, consulte Considerações e exclusão da entidade de serviço AKS.
Próximos passos
Para obter mais informações sobre como usar o Helm, consulte a documentação do Helm.
Azure Kubernetes Service