Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cet article vous montre comment installer le module complémentaire de maillage de services basé sur Istio pour un cluster Azure Kubernetes Service (AKS).
Pour plus d’informations sur Istio et sur le module complémentaire de maillage de services, consultez l’article Module complémentaire de maillage de services basé sur Istio pour Azure Kubernetes Service.
Tip
Vous pouvez utiliser Azure Copilot pour vous aider à déployer Istio sur vos clusters AKS dans le portail Azure. Pour plus d’informations, consultez Utiliser efficacement des clusters AKS à l’aide d’Azure Copilot.
Avant de commencer
Le module complémentaire nécessite l’installation d’Azure CLI version 2.57.0 ou ultérieure. Vous pouvez exécuter
az --versionpour vérifier la version. Pour installer ou mettre à niveau Azure CLI, consultez Installer Azure CLI.Pour trouver des informations sur les révisions des modules complémentaires Istio disponibles dans une région et leur compatibilité avec les versions de cluster AKS standard et LTS, utilisez la commande
az aks mesh get-revisions:az aks mesh get-revisions --location <location> -o tablePour plus d’informations sur la compatibilité du module complémentaire Istio avec AKS, reportez-vous à la stratégie de prise en charge de compatibilité.
Dans certains cas, les CRD Istio des installations précédentes peuvent ne pas être nettoyés automatiquement lors de la désinstallation. Vérifiez que les CRD Istio existants sont supprimés :
kubectl delete crd $(kubectl get crd -A | grep "istio.io" | awk '{print $1}')Il est également recommandé de nettoyer d'autres ressources provenant d'installations auto-gérées d'Istio telles que ClusterRoles, MutatingWebhookConfigurations et ValidatingWebhookConfigurations.
Notez que si vous choisissez d’utiliser des commandes CLI
istioctl, vous devez inclure un indicateur pour pointer vers l’installation du module complémentaire d’Istio :--istioNamespace aks-istio-system
Définir des variables d’environnement
export CLUSTER=<cluster-name>
export RESOURCE_GROUP=<resource-group-name>
export LOCATION=<location>
Installer un module complémentaire Istio
Cette section inclut les étapes d’installation du module complémentaire Istio lors de la création du cluster ou de l’activation d’un cluster existant à l’aide d’Azure CLI. Si vous souhaitez installer le module complémentaire à l’aide de Bicep, consultez le guide pour l’installation d’un cluster AKS avec le module complémentaire de maillage de service Istio à l’aide de Bicep. Pour en savoir plus sur la définition de ressource Bicep pour un cluster AKS, consultez la référence Bicep managedCluster.
Note
Si vous souhaitez que les pods et les passerelles d’entrée/sortie istiod soient affectés à des nœuds spécifiques, vous pouvez utiliser les nœuds système AKS ou l’étiquette de nœud azureservicemesh/istio.replica.preferred. Les pods ont des affinités de nœud avec une préférence pondérée pour 100 les nœuds système AKS (étiquetés kubernetes.azure.com/mode: system) et une préférence pondérée pour 50 les nœuds étiquetés azureservicemesh/istio.replica.preferred: true.
Sélection de révision
Si vous activez le module complémentaire sans spécifier de révision, une révision prise en charge par défaut est installée pour vous.
Pour spécifier une révision, procédez comme suit.
- Utilisez la commande
az aks mesh get-revisionspour vérifier quelles révisions sont disponibles pour différentes versions de cluster AKS dans une région. - En fonction des révisions disponibles, vous pouvez inclure l’indicateur
--revision asm-X-Y(par exemple,--revision asm-1-24) dans la commande enable que vous utilisez pour l’installation du maillage.
Installer le maillage pendant la création d’un cluster
Pour installer le module complémentaire Istio lors de la création du cluster, utilisez le paramètre --enable-azure-service-mesh ou --enable-asm.
az group create --name ${RESOURCE_GROUP} --location ${LOCATION}
az aks create \
--resource-group ${RESOURCE_GROUP} \
--name ${CLUSTER} \
--enable-asm \
--generate-ssh-keys
Installer le maillage pour un cluster existant
L’exemple ci-dessous active le module complémentaire Istio pour un cluster AKS existant :
Important
Vous ne pouvez pas activer le module complémentaire Istio sur un cluster existant si un module complémentaire OSM est déjà présent sur votre cluster. Désinstallez le module complémentaire OSM avant d’installer le module complémentaire Istio. Pour plus d’informations, consultez l’article Désinstaller le module complémentaire OSM de votre cluster AKS. Le module complémentaire Istio ne peut être activé que sur des clusters AKS version 1.23 ou ultérieure.
az aks mesh enable --resource-group ${RESOURCE_GROUP} --name ${CLUSTER}
Vérifier la réussite de l’installation
Pour vérifier que le module complémentaire Istio est installé sur votre cluster, exécutez la commande suivante :
az aks show --resource-group ${RESOURCE_GROUP} --name ${CLUSTER} --query 'serviceMeshProfile.mode'
Vérifiez que la sortie affiche Istio.
Utilisez az aks get-credentials pour obtenir les informations d’identification de votre cluster AKS :
az aks get-credentials --resource-group ${RESOURCE_GROUP} --name ${CLUSTER}
Utilisez kubectl afin de vérifier que les pods istiod (plan de contrôle Istio) fonctionnent correctement.
kubectl get pods -n aks-istio-system
Assurez-vous que l’état du pod istiod est Running. Par exemple:
NAME READY STATUS RESTARTS AGE
istiod-asm-1-24-74f7f7c46c-xfdtl 1/1 Running 0 2m
istiod-asm-1-24-74f7f7c46c-4nt2v 1/1 Running 0 2m
Activer l’injection de sidecar
Pour installer automatiquement sidecar sur tous les nouveaux pods, vous devez annoter vos espaces de noms avec l’étiquette de révision correspondante à la révision du plan de contrôle actuellement installée.
Si vous ne savez pas quelle révision est installée, utilisez :
az aks show --resource-group ${RESOURCE_GROUP} --name ${CLUSTER} --query 'serviceMeshProfile.istio.revisions'
Appliquez l’étiquette de révision :
kubectl label namespace default istio.io/rev=asm-X-Y
Important
Le versioning explicite correspondant à la révision du plan de contrôle (par exemple, istio.io/rev=asm-1-24) est requis.
L’étiquette par défaut istio-injection=enabled ne fonctionne pas et entraîne l’injection de sidecar pour ignorer l’espace de noms du module complémentaire.
Pour l’injection manuelle de sidecar à l’aide de istioctl kube-inject, vous devez spécifier des paramètres supplémentaires pour istioNamespace (-i) et revision (-r). Par exemple:
kubectl apply -f <(istioctl kube-inject -f sample.yaml -i aks-istio-system -r asm-X-Y) -n foo
Déclencher l’injection de sidecar
Vous pouvez déployer l’exemple d’application fourni pour le test ou déclencher l’injection de sidecar pour les charges de travail existantes.
Applications existantes
Si vous avez des applications existantes à ajouter au maillage, vérifiez que leurs espaces de noms sont étiquetés comme à l’étape précédente, puis redémarrez leur déploiement pour déclencher l’injection de sidecar :
kubectl rollout restart -n <namespace> <deployment name>
Vérifiez que l’injection de sidecar a réussi en vous assurant que tous les conteneurs sont prêts et en recherchant le conteneur istio-proxy dans la sortie kubectl describe, par exemple :
kubectl describe pod -n namespace <pod name>
Le conteneur istio-proxy est le sidecar Envoy. Votre application fait maintenant partie du plan de données.
Déployer un exemple d’application
Utilisez kubectl apply pour déployer l’exemple d’application sur le cluster :
kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.24/samples/bookinfo/platform/kube/bookinfo.yaml
Note
Les clusters utilisant un proxy HTTP pour l’accès Internet sortant doivent configurer une entrée de service. Pour obtenir des instructions de configuration, consultez Prise en charge du proxy HTTP dans Azure Kubernetes Service.
Vérifiez que plusieurs déploiements et services sont créés sur votre cluster. Par exemple:
service/details created
serviceaccount/bookinfo-details created
deployment.apps/details-v1 created
service/ratings created
serviceaccount/bookinfo-ratings created
deployment.apps/ratings-v1 created
service/reviews created
serviceaccount/bookinfo-reviews created
deployment.apps/reviews-v1 created
deployment.apps/reviews-v2 created
deployment.apps/reviews-v3 created
service/productpage created
serviceaccount/bookinfo-productpage created
deployment.apps/productpage-v1 created
Utilisez kubectl get services pour vérifier que les services ont bien été créés :
kubectl get services
Vérifiez que les services suivants ont été déployés :
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
details ClusterIP 10.0.180.193 <none> 9080/TCP 87s
kubernetes ClusterIP 10.0.0.1 <none> 443/TCP 15m
productpage ClusterIP 10.0.112.238 <none> 9080/TCP 86s
ratings ClusterIP 10.0.15.201 <none> 9080/TCP 86s
reviews ClusterIP 10.0.73.95 <none> 9080/TCP 86s
kubectl get pods
NAME READY STATUS RESTARTS AGE
details-v1-558b8b4b76-2llld 2/2 Running 0 2m41s
productpage-v1-6987489c74-lpkgl 2/2 Running 0 2m40s
ratings-v1-7dc98c7588-vzftc 2/2 Running 0 2m41s
reviews-v1-7f99cc4496-gdxfn 2/2 Running 0 2m41s
reviews-v2-7d79d5bd5d-8zzqd 2/2 Running 0 2m41s
reviews-v3-7dbcdcbc56-m8dph 2/2 Running 0 2m41s
Vérifiez que tous les pods ont l’état Running avec deux conteneurs dans la colonne READY. Le second conteneur (istio-proxy) ajouté à chaque pod est le sidecar Envoy injecté par Istio, tandis que l’autre est le conteneur d’application.
Pour tester cet exemple d’application contre l'ingress, consultez les étapes suivantes.
Étapes suivantes
- Déployer des entrées externes ou internes pour le module complémentaire de maillage de services Istio
- Mettre à l’échelle la passerelle HPA d’entrée et istiod
- Collecter des métriques pour les charges de travail de module complémentaire de maillage de service Istio dans Azure Managed Prometheus
- Déployer des passerelles de sortie pour le module complémentaire Istio Service Mesh
- Activer Istio CNI pour le module complémentaire Istio Service Mesh (Aperçu)