Condividi tramite


Distribuire il componente aggiuntivo mesh del servizio basato su Istio per il 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.

Tip

È possibile usare Azure Copilot per implementare Istio nei cluster AKS nel portale di Azure. Per ulteriori informazioni, vedere Gestire i cluster AKS in modo efficiente con Azure Copilot.

Prima di iniziare

  • 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 dei componenti aggiuntivi Istio disponibili in un'area e sulla compatibilità con le versioni del cluster standard e LTS del servizio Azure Kubernetes, usare il comando az aks mesh get-revisions:

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

    Per ulteriori informazioni sulla compatibilità del componente aggiuntivo Istio con AKS, vedere i Criteri di Supporto per la Compatibilità.

  • In alcuni casi, i CD Istio delle installazioni precedenti potrebbero non essere puliti automaticamente durante la disinstallazione. Verificare che i CRD Istio esistenti siano eliminati:

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

    È consigliabile anche pulire altre risorse dalle installazioni autogestite di Istio, come ClusterRoles, MutatingWebhookConfigurations e ValidatingWebhookConfigurations.

  • Si noti che se si sceglie di usare qualsiasi comando istioctl 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 Kubernetes, vedere riferimento a managedCluster Bicep.

Note

Se sono necessari istiod e pod gateway in ingresso e in uscita pianificati in nodi specifici, è possibile usare i nodi di sistema del servizio Azure Kubernetes o l'etichetta azureservicemesh/istio.replica.preferred nodo. I pod hanno affinità di nodo con una preferenza ponderata di 100 per i nodi del sistema AKS (etichettati kubernetes.azure.com/mode: system) e una preferenza ponderata di 50 per i nodi etichettati azureservicemesh/istio.replica.preferred: true.

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.

  1. 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.
  2. In base alle revisioni disponibili, è possibile includere il contrassegno --revision asm-X-Y (ex: --revision asm-1-24) 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:

Important

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.

Usa az aks get-credentials per ottenere le credenziali per il tuo cluster AKS.

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. Per esempio:

NAME                               READY   STATUS    RESTARTS   AGE
istiod-asm-1-24-74f7f7c46c-xfdtl   1/1     Running   0          2m
istiod-asm-1-24-74f7f7c46c-4nt2v   1/1     Running   0          2m

Abilitare l'inserimento 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

Important

È necessario che il controllo delle versioni esplicito corrisponda alla revisione del piano di controllo (ad esempio, istio.io/rev=asm-1-24).

L'etichetta predefinita istio-injection=enabled non funzionerà e provocherà un errore per cui l'inserimento sidecar ignorerà lo spazio dei nomi per il componente aggiuntivo.

Per l'inserimento manuale del sidecar tramite istioctl kube-inject, è necessario specificare parametri aggiuntivi per istioNamespace (-i) e revision (-r). Per 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.24/samples/bookinfo/platform/kube/bookinfo.yaml

Note

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 nel servizio Azure Kubernetes

Verificare che nel cluster siano stati creati più servizi e distribuzioni. Per 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 l'applicazione di esempio contro l'ingress, consultare i passaggi successivi.

Passaggi successivi