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 l'installazione dell'interfaccia della riga di comando di Azure versione 2.57.0 o 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 dei componenti aggiuntivi Istio disponibili in un'area e sulla compatibilità con le versioni del cluster del servizio Azure Kubernetes, usare il comando
az aks mesh get-revisions
:az aks mesh get-revisions --location <location> -o table
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 durante la creazione del cluster o abilitare per un cluster esistente usando l'interfaccia della riga di comando di Azure. Per installare il componente aggiuntivo usando Bicep, vedere Installare un cluster del servizio Azure Kubernetes con il componente aggiuntivo Mesh del servizio Istio usando Bicep. Per altre informazioni sulla definizione di risorsa Bicep per un cluster del servizio Azure Kubernetes, vedere Informazioni di riferimento su Bicep managedCluster.
Selezione revisione
Se si abilita il componente aggiuntivo senza specificare una revisione, viene installata automaticamente una revisione supportata predefinita.
Per specificare una revisione, seguire questa procedura.
- Usare il
az aks mesh get-revisions
comando per verificare quali revisioni sono disponibili per diverse versioni del cluster del servizio Azure Kubernetes in un'area. - In base alle revisioni disponibili, è possibile includere il
--revision asm-X-Y
flag (ad esempio:--revision asm-1-20
) nel comando enable usato per l'installazione mesh.
Installare 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
Installare mesh per un 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
Abilitare l’injection sidecar
Per installare automaticamente sidecar in tutti i nuovi pod, è necessario annotare gli spazi dei nomi con l'etichetta di revisione corrispondente alla revisione del piano di controllo attualmente installata.
Se non si è certi della revisione installata, usare:
az aks show --resource-group ${RESOURCE_GROUP} --name ${CLUSTER} --query 'serviceMeshProfile.istio.revisions'
Applicare l'etichetta di revisione:
kubectl label namespace default istio.io/rev=asm-X-Y
Importante
L'etichettatura predefinita istio-injection=enabled
non funziona. È necessario il controllo delle versioni esplicito corrispondente 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
Attivazione dell'inserimento sidecar
È possibile distribuire l'applicazione di esempio fornita per il test o attivare l'inserimento sidecar per i carichi di lavoro esistenti.
Applicazioni esistenti
Se sono presenti applicazioni da aggiungere alla mesh, assicurarsi che gli spazi dei nomi siano etichettati come nel passaggio precedente e quindi riavviare le distribuzioni per attivare l'inserimento sidecar:
kubectl rollout restart -n <namespace> <deployment name>
Verificare che l'inserimento sidecar abbia esito positivo assicurandosi che tutti i contenitori siano pronti e cerchino il istio-proxy
contenitore nell'output kubectl describe
, ad esempio:
kubectl describe pod -n namespace <pod name>
Il istio-proxy
contenitore è il sidecar Envoy. L'applicazione fa ora 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
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
Verificare che tutti i pod abbiano lo stato Running
con 2 contenitori nella READY
colonna. Il secondo contenitore (istio-proxy
) aggiunto a ogni pod è il sidecar Envoy inserito da Istio e 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