Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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.
Tip
Za pomocą Azure Copilot możesz wdrożyć Istio w klastrach usługi AKS w portalu Azure. Aby uzyskać więcej informacji, zobacz Praca z klastrami AKS wydajnie przy użyciu rozwiązania Azure Copilot.
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 oraz ich zgodność ze standardami i wersjami klastra AKS, użyj polecenia
az aks mesh get-revisions:az aks mesh get-revisions --location <location> -o tableAby uzyskać więcej informacji na temat zgodności dodatku Istio z usługą AKS, zapoznaj się z zasadami obsługi zgodności.
W niektórych przypadkach zasoby CRD Istio z poprzednich instalacji mogą nie zostać automatycznie wyczyszczone podczas dezinstalacji. Upewnij się, że istniejące Istio CRD zostały usunięte:
kubectl delete crd $(kubectl get crd -A | grep "istio.io" | awk '{print $1}')Zaleca się również czyszczenie innych zasobów z instalacji Istio z własnym zarządzaniem, takich jak ClusterRoles, MutatingWebhookConfigurations i ValidatingWebhookConfigurations.
Należy pamiętać, że jeśli zdecydujesz się używać dowolnych
istioctlpoleceń 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. Aby dowiedzieć się więcej na temat definicji zasobu Bicep dla klastra usługi AKS, zobacz dokumentację Bicep managedCluster.
Note
Jeśli potrzebujesz istiod zasobników bramy ruchu przychodzącego/wychodzącego i zaplanowanych na określone węzły, możesz użyć węzłów systemowych usługi AKS lub etykiety węzła azureservicemesh/istio.replica.preferred . 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.
Wybór rewizji
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.
- Użyj polecenia ,
az aks mesh get-revisionsaby sprawdzić, które poprawki są dostępne dla różnych wersji klastra usługi AKS w regionie. - 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.
Important
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.
Użyj az aks get-credentials, aby uzyskać poświadczenia dla klastra usługi AKS.
az aks get-credentials --resource-group ${RESOURCE_GROUP} --name ${CLUSTER}
Użyj kubectl aby sprawdzić, czy istiod zasobniki (płaszczyzna sterowania Istio) działają poprawnie:
kubectl get pods -n aks-istio-system
Upewnij się, że zasobnik istiod ma status Running. 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
Aby automatycznie zainstalować sidecar do nowych podów, należy dodać adnotacje do przestrzeni nazw z etykietą rewizji odpowiadającą aktualnie zainstalowanej rewizji płaszczyzny sterowania.
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
Important
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). Przykład:
kubectl apply -f <(istioctl kube-inject -f sample.yaml -i aks-istio-system -r asm-X-Y) -n foo
Wyzwalanie wstrzykiwania sidecaru
Możesz albo wdrożyć przykładową aplikację dostarczoną do testów, albo uruchomić wtrysk sidecar dla istniejących obciążeń.
Istniejące aplikacje
Jeśli masz istniejące aplikacje do dodania do sieci, upewnij się, że ich przestrzenie nazw są oznaczone jak w poprzednim kroku, a następnie zrestartuj ich wdrożenia, aby wywołać wstrzykiwanie sidecara.
kubectl rollout restart -n <namespace> <deployment name>
Sprawdź, czy wstrzyknięcie sidecara zakończyło się pomyślnie, upewniając się, że wszystkie kontenery są gotowe i że kontener istio-proxy pojawia się w danych wyjściowych kubectl describe, na przykład:
kubectl describe pod -n namespace <pod name>
Kontener istio-proxy jest bocznym kontenerem Envoy. 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
Note
Klastry korzystające z serwera proxy HTTP do wychodzącego dostępu do Internetu muszą skonfigurować element usługi. 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. 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
Upewnij się, że wszystkie zasobniki mają status Running i posiadają dwa kontenery w kolumnie READY. Drugi kontener (istio-proxy) dodany do każdego zasobnika to kontener pomocniczy Envoy wstrzykiwany przez Istio, a pozostały to kontener aplikacji.
Aby przetestować tę przykładową aplikację pod kątem ingresu, zapoznaj się z następnymi krokami.
Dalsze kroki
- Wdrożenie zewnętrznych lub wewnętrznych ingresji dla dodatku Istio Service Mesh
- Skaluj istiod i bramę wejściową HPA
- Zbieraj metryki dla obciążeń dodatków Istio w sieci serwisowej w Azure Managed Prometheus
- Wdrażanie bram ruchu wychodzącego dla dodatku usługi Istio Service Mesh
- Włączanie dodatku istio CNI for Istio service mesh (wersja zapoznawcza)