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

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.

  1. 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
    
  2. 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 à remplacer myhelmacr 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é.

  1. Installez kubectl en local avec la commande az aks install-cli.

    az aks install-cli
    
  2. 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.

  1. Clonez l’application à partir de GitHub en utilisant la commande git clone.

    git clone https://github.com/Azure-Samples/azure-voting-app-redis.git
    
  2. Accédez au répertoire azure-vote en utilisant la commande cd.

    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

  1. Générez votre chart Helm à l’aide de la commande helm create.

    helm create azure-vote-front
    
  2. 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 à jour appVersion vers v1, 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
    
  3. Mettez à jour les dépendances de votre graphique Helm en utilisant la commande helm dependency update.

    helm dependency update azure-vote-front
    
  4. 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
    ...
    
  5. 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

  1. Installez votre application à l'aide de votre chart Helm en utilisant la commande helm install.

    helm install azure-vote-front azure-vote-front/
    
  2. 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 sur CTRL+C pour arrêter le processus de surveillance 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. 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.