Distribuera Istio-baserat tillägg för tjänstnät (service mesh) för Azure Kubernetes Service
Den här artikeln visar hur du installerar det Istio-baserade service mesh-tillägget för AKS-kluster (Azure Kubernetes Service).
Mer information om Istio och service mesh-tillägget finns i Istio-baserat service mesh-tillägg för Azure Kubernetes Service.
Innan du börjar
Tillägget kräver Azure CLI version 2.57.0 eller senare installerat. Du kan köra
az --version
för att verifiera versionen. Information om hur du installerar eller uppgraderar finns i Installera Azure CLI.Om du vill hitta information om vilka Istio-tilläggsrevisioner som är tillgängliga i en region och deras kompatibilitet med AKS-klusterversioner använder du kommandot
az aks mesh get-revisions
:az aks mesh get-revisions --location <location> -o table
Ange miljövariabler
export CLUSTER=<cluster-name>
export RESOURCE_GROUP=<resource-group-name>
export LOCATION=<location>
Installera Istio-tillägget
Det här avsnittet innehåller steg för att installera Istio-tillägget när klustret skapas eller aktiveras för ett befintligt kluster med hjälp av Azure CLI. Om du vill installera tillägget med Bicep kan du läsa guiden för att installera ett AKS-kluster med tillägget Istio Service Mesh med hjälp av Bicep. Mer information om Bicep-resursdefinitionen för ett AKS-kluster finns i referensen för Bicep managedCluster.
Revisionsval
Om du aktiverar tillägget utan att ange en revision installeras en standardrevision som stöds åt dig.
Utför följande steg för att ange en revision.
az aks mesh get-revisions
Använd kommandot för att kontrollera vilka revisioner som är tillgängliga för olika AKS-klusterversioner i en region.- Baserat på tillgängliga revisioner kan du inkludera
--revision asm-X-Y
flaggan (t.ex.--revision asm-1-20
) i det aktiverade kommando som du använder för mesh-installation.
Installera mesh när klustret skapas
Om du vill installera Istio-tillägget när du skapar klustret använder du parametern --enable-azure-service-mesh
eller--enable-asm
.
az group create --name ${RESOURCE_GROUP} --location ${LOCATION}
az aks create \
--resource-group ${RESOURCE_GROUP} \
--name ${CLUSTER} \
--enable-asm \
--generate-ssh-keys
Installera mesh för befintligt kluster
I följande exempel aktiveras Istio-tillägg för ett befintligt AKS-kluster:
Viktigt!
Du kan inte aktivera Istio-tillägget i ett befintligt kluster om ett OSM-tillägg redan finns i klustret. Avinstallera OSM-tillägget innan du installerar Istio-tillägget. Mer information finns i avinstallera OSM-tillägget från ditt AKS-kluster. Istio-tillägg kan bara aktiveras i AKS-kluster av version >= 1.23.
az aks mesh enable --resource-group ${RESOURCE_GROUP} --name ${CLUSTER}
Kontrollera att installationen har slutförts
Kontrollera att Istio-tillägget är installerat i klustret genom att köra följande kommando:
az aks show --resource-group ${RESOURCE_GROUP} --name ${CLUSTER} --query 'serviceMeshProfile.mode'
Bekräfta att utdata visar Istio
.
Använd az aks get-credentials
för autentiseringsuppgifterna för ditt AKS-kluster:
az aks get-credentials --resource-group ${RESOURCE_GROUP} --name ${CLUSTER}
Använd kubectl
för att kontrollera att istiod
(Istio-kontrollplanet) poddar körs:
kubectl get pods -n aks-istio-system
Bekräfta att podden har statusen istiod
Running
. Till exempel:
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
Aktivera sidovagnsinmatning
Om du vill installera sidovagn automatiskt i alla nya poddar måste du kommentera namnrymderna med revisionsetiketten som motsvarar den revision av kontrollplanet som för närvarande är installerad.
Om du är osäker på vilken revision som är installerad använder du:
az aks show --resource-group ${RESOURCE_GROUP} --name ${CLUSTER} --query 'serviceMeshProfile.istio.revisions'
Använd revisionsetiketten:
kubectl label namespace default istio.io/rev=asm-X-Y
Viktigt!
istio-injection=enabled
Standardetiketterna fungerar inte. Explicit versionshantering som matchar kontrollplanets revision (till ex: istio.io/rev=asm-1-18
) krävs.
För manuell inmatning av sidovagn med hjälp av istioctl kube-inject
måste du ange extra parametrar för istioNamespace
(-i
) och revision
(-r
). Till exempel:
kubectl apply -f <(istioctl kube-inject -f sample.yaml -i aks-istio-system -r asm-X-Y) -n foo
Utlösare för sidovagnsinmatning
Du kan antingen distribuera exempelprogrammet som tillhandahålls för testning eller utlösa sidovagnsinmatning för befintliga arbetsbelastningar.
Befintliga program
Om du har befintliga program som ska läggas till i nätet kontrollerar du att deras namnområden är märkta som i föregående steg och startar sedan om distributionerna för att utlösa sidovagnsinmatning:
kubectl rollout restart -n <namespace> <deployment name>
Kontrollera att sidovagnsinmatningen lyckades genom att se till att alla containrar är klara och letar efter containern istio-proxy
kubectl describe
i utdata, till exempel:
kubectl describe pod -n namespace <pod name>
Containern istio-proxy
är Envoy-sidovagnen. Ditt program är nu en del av dataplanet.
Distribuera exempelprogram
Använd kubectl apply
för att distribuera exempelprogrammet i klustret:
kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.18/samples/bookinfo/platform/kube/bookinfo.yaml
Kommentar
Kluster som använder en HTTP-proxy för utgående Internetåtkomst måste konfigurera en tjänstpost. Installationsinstruktioner finns i HTTP-proxystöd i Azure Kubernetes Service
Bekräfta att flera distributioner och tjänster har skapats i klustret. Till exempel:
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
Använd kubectl get services
för att kontrollera att tjänsterna har skapats:
kubectl get services
Bekräfta att följande tjänster har distribuerats:
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
Bekräfta att alla poddar har statusen Running
med två containrar i READY
kolumnen. Den andra containern () somistio-proxy
läggs till i varje podd är sidovagnen Envoy som matas in av Istio och den andra är programcontainern.
Om du vill testa det här exempelprogrammet mot ingress kan du ta en titt på nästa steg.
Ta bort resurser
Använd kubectl delete
för att ta bort exempelprogrammet:
kubectl delete -f https://raw.githubusercontent.com/istio/istio/release-1.18/samples/bookinfo/platform/kube/bookinfo.yaml
Om du inte tänker aktivera Istio-ingress i klustret och vill inaktivera Istio-tillägget kör du följande kommando:
az aks mesh disable --resource-group ${RESOURCE_GROUP} --name ${CLUSTER}
Varning
Om du inaktiverar service mesh-tillägget tas istio-kontrollplanet bort helt från klustret.
Istio CustomResourceDefintion
s (CRD) tas inte bort som standard. Om du vill rensa dem använder du:
kubectl delete crd $(kubectl get crd -A | grep "istio.io" | awk '{print $1}')
Använd az group delete
för att ta bort klustret och de associerade resurserna:
az group delete --name ${RESOURCE_GROUP} --yes --no-wait
Nästa steg
Azure Kubernetes Service