Partager via


Déployer le module complémentaire de maillage de services basé sur Istio pour Azure Kubernetes Service

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 --version pour 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 table
    

    Pour 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.

  1. Utilisez la commande az aks mesh get-revisions pour vérifier quelles révisions sont disponibles pour différentes versions de cluster AKS dans une région.
  2. 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