Share via


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.

  1. 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.
  2. 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

Passaggi successivi