Delen via


De op Istio gebaseerde service mesh-invoegtoepassing voor Azure Kubernetes Service implementeren

In dit artikel leest u hoe u de op Istio gebaseerde service mesh-invoegtoepassing installeert voor het AKS-cluster (Azure Kubernetes Service).

Zie de op Istio gebaseerde service mesh-invoegtoepassing voor Azure Kubernetes Service voor meer informatie over Istio en de service mesh-invoegtoepassing.

Tip

U kunt Azure Copilot gebruiken om Istio te implementeren in uw AKS-clusters in Azure Portal. Zie Werken met AKS-clusters efficiënt met behulp van Azure Copilot voor meer informatie.

Voordat u begint

  • Voor de invoegtoepassing moet Azure CLI versie 2.57.0 of hoger geïnstalleerd zijn. U kunt az --version uitvoeren om de versie te controleren. Zie Azure CLI installeren om te installeren of up te graden.

  • Als u wilt zoeken naar informatie over welke istio-invoegtoepassingsrevisies beschikbaar zijn in een regio en de compatibiliteit met AKS-standaard- en LTS-clusterversies, gebruikt u de opdracht az aks mesh get-revisions:

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

    Raadpleeg het compatibiliteitsbeleid voor compatibiliteit van de Istio-invoegtoepassing met AKS voor meer informatie.

  • In sommige gevallen worden Istio CRD's van eerdere installaties mogelijk niet automatisch opgeschoond bij het verwijderen. Zorg ervoor dat bestaande Istio CRD's worden verwijderd:

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

    Het wordt aanbevolen om ook andere resources op te schonen van zelfbeheerde installaties van Istio, zoals ClusterRoles, MutatingWebhookConfigurations en ValidatingWebhookConfigurations.

  • Als u ervoor kiest om CLI-opdrachtenistioctl te gebruiken, moet u een parameter toevoegen om te verwijzen naar de installatie van de invoegtoepassing van Istio: --istioNamespace aks-istio-system

Omgevingsvariabelen instellen

export CLUSTER=<cluster-name>
export RESOURCE_GROUP=<resource-group-name>
export LOCATION=<location>

Istio-invoegtoepassing installeren

Deze sectie bevat stappen voor het installeren van de Istio-invoegtoepassing tijdens het maken van een cluster of het inschakelen van een bestaand cluster met behulp van de Azure CLI. Als u de invoegtoepassing wilt installeren met Bicep, raadpleegt u de handleiding voor het installeren van een AKS-cluster met de Istio service mesh-invoegtoepassing met Bicep. Zie Bicep managedCluster-referentie voor meer informatie over de Bicep-resourcedefinitie voor een AKS-cluster.

Note

Als u de istiod en de gatewaypods voor inkomend/uitgaand verkeer op specifieke knooppunten wilt plannen, kunt u AKS-systeemknooppunten of het azureservicemesh/istio.replica.preferred knooppuntlabel gebruiken. De pods hebben knooppuntaffiniteit met een gewogen voorkeur voor 100 AKS-systeemknooppunten (gelabeld kubernetes.azure.com/mode: system) en een gewogen voorkeur van 50 voor knooppunten die zijn gelabeld azureservicemesh/istio.replica.preferred: true.

Revisieselectie

Als u de invoegtoepassing inschakelt zonder een revisie op te geven, wordt er een standaard ondersteunde revisie voor u geïnstalleerd.

Voer de volgende stappen uit om een revisie op te geven.

  1. Gebruik de az aks mesh get-revisions opdracht om te controleren welke revisies beschikbaar zijn voor verschillende AKS-clusterversies in een regio.
  2. Op basis van de beschikbare revisies kunt u de --revision asm-X-Y vlag (bijvoorbeeld: --revision asm-1-24) opnemen in de opdracht Enable die u gebruikt voor mesh-installatie.

Mesh installeren tijdens het maken van een cluster

Als u de Istio-invoegtoepassing wilt installeren bij het maken van het cluster, gebruikt u de --enable-azure-service-mesh of--enable-asm parameter.

az group create --name ${RESOURCE_GROUP} --location ${LOCATION}

az aks create \
    --resource-group ${RESOURCE_GROUP} \
    --name ${CLUSTER} \
    --enable-asm \
    --generate-ssh-keys

Mesh installeren voor bestaand cluster

In het volgende voorbeeld wordt de Istio-invoegtoepassing ingeschakeld voor een bestaand AKS-cluster:

Important

U kunt de Istio-invoegtoepassing niet inschakelen op een bestaand cluster als een OSM-invoegtoepassing zich al in uw cluster bevindt. Verwijder de OSM-invoegtoepassing voordat u de Istio-invoegtoepassing installeert. Zie de OSM-invoegtoepassing verwijderen uit uw AKS-cluster voor meer informatie. De Istio-invoegtoepassing kan alleen worden ingeschakeld op AKS-clusters van versie >= 1.23.

az aks mesh enable --resource-group ${RESOURCE_GROUP} --name ${CLUSTER}

Geslaagde installatie controleren

Voer de volgende opdracht uit om te controleren of de Istio-invoegtoepassing is geïnstalleerd op uw cluster:

az aks show --resource-group ${RESOURCE_GROUP} --name ${CLUSTER}  --query 'serviceMeshProfile.mode'

Controleer of de uitvoer Istio toont.

Gebruik az aks get-credentials om de referenties voor uw AKS-cluster op te halen:

az aks get-credentials --resource-group ${RESOURCE_GROUP} --name ${CLUSTER}

Gebruik kubectl om te controleren of istiod pods (Istio-besturingsvlak) succesvol draaien:

kubectl get pods -n aks-istio-system

Controleer of de istiod pod de status Running heeft. Voorbeeld:

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

Sidecar injectie inschakelen

Als u sidecar automatisch wilt installeren op nieuwe pods, moet u aantekeningen toevoegen aan uw naamruimten met het revisielabel dat overeenkomt met de revisie van het besturingsvlak dat momenteel is geïnstalleerd.

Als u niet zeker weet welke revisie is geïnstalleerd, gebruikt u:

az aks show --resource-group ${RESOURCE_GROUP} --name ${CLUSTER}  --query 'serviceMeshProfile.istio.revisions'

Pas het revisielabel toe:

kubectl label namespace default istio.io/rev=asm-X-Y

Important

Expliciete versiebeheer die overeenkomt met de revisie van het besturingsvlak (bijvoorbeeld: istio.io/rev=asm-1-24) is vereist.

Het standaardlabel istio-injection=enabled werkt niet en zorgt ervoor dat de sidecar-injectie de naamruimte voor de invoegtoepassing overslaat.

Voor de handmatige injectie van sidecar met behulp van istioctl kube-inject moet u extra parameters opgeven voor istioNamespace (-i) en revision (-r). Voorbeeld:

kubectl apply -f <(istioctl kube-inject -f sample.yaml -i aks-istio-system -r asm-X-Y) -n foo

Activeer sidecar-injectie

U kunt de opgegeven voorbeeldtoepassing voor testen implementeren of sidecar-injectie activeren voor bestaande workloads.

Bestaande toepassingen

Als u bestaande toepassingen aan de mesh wilt toevoegen, moet u ervoor zorgen dat hun naamruimten zijn gelabeld als in de vorige stap en vervolgens hun implementaties opnieuw starten om sidecar-injectie te activeren:

kubectl rollout restart -n <namespace> <deployment name>

Controleer of sidecar-injectie is geslaagd door te controleren of alle containers gereed zijn en kijken naar de istio-proxy container in de kubectl describe uitvoer, bijvoorbeeld:

kubectl describe pod -n namespace <pod name>

De istio-proxy container is de Envoy-zijvoertuig. Uw toepassing maakt nu deel uit van het gegevensvlak.

Voorbeeldtoepassing implementeren

Gebruik kubectl apply deze om de voorbeeldtoepassing op het cluster te implementeren:

kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.24/samples/bookinfo/platform/kube/bookinfo.yaml

Note

Clusters met een HTTP-proxy voor uitgaande internettoegang moeten een servicevermelding instellen. Zie http-proxyondersteuning in Azure Kubernetes Service voor installatie-instructies

Controleer of er verschillende implementaties en services zijn gemaakt in uw cluster. Voorbeeld:

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

Gebruik kubectl get services om te verifiëren dat de services succesvol zijn aangemaakt:

kubectl get services

Controleer of de volgende services zijn geïmplementeerd:

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

Controleer of alle pods de status Running hebben met twee containers in de READY kolom. De tweede container (istio-proxy) die aan elke pod is toegevoegd, is de Envoy-sidecar die door Istio is geïnjecteerd en de andere container is de toepassingscontainer.

Om deze voorbeeldtoepassing tegen ingress te testen, bekijkt u volgende stappen.

Volgende stappen