Installer des applications existantes avec Helm dans Azure Kubernetes service (AKS)
Helm est un outil d’empaquetage open source qui vous aide à installer et à gérer le cycle de vie d’applications Kubernetes. À l’instar des gestionnaires de package Linux tels qu’APT et Yum, vous utilisez Helm pour gérer les charts Kubernetes, qui sont des packages de ressources Kubernetes préconfigurées.
Cet article vous montre comment configurer et utiliser Helm dans un cluster Kubernetes sur AKS sur Azure Kubernetes Service (AKS).
Avant de commencer
- Cet article suppose que vous disposez d’un cluster AKS. Si vous avez besoin d’un cluster AKS, créez-en un à l'aide d’Azure CLI, d’Azure PowerShell ou du Portail Azure.
- Votre cluster AKS doit avoir un ACR intégré. Pour plus d’informations sur la création d’un cluster AKS avec un ACR intégré, consultez S’authentifier auprès d’Azure Container Registry à partir d’Azure Kubernetes Service.
- Vous devez aussi avoir installé l’interface CLI Helm, qui est le client s’exécutant sur votre système de développement. Il vous permet de démarrer, arrêter et gérer les applications avec Helm. Si vous utilisez Azure Cloud Shell, l’interface CLI Helm est déjà installée. Pour obtenir les instructions d’installation sur votre plateforme locale, consultez Installing Helm (Installation de Helm).
Important
Helm est prévu pour s’exécuter sur des nœuds Linux. Si vous avez des nœuds Windows Server dans votre cluster, vous devez veiller à ce que l’exécution des pods Helm soit planifiée uniquement sur des nœuds Linux. Vous devez aussi veiller à ce que les graphiques Helm que vous installez s’exécutent sur les bons nœuds. Les commandes figurant dans cet article utilisent node-selectors pour garantir que les pods sont planifiés sur les nœuds adéquats, mais il se peut que certains graphiques Helm n’exposent pas de sélecteur de nœud. Vous pouvez aussi envisager d’utiliser d’autres options sur votre cluster, comme des teintes (« taints »).
Vérifier la version de Helm
Utilisez la commande
helm version
pour vérifier que Helm 3 est installé.helm version
L’exemple de sortie suivant montre la version 3.0.0 de Helm installée :
version.BuildInfo{Version:"v3.0.0", GitCommit:"e29ce2a54e96cd02ccfce88bee4f58bb6e2a28b6", GitTreeState:"clean", GoVersion:"go1.13.4"}
Installer une application avec Helm v3
Ajouter des référentiels Helm
Ajoutez le référentiel ingress-nginx à l’aide de la commande helm repo.
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
Rechercher des graphiques Helm
Recherchez des charts Helm précréés à l’aide de la commande helm search.
helm search repo ingress-nginx
La sortie condensée suivante montre certains des graphiques Helm disponibles :
NAME CHART VERSION APP VERSION DESCRIPTION ingress-nginx/ingress-nginx 4.7.0 1.8.0 Ingress controller for Kubernetes using NGINX a...
Pour mettre à jour la liste des charts, utilisez la commande helm repo update.
helm repo update
L’exemple de sortie suivant montre une mise à jour de référentiel réussie :
Hang tight while we grab the latest from your chart repositories... ...Successfully got an update from the "ingress-nginx" chart repository Update Complete. ⎈ Happy Helming!⎈
Importer les images de chart Helm dans votre ACR
Cet article utilise le graphique Helm du contrôleur d’entrée NGINX, lequel repose sur trois images de conteneurs.
Utilisez
az acr import
pour importer les images du contrôleur d’entrée NGINX dans votre ACR.REGISTRY_NAME=<REGISTRY_NAME> CONTROLLER_REGISTRY=registry.k8s.io CONTROLLER_IMAGE=ingress-nginx/controller CONTROLLER_TAG=v1.8.0 PATCH_REGISTRY=registry.k8s.io PATCH_IMAGE=ingress-nginx/kube-webhook-certgen PATCH_TAG=v20230407 DEFAULTBACKEND_REGISTRY=registry.k8s.io DEFAULTBACKEND_IMAGE=defaultbackend-amd64 DEFAULTBACKEND_TAG=1.5 az acr import --name $REGISTRY_NAME --source $CONTROLLER_REGISTRY/$CONTROLLER_IMAGE:$CONTROLLER_TAG --image $CONTROLLER_IMAGE:$CONTROLLER_TAG az acr import --name $REGISTRY_NAME --source $PATCH_REGISTRY/$PATCH_IMAGE:$PATCH_TAG --image $PATCH_IMAGE:$PATCH_TAG az acr import --name $REGISTRY_NAME --source $DEFAULTBACKEND_REGISTRY/$DEFAULTBACKEND_IMAGE:$DEFAULTBACKEND_TAG --image $DEFAULTBACKEND_IMAGE:$DEFAULTBACKEND_TAG
Notes
En plus d’importer des images de conteneur dans votre ACR, 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.
Exécuter des graphiques Helm
Installez les charts avec Helm à l’aide de la commande helm install et spécifiez un nom de version et le nom du chart à installer.
Conseil
L’exemple suivant crée un espace de noms Kubernetes pour les ressources d’entrée ingress-basic et est destiné à fonctionner dans cet espace de noms. Spécifiez un espace de noms de votre propre environnement, si besoin.
ACR_URL=<REGISTRY_URL> # Create a namespace for your ingress resources kubectl create namespace ingress-basic # Use Helm to deploy an NGINX ingress controller helm install ingress-nginx ingress-nginx/ingress-nginx \ --version 4.0.13 \ --namespace ingress-basic \ --set controller.replicaCount=2 \ --set controller.nodeSelector."kubernetes\.io/os"=linux \ --set controller.image.registry=$ACR_URL \ --set controller.image.image=$CONTROLLER_IMAGE \ --set controller.image.tag=$CONTROLLER_TAG \ --set controller.image.digest="" \ --set controller.admissionWebhooks.patch.nodeSelector."kubernetes\.io/os"=linux \ --set controller.service.annotations."service\.beta\.kubernetes\.io/azure-load-balancer-health-probe-request-path"=/healthz \ --set controller.admissionWebhooks.patch.image.registry=$ACR_URL \ --set controller.admissionWebhooks.patch.image.image=$PATCH_IMAGE \ --set controller.admissionWebhooks.patch.image.tag=$PATCH_TAG \ --set defaultBackend.nodeSelector."kubernetes\.io/os"=linux \ --set defaultBackend.image.registry=$ACR_URL \ --set defaultBackend.image.image=$DEFAULTBACKEND_IMAGE \ --set defaultBackend.image.tag=$DEFAULTBACKEND_TAG \ --set defaultBackend.image.digest=""
La sortie condensée suivante montre l’état du déploiement des ressources Kubernetes créées par le graphique Helm :
NAME: nginx-ingress LAST DEPLOYED: Wed Jul 28 11:35:29 2021 NAMESPACE: ingress-basic STATUS: deployed REVISION: 1 TEST SUITE: None NOTES: The ingress-nginx controller has been installed. It may take a few minutes for the LoadBalancer IP to be available. You can watch the status by running 'kubectl --namespace ingress-basic get services -o wide -w nginx-ingress-ingress-nginx-controller' ...
Obtenez l’EXTERNAL-IP (Adresse IP externe) de votre service à l’aide de la commande
kubectl get services
.kubectl --namespace ingress-basic get services -o wide -w ingress-nginx-ingress-nginx-controller
L’exemple de sortie suivant montre l’EXTERNAL-IP (Adresse IP externe) pour le service ingress-nginx-ingress-nginx-controller :
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR nginx-ingress-ingress-nginx-controller LoadBalancer 10.0.254.93 <EXTERNAL_IP> 80:30004/TCP,443:30348/TCP 61s app.kubernetes.io/component=controller,app.kubernetes.io/instance=nginx-ingress,app.kubernetes.io/name=ingress-nginx
Répertorier les versions
Obtenez la liste des versions installées sur votre cluster à l’aide de la commande
helm list
.helm list --namespace ingress-basic
L’exemple de sortie suivant montre la version ingress-nginx déployée à l’étape précédente :
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION ingress-nginx ingress-basic 1 2021-07-28 11:35:29.9623734 -0500 CDT deployed ingress-nginx-3.34.0 0.47.0
Nettoyer les ressources
Le déploiement d’un chart Helm crée des ressources Kubernetes telles que des pods, des déploiements et des services.
Nettoyez les ressources à l’aide de la commande helm uninstall et spécifiez le nom de votre version.
helm uninstall --namespace ingress-basic ingress-nginx
L’exemple de sortie suivant illustre la version nommée ingress-nginx qui a été désinstallée :
release "nginx-ingress" uninstalled
Supprimez l’espace de noms exemple en entier avec les ressources en utilisant la commande
kubectl delete
et en spécifiant le nom de votre espace de noms.kubectl delete namespace ingress-basic
Étapes suivantes
Pour plus d’informations sur la gestion des déploiements d’applications Kubernetes, consultez la documentation Helm.
Azure Kubernetes Service