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
- Suscripción a Azure. Si no tiene una suscripción a Azure, puede crear una cuenta gratuita.
- La CLI de Azure o Azure PowerShell instalado.
- Helm v3 instalado.
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.
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
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 reemplazarmyhelmacr
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.
Instale
kubectl
localmente mediante el comando az aks install-cli.az aks install-cli
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.
Clone la aplicación desde GitHub mediante el comando
git clone
.git clone https://github.com/Azure-Samples/azure-voting-app-redis.git
Vaya al directorio
azure-vote
mediante el comandocd
.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
Genere el gráfico de Helm con el comando
helm create
.helm create azure-vote-front
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 actualiceappVersion
av1
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
Actualice las dependencias de gráficos de Helm mediante el comando
helm dependency update
.helm dependency update azure-vote-front
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 ...
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
Instale la aplicación con el gráfico de Helm mediante el comando
helm install
.helm install azure-vote-front azure-vote-front/
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. PresioneCTRL+C
para detener el proceso de inspección dekubectl
.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
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.
Azure Kubernetes Service