Dela via


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.

  1. 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.
  2. 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   2/2     Running   0          2m
istiod-asm-1-18-74f7f7c46c-4nt2v   2/2     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-injectmå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

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 CustomResourceDefintions (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