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.
- Gebruik de
az aks mesh get-revisions
opdracht om te controleren welke revisies beschikbaar zijn voor verschillende AKS-clusterversies in een regio. - 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-inject
van , 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 CustomResourceDefintion
s (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
Azure Kubernetes Service