Inicio rápido: Desarrollo en Azure Kubernetes Service (AKS) con Helm

Helm es una herramienta de empaquetado de código abierto que ayuda a instalar y administrar el ciclo de vida de las aplicaciones de Kubernetes. Al igual que los administradores de paquetes de Linux, como APT y Yum, Helm administra los gráficos de Kubernetes, que son paquetes de recursos de Kubernetes preconfigurados.

En esta guía de inicio rápido, usará Helm para empaquetar y ejecutar una aplicación en AKS. Para más información sobre cómo instalar una aplicación existente con Helm, consulte Instalación de aplicaciones existentes con Helm en AKS.

Requisitos previos

Creación de una instancia de Azure Container Registry

Debe almacenar las imágenes de contenedor en una instancia de Azure Container Registry (ACR) para ejecutar la aplicación en el clúster de AKS mediante Helm. El nombre del registro debe ser único dentro de Azure y contener entre 5 y 50 caracteres alfanuméricos. Solo están permitidos los caracteres en minúscula. La SKU básica es un punto de entrada optimizado para costo con fines de desarrollo que proporciona un equilibrio entre almacenamiento y rendimiento.

  1. Cree un grupo de recursos de Azure con el comando az group create. En el ejemplo siguiente, se crea un grupo de recursos denominado myResourceGroup en la ubicación eastus.

    az group create --name myResourceGroup --location eastus
    
  2. Cree una instancia de Azure Container Registry con un nombre único mediante una llamada al comando az acr create. En el ejemplo siguiente se crea una instancia de ACR denominada myhelmacr con el SKU Básico.

    az acr create --resource-group myResourceGroup --name myhelmacr --sku Basic
    

    El resultado debería ser similar al siguiente ejemplo reducido. Tome nota del valor de loginServer para usarlo en la instancia de ACR en un paso 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"
    }
    

Creación de un clúster de AKS

El nuevo clúster de AKS necesita acceder a la instancia de ACR para extraer las imágenes de contenedor y ejecutarlas.

  • Cree un clúster de AKS con el comando az aks create y el parámetro --attach-acr para concederle acceso a su instancia de ACR. En el ejemplo siguiente, se crea un clúster de AKS denominado myAKSCluster y se le concede acceso a la instancia de ACR denominada myhelmacr. Asegúrese de reemplazar myhelmacr por el nombre de su instancia de ACR.

    az aks create --resource-group myResourceGroup --name myAKSCluster --location eastus --attach-acr myhelmacr --generate-ssh-keys
    

Conectarse al clúster AKS

Para conectar un clúster de Kubernetes de manera local, use kubectl, el cliente de línea de comandos de Kubernetes. Si usa Azure Cloud Shell, kubectl ya está instalado.

  1. Instale kubectl localmente mediante el comando az aks install-cli.

    az aks install-cli
    
  2. Para configurar kubectl para conectarse a su clúster de Kubernetes, use el comando az aks get-credentials. En el comando siguiente, se obtienen las credenciales del clúster de AKS llamado myAKSCluster en myResourceGroup.

    az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
    

Descarga de la aplicación de ejemplo

En este inicio rápido usa la aplicación Azure Vote.

  1. Clone la aplicación desde GitHub mediante el comando git clone.

    git clone https://github.com/Azure-Samples/azure-voting-app-redis.git
    
  2. Vaya al directorio azure-vote mediante el comando cd.

    cd azure-voting-app-redis/azure-vote/
    

Compilación e inserción de la aplicación de ejemplo en ACR

  • Compile e inserte las imágenes en ACR mediante el comando az acr build. En el ejemplo siguiente se compila una imagen denominada azure-vote-front:v1 y se inserta en la instancia de ACR denominada myhelmacr. Asegúrese de reemplazar myhelmacr por el nombre de su instancia de ACR.

    az acr build --image azure-vote-front:v1 --registry myhelmacr --file Dockerfile .
    

Nota:

También puede importar gráficos de Helm en el ACR. Para más información, consulte Inserción y extracción de gráficos de Helm en Azure Container Registry.

Creación del gráfico de Helm

  1. Genere el gráfico de Helm con el comando helm create.

    helm create azure-vote-front
    
  2. Actualice azure-vote-front/Chart.yaml para agregar una dependencia para el gráfico redis desde el repositorio de gráficos https://charts.bitnami.com/bitnami y actualice appVersion a v1 como se muestra en el siguiente ejemplo:

    Nota:

    Las versiones de la imagen de contenedor que se muestran en esta guía se han probado para trabajar con este ejemplo, pero es posible que no sean la versión más reciente disponible.

    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. Actualice las dependencias de gráficos de Helm mediante el comando helm dependency update.

    helm dependency update azure-vote-front
    
  4. Actualice azure-vote-front/values.yaml con los siguientes cambios.

    • Agregue una sección redis para establecer los detalles de la imagen, el puerto del contenedor y el nombre de la implementación.
    • Agregue un backendName para conectar la parte de front-end a la implementación de redis.
    • Cambie image.repository a <loginServer>/azure-vote-front.
    • Cambie image.tag a v1.
    • Cambie service.type a LoadBalancer.

    Por ejemplo:

    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. Agregue una sección env a azure-vote-front/templates/deployment.yaml para pasar el nombre de la implementación de 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 }}
    ...
    

Ejecución del gráfico de Helm

  1. Instale la aplicación con el gráfico de Helm mediante el comando helm install.

    helm install azure-vote-front azure-vote-front/
    
  2. El servicio puede tardar unos minutos en devolver una dirección IP pública. Para supervisar el progreso, utilice el comando kubectl get service con el argumento --watch.

    kubectl get service azure-vote-front --watch
    

    Cuando el servicio está listo, el valor de EXTERNAL-IP cambia de <pending> a una dirección IP. Presione CTRL+C para detener el proceso de inspección de kubectl.

      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. Vaya al equilibrador de carga de la aplicación en un explorador mediante la <EXTERNAL-IP> para ver la aplicación de ejemplo.

Eliminación del clúster

  • Quite el grupo de recursos, el clúster de AKS, la instancia de Azure Container Registry, las imágenes de contenedor almacenadas en ACR y todos los recursos relacionados mediante el comando az group delete con el parámetro --yes para confirmar la eliminación y con el parámetro --no-wait para volver al símbolo del sistema sin esperar a que se complete la operación.

    az group delete --name myResourceGroup --yes --no-wait
    

Nota:

Si ha creado el clúster de AKS con una identidad administrada asignada por el sistema (la opción de identidad predeterminada en este inicio rápido), la identidad se administra mediante la plataforma y no necesita eliminación.

Si ha creado el clúster de AKS con una entidad de servicio, la entidad de servicio no se quitará al eliminar el clúster. Para quitar la entidad de servicio, consulte Consideraciones principales y eliminación de AKS.

Pasos siguientes

Para más información sobre el uso de Helm, consulte la documentación de Helm.