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 la guía paso a paso 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 instalada.
- Helm v3 instalado.
Creación de una instancia de Azure Container Registry
Tendrá que 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. Proporcione su propio nombre de registro único en Azure que contenga entre 5 y 50 caracteres alfanuméricos. La SKU básica es un punto de entrada optimizado para costo con fines de desarrollo que proporciona un equilibrio entre almacenamiento y rendimiento.
En el ejemplo siguiente se usa az acr create para crear una instancia de ACR llamada MyHelmACR en MyResourceGroup con la SKU Básica.
az group create --name MyResourceGroup --location eastus
az acr create --resource-group MyResourceGroup --name MyHelmACR --sku Basic
El resultado será similar al ejemplo siguiente. Tome nota del valor de loginServer para la instancia de ACR, puesto que lo usará en un paso posterior. En el ejemplo siguiente, myhelmacr.azurecr.io es el valor de loginServer para MyHelmACR.
{
"adminUserEnabled": false,
"creationDate": "2019-06-11T13:35:17.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. Use el comando siguiente para:
- Cree un clúster de AKS denominado MyAKS y asocie MyHelmACR.
- Conceda al clúster MyAKS acceso a la instancia de ACR MyHelmACR.
az aks create -g MyResourceGroup -n MyAKS --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
kubectllocalmente mediante el comandoaz aks install-cli:az aks install-cliPara configurar
kubectlpara conectarse a su clúster de Kubernetes, use el comandoaz aks get-credentials. En el comando de ejemplo siguiente se obtienen las credenciales del clúster de AKS llamado MyAKS en MyResourceGroup:az aks get-credentials --resource-group MyResourceGroup --name MyAKS
Descarga de la aplicación de ejemplo
En este inicio rápido usa la aplicación Azure Vote. Clone la aplicación desde GitHub y vaya al directorio azure-vote.
git clone https://github.com/Azure-Samples/azure-voting-app-redis.git
cd azure-voting-app-redis/azure-vote/
Compilación e inserción de la aplicación de ejemplo en la instancia de ACR
Con el archivo Dockerfile anterior, ejecute el comando az acr build para compilar e insertar una imagen en el registro. El signo . al final del comando establece la ubicación del archivo Dockerfile (en este caso, el directorio actual).
az acr build --image azure-vote-front:v1 \
--registry MyHelmACR \
--file Dockerfile .
Nota
Además de importar imágenes de contenedor en el ACR, 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 actualice appVersion a v1. Por ejemplo:
apiVersion: v2
name: azure-vote-front
description: A Helm chart for Kubernetes
dependencies:
- name: redis
version: 14.7.1
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 helm dependency update:
helm dependency update azure-vote-front
Actualice azure-vote-front/values.yaml:
- 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:
# Default values for azure-vote-front.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
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
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
Use el comando az group delete para quitar el grupo de recursos, el clúster de AKS, el registro de contenedores, las imágenes de contenedor almacenadas en la instancia de ACR y todos los recursos relacionados.
az group delete --name MyResourceGroup --yes --no-wait
Nota
Cuando elimina el clúster, la entidad de servicio Azure Active Directory que utiliza el clúster de AKS no se quita. Para conocer los pasos que hay que realizar para quitar la entidad de servicio, consulte Consideraciones principales y eliminación de AKS.
Si usó una identidad administrada, esta está administrada por la plataforma y no requiere que la quite.
Pasos siguientes
Para más información sobre el uso de Helm, consulte la documentación de Helm.