Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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 --versionuitvoeren 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 tableRaadpleeg 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-opdrachten
istioctlte 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.
- Gebruik de
az aks mesh get-revisionsopdracht 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-Yvlag (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
- Externe of interne toegangen implementeren voor de Istio-servicemesh toevoeging
- istiod en Ingress Gateway HPA schalen
- Metrische gegevens verzamelen voor workloads van de Istio-service mesh add-on in Azure Managed Prometheus
- Uitgaande gateways implementeren voor de invoegtoepassing Istio-service-mesh
- Schakel Istio CNI in voor Istio-service mesh-add-on (Preview)