Udostępnij za pośrednictwem


Wdrażanie dodatku siatki usług opartego na Istio dla usługi Azure Kubernetes Service

W tym artykule pokazano, jak zainstalować dodatek usługi opartej na technologii Istio dla klastra usługi Azure Kubernetes Service (AKS).

Aby uzyskać więcej informacji na temat dodatku Istio i dodatku usługi Service Mesh, zobacz Dodatek usługi Service Mesh oparty na technologii Istio dla usługi Azure Kubernetes Service.

Zanim rozpoczniesz

  • Dodatek wymaga zainstalowania interfejsu wiersza polecenia platformy Azure w wersji 2.57.0 lub nowszej. Możesz uruchomić polecenie az --version , aby zweryfikować wersję. Aby zainstalować lub uaktualnić, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure.

  • Aby znaleźć informacje o tym, które poprawki dodatku Istio są dostępne w regionie i ich zgodności z wersjami klastra usługi AKS, użyj polecenia az aks mesh get-revisions:

    az aks mesh get-revisions --location <location> -o table
    
  • In some cases, Istio CRDs from previous installations may not be automatically cleaned up on uninstall. Ensure existing Istio CRDs are deleted:

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

    Zaleca się również czyszczenie innych zasobów z samodzielnie zarządzanych instalacji Istio, takich jak ClusterRoles, MutatingWebhookConfigurations i ValidatingWebhookConfigurations.

  • Należy pamiętać, że jeśli zdecydujesz się używać dowolnych istioctl poleceń interfejsu wiersza polecenia, musisz dołączyć flagę wskazującą instalację dodatku Istio: --istioNamespace aks-istio-system

Ustawianie zmiennych środowiskowych

export CLUSTER=<cluster-name>
export RESOURCE_GROUP=<resource-group-name>
export LOCATION=<location>

Instalowanie dodatku Istio

Ta sekcja zawiera kroki instalacji dodatku Istio podczas tworzenia klastra lub włączania dla istniejącego klastra przy użyciu interfejsu wiersza polecenia platformy Azure. Jeśli chcesz zainstalować dodatek przy użyciu aplikacji Bicep, zapoznaj się z przewodnikiem dotyczącym instalowania klastra usługi AKS z dodatkiem siatki usługi Istio przy użyciu narzędzia Bicep. To learn more about the Bicep resource definition for an AKS cluster, see Bicep managedCluster reference.

Uwaga

Jeśli potrzebujesz zasobników bramy ruchu przychodzącego istiod i zaplanowanych na określonych węzłach, możesz użyć węzłów systemowych usługi AKS lub użyć azureservicemesh/istio.replica.preferred etykiety. Zasobniki mają powiązania węzłów z preferencją ważoną 100 dla węzłów systemowych usługi AKS (oznaczonych etykietą kubernetes.azure.com/mode: system) oraz z preferencją ważoną 50 dla węzłów oznaczonych etykietą azureservicemesh/istio.replica.preferred: true.

Revision selection

Jeśli włączysz dodatek bez określenia poprawki, zostanie zainstalowana domyślna obsługiwana wersja.

Aby określić poprawkę, wykonaj następujące kroki.

  1. Użyj polecenia , az aks mesh get-revisions aby sprawdzić, które poprawki są dostępne dla różnych wersji klastra usługi AKS w regionie.
  2. Na podstawie dostępnych poprawek można dołączyć flagę --revision asm-X-Y (np. --revision asm-1-24) w poleceniu włączania używanym do instalacji siatki.

Instalowanie siatki podczas tworzenia klastra

Aby zainstalować dodatek Istio podczas tworzenia klastra, użyj parametru --enable-azure-service-mesh or--enable-asm .

az group create --name ${RESOURCE_GROUP} --location ${LOCATION}

az aks create \
    --resource-group ${RESOURCE_GROUP} \
    --name ${CLUSTER} \
    --enable-asm \
    --generate-ssh-keys    

Instalowanie siatki dla istniejącego klastra

W poniższym przykładzie można włączyć dodatek Istio dla istniejącego klastra AKS.

Ważne

Nie można włączyć dodatku Istio w istniejącym klastrze, jeśli dodatek OSM jest już w klastrze. Odinstaluj dodatek OSM przed zainstalowaniem dodatku Istio. Aby uzyskać więcej informacji, zobacz odinstalowywanie dodatku OSM z twojego klastra AKS. Dodatek Istio można włączyć tylko w klastrach AKS w wersji >= 1.23.

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

Weryfikowanie pomyślnej instalacji

Aby sprawdzić, czy dodatek Istio jest zainstalowany w klastrze, uruchom następujące polecenie:

az aks show --resource-group ${RESOURCE_GROUP} --name ${CLUSTER}  --query 'serviceMeshProfile.mode'

Upewnij się, że dane wyjściowe zawierają wartość Istio.

Use az aks get-credentials to the credentials for your AKS cluster:

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

Use kubectl to verify that istiod (Istio control plane) pods are running successfully:

kubectl get pods -n aks-istio-system

Upewnij się, że zasobnik istiod ma status Running. Na przykład:

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

Włącz wstrzykiwanie sidecar

To automatically install sidecar to any new pods, you need to annotate your namespaces with the revision label corresponding to the control plane revision currently installed.

Jeśli nie masz pewności, która wersja jest zainstalowana, użyj:

az aks show --resource-group ${RESOURCE_GROUP} --name ${CLUSTER}  --query 'serviceMeshProfile.istio.revisions'

Zastosuj etykietę poprawki:

kubectl label namespace default istio.io/rev=asm-X-Y

Ważne

Wymagana jest jawna wersja zgodna z wersją płaszczyzny sterowania (np. istio.io/rev=asm-1-24) .

Domyślna etykieta nie będzie działać i spowoduje, że iniekcja sidecar pominie przestrzeń nazw dla dodatku.

Aby ręcznie wstrzyknąć sidecar za pomocą istioctl kube-inject, musisz określić dodatkowe parametry dla istioNamespace (-i) i revision (-r). Na przykład:

kubectl apply -f <(istioctl kube-inject -f sample.yaml -i aks-istio-system -r asm-X-Y) -n foo

Trigger sidecar injection

Możesz albo wdrożyć przykładową aplikację dostarczoną do testów, albo uruchomić wtrysk sidecar dla istniejących obciążeń.

Istniejące aplikacje

If you have existing applications to be added to the mesh, ensure their namespaces are labeled as in the previous step, and then restart their deployments to trigger sidecar injection:

kubectl rollout restart -n <namespace> <deployment name>

Verify that sidecar injection succeeded by ensuring all containers are ready and looking for the istio-proxy container in the kubectl describe output, for example:

kubectl describe pod -n namespace <pod name>

The istio-proxy container is the Envoy sidecar. Aplikacja jest teraz częścią płaszczyzny danych.

Wdrażanie przykładowej aplikacji

Użyj kubectl apply, aby wdrożyć przykładową aplikację na klastrze.

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

Uwaga

Clusters using an HTTP proxy for outbound internet access will need to set up a Service Entry. Aby uzyskać instrukcje dotyczące konfiguracji, zobacz Obsługa serwera proxy HTTP w usłudze Azure Kubernetes Service

Upewnij się, że w klastrze utworzono kilka wdrożeń i usług. Na przykład:

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

Użyj polecenia kubectl get services, aby sprawdzić, czy usługi zostały utworzone pomyślnie.

kubectl get services

Upewnij się, że wdrożono następujące usługi:

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

Confirm that all the pods have status of Running with two containers in the READY column. The second container (istio-proxy) added to each pod is the Envoy sidecar injected by Istio, and the other is the application container.

Aby przetestować tę przykładową aplikację pod kątem ingressu, sprawdź kolejne kroki.

Następne kroki