Partilhar via


Início Rápido: Desenvolver no Azure Kubernetes Service (AKS) com 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.

Prerequisites

Criar um Registo de Contentores do Azure

Precisa de armazenar as suas imagens de contentores num Azure Container Registry (ACR) para executar a sua aplicação no cluster AKS usando Helm. O nome do seu registo deve ser único no Azure e conter entre 5 a 50 caracteres alfanuméricos. Apenas caracteres minúsculos são permitidos. O SKU básico é um ponto de entrada com custo otimizado para fins de desenvolvimento que fornece um equilíbrio entre armazenamento e taxa de transferência.

  1. Crie um grupo de recursos 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 Azure Container Registry com um nome único 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 utilização pelo seu ACR num passo 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 seu novo cluster AKS precisa de aceder ao seu ACR para obter as imagens de contentor 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 usares 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 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
    

Baixe o aplicativo de exemplo

Este quickstart utiliza a aplicação Azure Vote.

  1. Clone a aplicação a partir de GitHub usando o comando git clone.

    git clone https://github.com/Azure-Samples/azure-voting-app-redis.git
    
  2. Navegue até o azure-vote diretório usando o cd 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 mais informações, consulte Enviar e buscar gráficos Helm para um registo de contentores do Azure.

Cria o teu Helm chart

  1. Gere o Helm chart usando o comando helm create.

    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 frontal à implementaçã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 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. Pressione CTRL+C para parar o processo de kubectl monitorizaçã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 <EXTERNAL-IP> para ver o aplicativo de exemplo.

Eliminar o cluster

  • Remova o seu grupo de recursos, cluster AKS, Azure registo de contentores, imagens de contentor armazenadas no ACR e todos os recursos relacionados usando o comando az group delete com o parâmetro --yes para confirmar a eliminação e o parâmetro --no-wait para regressar ao prompt de comandos sem esperar que a operação termine.

    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 o principal de serviço, consulte Considerações e exclusão do principal de serviço AKS.

Próximos passos

Para obter mais informações sobre como usar o Helm, consulte a documentação do Helm.