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.

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 savoir quelles révisions de modules complémentaires Istio sont disponibles dans une région et si elles sont compatibles avec les versions de cluster AKS, utilisez la commande az aks mesh get-revisions :

    az aks mesh get-revisions --location <location> -o table
    

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.

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-20) 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 pour vérifier que les pods istiod (plan de contrôle Istio) s’exécutent 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-18-74f7f7c46c-xfdtl   1/1     Running   0          2m
istiod-asm-1-18-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

L’étiquetage istio-injection=enabled par défaut ne fonctionne pas. Le versioning explicite correspondant à la révision du plan de contrôle (par exemple, istio.io/rev=asm-1-18) est requis.

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.18/samples/bookinfo/platform/kube/bookinfo.yaml

Remarque

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 par rapport à l’entrée, consultez les étapes suivantes.

Supprimer des ressources

Utilisez kubectl delete pour supprimer l’exemple d’application :

kubectl delete -f https://raw.githubusercontent.com/istio/istio/release-1.18/samples/bookinfo/platform/kube/bookinfo.yaml

Si vous n’avez pas l’intention d’activer l’entrée Istio sur votre cluster et que vous souhaitez désactiver le module complémentaire Istio, exécutez la commande suivante :

az aks mesh disable --resource-group ${RESOURCE_GROUP} --name ${CLUSTER}

Attention

La désactivation du module complémentaire de maillage de services supprime complètement le plan de contrôle Istio du cluster.

Les définitions de ressources personnalisées (CRD, CustomResourceDefintion) Istio ne sont pas supprimées par défaut. Pour les nettoyer, utilisez la commande suivante :

kubectl delete crd $(kubectl get crd -A | grep "istio.io" | awk '{print $1}')

Utilisez az group delete pour supprimer votre cluster et les ressources associées :

az group delete --name ${RESOURCE_GROUP} --yes --no-wait

Étapes suivantes