Démarrage rapide : Développer sur Azure Kubernetes Service (AKS) avec Helm
Helm est un outil d’empaquetage open source qui vous aide à installer et à gérer le cycle de vie d’applications Kubernetes. À l'instar de gestionnaires de package Linux tels qu'APT et Yum, Helm sert à gérer les charts Kubernetes, qui sont des packages de ressources Kubernetes préconfigurées.
Dans ce guide de démarrage rapide, vous utilisez Helm pour empaqueter et exécuter une application sur AKS. Pour plus d’informations sur l’installation d’une application existante à l’aide de Helm, consultez Installer des applications existantes avec Helm dans AKS.
Prérequis
- Un abonnement Azure. Si vous n’avez pas d’abonnement Azure, vous pouvez créer un compte gratuit.
- Azure CLI ou Azure PowerShell installé.
- Helm v3 installé.
Création d’un Azure Container Registry
Vous devez stocker vos images conteneur dans un registre Azure Container Registry (ACR) pour exécuter votre application dans votre cluster AKS à l'aide de Helm. Le nom de votre registre doit être unique dans Azure et contenir entre 5 et 50 caractères alphanumériques. Seuls les caractères minuscules sont autorisés. La référence SKU De base est un point d’entrée au coût optimisé fourni à des fins de développement qui offre un bon équilibre entre stockage et débit.
Créez un groupe de ressources Azure en utilisant la commande az group create. L’exemple suivant crée un groupe de ressources nommé myResourceGroup à l’emplacement eastus.
az group create --name myResourceGroup --location eastus
Créez un Azure Container Registry avec un nom unique à l’aide de la commande az acr create. L’exemple suivant crée un registre ACR nommé myhelmacr avec la référence SKU De base.
az acr create --resource-group myResourceGroup --name myhelmacr --sku Basic
Votre sortie devrait ressembler à l’exemple de sortie condensée suivant. Notez la valeur loginServer de votre registre ACR pour l’utiliser dans une étape ultérieure.
{ "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" }
Créer un cluster AKS
Votre nouveau cluster AKS doit accéder à votre ACR pour extraire les images conteneur et les exécuter.
Créez un cluster AKS en utilisant la commande az aks create avec le paramètre
--attach-acr
pour accorder l’accès au cluster à votre registre ACR. L’exemple suivant crée un cluster AKS nommé myAKSCluster et lui accorde l’accès au registre ACR myhelmacr. Veillez à remplacermyhelmacr
par le nom de votre registre ACR.az aks create --resource-group myResourceGroup --name myAKSCluster --location eastus --attach-acr myhelmacr --generate-ssh-keys
Se connecter à votre cluster AKS
Pour connecter localement un cluster Kubernetes, vous utilisez le client de ligne de commande Kubernetes, kubectl. Si vous utilisez Azure Cloud Shell, kubectl
est déjà installé.
Installez
kubectl
en local avec la commande az aks install-cli.az aks install-cli
Configurez
kubectl
afin de vous connecter à votre cluster Kubernetes avec la commande az aks get-credentials. La commande suivante obtient les informations d’identification du cluster AKS nommé myAKSCluster dans myResourceGroup.az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
Téléchargement de l'exemple d'application
Ce démarrage rapide utilise l’application Azure Vote.
Clonez l’application à partir de GitHub en utilisant la commande
git clone
.git clone https://github.com/Azure-Samples/azure-voting-app-redis.git
Accédez au répertoire
azure-vote
en utilisant la commandecd
.cd azure-voting-app-redis/azure-vote/
Créer et envoyer (push) l’exemple d’application vers ACR
Créez et envoyez l’image à votre registre ACR en utilisant la commande az acr build. L’exemple suivant crée une image nommée azure-vote-front:v1 et l’envoie au registre ACR myhelmacr. Veillez à remplacer
myhelmacr
par le nom de votre registre ACR.az acr build --image azure-vote-front:v1 --registry myhelmacr --file Dockerfile .
Remarque
Vous pouvez également importer des graphiques Helm dans votre ACR. Pour plus d’informations, consultez Envoyer (push) et tirer (pull) des graphiques Helm vers un registre de conteneurs Azure.
Créer votre chart Helm
Générez votre chart Helm à l’aide de la commande
helm create
.helm create azure-vote-front
Mettez à jour azure-vote-front/Chart.yaml afin d’ajouter une dépendance pour le graphique redis à partir du référentiel de graphiques
https://charts.bitnami.com/bitnami
et mettez à jourappVersion
versv1
, comme illustré dans l’exemple suivant :Remarque
Les versions d’image conteneur indiquées dans ce guide ont été testées pour fonctionner avec cet exemple, mais peuvent ne pas être la dernière version 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
Mettez à jour les dépendances de votre graphique Helm en utilisant la commande
helm dependency update
.helm dependency update azure-vote-front
Mettez à jour azure-vote-front/values.yaml avec les modifications suivantes.
- Ajoutez une section redis pour définir les détails d’image, le port de conteneur et le nom du déploiement.
- Ajoutez un backendName pour connecter la portion frontend au déploiement redis.
- Redéfinissez image.repository sur
<loginServer>/azure-vote-front
. - Redéfinissez image.tag sur
v1
. - Redéfinissez service.type sur LoadBalancer.
Par exemple :
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 ...
Ajoutez une section
env
à azure-vote-front/templates/deployment.yaml pour transmettre le nom du déploiement 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 }} ...
Exécuter votre chart Helm
Installez votre application à l'aide de votre chart Helm en utilisant la commande
helm install
.helm install azure-vote-front azure-vote-front/
Le renvoi d’une adresse IP publique par le service prend plusieurs minutes. Surveillez la progression avec la commande
kubectl get service
et l’argument--watch
.kubectl get service azure-vote-front --watch
Lorsque le service est prêt, la valeur
EXTERNAL-IP
passe de<pending>
à une adresse IP. Appuyez surCTRL+C
pour arrêter le processus de surveillance 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
Accédez à l’équilibreur de charge de votre application dans un navigateur en utilisant
<EXTERNAL-IP>
pour voir l’exemple d’application.
Supprimer le cluster
Supprimez votre groupe de ressources, votre cluster AKS, votre registre de conteneurs Azure, les images conteneur stockées dans le registre ACR et toutes les ressources associées en utilisant la commande az group delete avec le paramètre
--yes
pour confirmer la suppression et le paramètre--no-wait
pour revenir à l’invite de commandes sans attendre la fin de l’opération.az group delete --name myResourceGroup --yes --no-wait
Remarque
Si vous avez créé votre cluster AKS avec une identité managée affectée par le système (option d’identité par défaut de ce guide de démarrage rapide), cette identité est gérée par la plateforme et ne nécessite pas de suppression.
Si vous avez créé votre cluster AKS avec un principal de service, le principal de service n’est pas supprimé lorsque vous supprimez le cluster. Pour supprimer le principal de service, consultez Considérations et suppression du principal de service AKS.
Étapes suivantes
Pour plus d’informations sur l’utilisation de Helm, consultez la documentation de Helm.
Azure Kubernetes Service