Distribuire il componente aggiuntivo mesh di servizi basato su Istio per servizio Azure Kubernetes
Questo articolo illustra come installare il componente aggiuntivo mesh di servizi basato su Istio per il cluster del servizio Azure Kubernetes (AKS).
Per altre informazioni su Istio e sul componente aggiuntivo mesh di servizi, vedere Componente aggiuntivo mesh di servizi basato su Istio per il servizio Azure Kubernetes.
Operazioni preliminari
Il componente aggiuntivo richiede la versione dell'interfaccia della riga di comando di Azure 2.57.0 o versione successiva. È possibile eseguire
az --version
per verificare la versione. Per installare o eseguire l'aggiornamento, vedere Installare l'interfaccia della riga di comando di Azure.Per trovare informazioni sulle revisioni del componente aggiuntivo Istio disponibili in un'area geografica e la relativa compatibilità con le versioni cluster del servizio Azure Container, usare il comando
az aks mesh get-revisions
:az aks mesh get-revisions --location <location> -o table
Si noti che se si sceglie di usare qualsiasi
istioctl
comando dell'interfaccia della riga di comando, sarà necessario includere un flag per puntare all'installazione del componente aggiuntivo di Istio:--istioNamespace aks-istio-system
Impostare le variabili di ambiente
export CLUSTER=<cluster-name>
export RESOURCE_GROUP=<resource-group-name>
export LOCATION=<location>
Installare il componente aggiuntivo Istio
Questa sezione include i passaggi per installare il componente aggiuntivo Istio nell'ambito della creazione del cluster o abilitarlo per un cluster esistente usando l'interfaccia della riga di comando di Azure. Se si desidera installare il componente aggiuntivo usando Bicep, vedere la guida all'installazione di un cluster del servizio Azure Container con il componente aggiuntivo della mesh del servizio Istio usando Bicep. Per scoprire di più sulla definizione delle risorse Bicep per un cluster del servizio Azure Container, vedere riferimento a managedCluster Bicep.
Selezione revisione
Se si abilita il componente aggiuntivo senza specificare una revisione, verrà installata una revisione supportata predefinita.
Per specificare una revisione, eseguire i passaggi seguenti.
- Usare il comando
az aks mesh get-revisions
per verificare quali revisioni sono disponibili per versioni di cluster del servizio Azure Container distinte in un'area geografica. - In base alle revisioni disponibili, è possibile includere il contrassegno
--revision asm-X-Y
(ex:--revision asm-1-20
) nel comando di abilitazione in uso per l'installazione della mesh.
Installare la mesh durante la creazione del cluster
Per installare il componente aggiuntivo Istio durante la creazione del cluster, usare il parametro --enable-azure-service-mesh
o --enable-asm
.
az group create --name ${RESOURCE_GROUP} --location ${LOCATION}
az aks create \
--resource-group ${RESOURCE_GROUP} \
--name ${CLUSTER} \
--enable-asm \
--generate-ssh-keys
Installare la mesh per il cluster esistente
L'esempio seguente abilita il componente aggiuntivo Istio per un cluster del servizio Azure Kubernetes esistente:
Importante
Non è possibile abilitare il componente aggiuntivo Istio in un cluster esistente se nel cluster si trova già un componente aggiuntivo OSM. Disinstallare il componente aggiuntivo OSM prima di installare il componente aggiuntivo Istio. Per altre informazioni, vedere Disinstallare il componente aggiuntivo OSM dal cluster del servizio Azure Kubernetes. Il componente aggiuntivo Istio può essere abilitato solo nei cluster del servizio Azure Kubernetes della versione >= 1.23.
az aks mesh enable --resource-group ${RESOURCE_GROUP} --name ${CLUSTER}
Verificare l'esito positivo dell'installazione
Per verificare che il componente aggiuntivo Istio sia installato nel cluster, eseguire il comando seguente:
az aks show --resource-group ${RESOURCE_GROUP} --name ${CLUSTER} --query 'serviceMeshProfile.mode'
Confermare che l'output mostri Istio
.
Usare az aks get-credentials
per le credenziali per il cluster del servizio Azure Kubernetes:
az aks get-credentials --resource-group ${RESOURCE_GROUP} --name ${CLUSTER}
Usare kubectl
per verificare che istiod
i pod (piano di controllo Istio) siano in esecuzione correttamente:
kubectl get pods -n aks-istio-system
Verificare che il pod istiod
sia nello stato Running
. Ad esempio:
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
Abilitare l’injection sidecar
Per installare automaticamente sidecar in qualsiasi nuovo pod, è necessario annotare gli spazi dei nomi con l'etichetta di revisione corrispondente alla revisione del piano di controllo attualmente installata.
Se non si conosce la revisione attualmente installata, usare:
az aks show --resource-group ${RESOURCE_GROUP} --name ${CLUSTER} --query 'serviceMeshProfile.istio.revisions'
Applicare nuova etichetta di revisione:
kubectl label namespace default istio.io/rev=asm-X-Y
Importante
L'etichettatura predefinita istio-injection=enabled
non funziona. È necessario che il controllo delle versioni esplicito corrisponda alla revisione del piano di controllo (ad esempio, istio.io/rev=asm-1-18
).
Per l'injection manuale del sidecar tramite istioctl kube-inject
, è necessario specificare parametri aggiuntivi per istioNamespace
(-i
) e revision
(-r
). Ad esempio:
kubectl apply -f <(istioctl kube-inject -f sample.yaml -i aks-istio-system -r asm-X-Y) -n foo
Attivare l'inserimento sidecar
È possibile distribuire l'applicazione di esempio fornita a scopo di test, o attivare l'inserimento sidecar per i carichi di lavoro esistenti.
Applicazioni esistenti
Se devono essere aggiunte applicazioni esistenti alla mesh, verificare che gli spazi dei nomi siano etichettati come nel passaggio precedente, quindi riavviare le distribuzioni per attivare l'inserimento sidecar:
kubectl rollout restart -n <namespace> <deployment name>
Verificare che l'inserimento sidecar sia andato a buon fine a garanzia che tutti i contenitori siano pronti e facciano riferimento al contenitore istio-proxy
nell'output kubectl describe
, ad esempio:
kubectl describe pod -n namespace <pod name>
Il contenitore istio-proxy
è nel sidecar Envoy. Ora l'applicazione fa parte del piano dati.
Distribuire l'applicazione di esempio
Usare kubectl apply
per distribuire l'applicazione di esempio nel cluster:
kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.18/samples/bookinfo/platform/kube/bookinfo.yaml
Nota
I cluster che usano un proxy HTTP per l'accesso a Internet in uscita dovranno configurare una voce di servizio. Per istruzioni sull'installazione, vedere Supporto del proxy HTTP in servizio Azure Kubernetes
Verificare che nel cluster siano stati creati più servizi e distribuzioni. Ad esempio:
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
Usare kubectl get services
per verificare che i servizi siano stati creati correttamente:
kubectl get services
Confermare che siano stati distribuiti i servizi seguenti:
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
Confermare che tutti i pod abbiano lo stato Running
con due contenitori nella colonna READY
. Il secondo contenitore (istio-proxy
) aggiunto a ogni pod è il sidecar Envoy inserito da Istio, mentre l'altro è il contenitore dell'applicazione.
Per testare questa applicazione di esempio in ingresso, eseguire il checkout dei passaggi successivi.
Eliminare risorse
Usare kubectl delete
per eliminare l'applicazione di esempio:
kubectl delete -f https://raw.githubusercontent.com/istio/istio/release-1.18/samples/bookinfo/platform/kube/bookinfo.yaml
Se non si intende abilitare Istio in ingresso nel cluster e si desidera disabilitare il componente aggiuntivo Istio, eseguire il comando seguente:
az aks mesh disable --resource-group ${RESOURCE_GROUP} --name ${CLUSTER}
Attenzione
La disabilitazione del componente aggiuntivo mesh di servizi rimuoverà completamente il piano di controllo Istio dal cluster.
I mesh di servizi Istio CustomResourceDefintion
(CRD) non vengono eliminati per impostazione predefinita. Per pulirli, usare:
kubectl delete crd $(kubectl get crd -A | grep "istio.io" | awk '{print $1}')
Usare az group delete
per eliminare il cluster e le risorse associate:
az group delete --name ${RESOURCE_GROUP} --yes --no-wait
Passaggi successivi
Azure Kubernetes Service