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

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.

  1. 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
    
  2. 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 substituir myhelmacr 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.

  1. Instale kubectl localmente usando o comando az aks install-cli .

    az aks install-cli
    
  2. 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.

  1. Clone o aplicativo do GitHub usando o git clone comando.

    git clone https://github.com/Azure-Samples/azure-voting-app-redis.git
    
  2. Navegue até o diretório usando o azure-votecd 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

  1. Gere seu gráfico de leme usando o helm create comando.

    helm create azure-vote-front
    
  2. 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 atualize appVersion para v1, 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
    
  3. Atualize as dependências do gráfico Helm usando o helm dependency update comando.

    helm dependency update azure-vote-front
    
  4. 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
    ...
    
  5. 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

  1. Instale seu aplicativo usando o gráfico Helm usando o helm install comando.

    helm install azure-vote-front azure-vote-front/
    
  2. Leva alguns minutos para o serviço retornar um endereço IP público. Monitore o progresso usando o comando com o kubectl get service--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. Pressione CTRL+C para parar o processo de kubectl 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
    
  3. Navegue até o balanceador de carga do seu aplicativo em um navegador usando o para ver o <EXTERNAL-IP> 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 exclusão e o --no-wait--yes 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.