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.
- 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. - 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
Azure Kubernetes Service