Share 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.

Voordat u begint

  • Voor de invoegtoepassing is Azure CLI versie 2.57.0 of hoger geïnstalleerd. U kunt de versie uitvoeren az --version om de versie te controleren. Zie Azure CLI installeren als u CLI wilt installeren of upgraden.

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

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

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 invoegtoepassing Istio service mesh met bicep. Zie de referentie bicep managedCluster voor meer informatie over de Bicep-resourcedefinitie voor een AKS-cluster.

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-20) 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:

Belangrijk

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 wordt weergegeven Istio.

Gebruik az aks get-credentials dit voor de referenties voor uw AKS-cluster:

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

Gebruik kubectl dit om te controleren of istiod pods (Istio-besturingsvlak) worden uitgevoerd:

kubectl get pods -n aks-istio-system

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

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

Sidecarinjectie 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

Belangrijk

Het standaardlabel istio-injection=enabled werkt niet. Expliciete versiebeheer die overeenkomt met de revisie van het besturingsvlak (bijvoorbeeld: istio.io/rev=asm-1-18) is vereist.

Voor handmatige injectie van sidecar met behulp istioctl kube-injectvan , 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

Trigger sidecar injectie

U kunt de voorbeeldtoepassing implementeren die is opgegeven voor testen 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 ervoor te zorgen dat alle containers gereed zijn en op zoek zijn 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-sidecar. 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.18/samples/bookinfo/platform/kube/bookinfo.yaml

Notitie

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 dit om te controleren of de services zijn gemaakt:

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 hebben van Running 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.

Als u deze voorbeeldtoepassing wilt testen op inkomend verkeer, bekijkt u de volgende stappen.

Resources verwijderen

Gebruik kubectl delete dit om de voorbeeldtoepassing te verwijderen:

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

Als u niet van plan bent Istio inkomend verkeer in te schakelen in uw cluster en de Istio-invoegtoepassing wilt uitschakelen, voert u de volgende opdracht uit:

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

Let op

Als u de service-mesh-invoegtoepassing uitschakelt, wordt het Istio-besturingsvlak volledig uit het cluster verwijderd.

Istio CustomResourceDefintions (CRD's) worden niet standaard verwijderd. Als u ze wilt opschonen, gebruikt u:

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

Gebruik az group delete dit om uw cluster en de bijbehorende resources te verwijderen:

az group delete --name ${RESOURCE_GROUP} --yes --no-wait

Volgende stappen