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
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. Aby dowiedzieć się więcej na temat definicji zasobu Bicep dla klastra usługi AKS, zobacz Bicep managedCluster reference (Dokumentacja funkcji Bicep managedCluster).
Wybór poprawki
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-revisions
aby 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-20
) 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 włączono dodatek Istio dla istniejącego klastra usługi 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 klastra usługi AKS. Dodatek Istio można włączyć tylko w klastrach usługi 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
polecenia , aby poświadczeń klastra usługi AKS:
az aks get-credentials --resource-group ${RESOURCE_GROUP} --name ${CLUSTER}
Użyj kubectl
polecenia , aby sprawdzić, istiod
czy zasobniki (płaszczyzna sterowania Istio) działają pomyślnie:
kubectl get pods -n aks-istio-system
Upewnij się, że zasobnik istiod
ma stan Running
. Na przykład:
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
Włącz wstrzykiwanie przyczepki
Aby automatycznie zainstalować przyczepkę do nowych zasobników, należy dodać adnotacje do przestrzeni nazw z etykietą poprawki odpowiadającą aktualnie zainstalowanej poprawce 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
Ważne
istio-injection=enabled
Domyślne etykietowanie nie działa. Wymagana jest jawna wersja zgodna z wersją płaszczyzny sterowania (np. istio.io/rev=asm-1-18
) .
W przypadku ręcznego wstrzykiwania przyczepki przy użyciu metody istioctl kube-inject
należy 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
Wstrzykiwanie przyczepki wyzwalacza
Możesz wdrożyć przykładową aplikację udostępnioną do testowania lub wyzwalać iniekcję przyczepki dla istniejących obciążeń.
Istniejące aplikacje
Jeśli masz istniejące aplikacje do dodania do siatki, upewnij się, że ich przestrzenie nazw są oznaczone jako w poprzednim kroku, a następnie uruchom ponownie wdrożenia, aby wyzwolić iniekcję przyczepki:
kubectl rollout restart -n <namespace> <deployment name>
Sprawdź, czy wstrzyknięcie przyczepki zakończyło się pomyślnie, upewniając się, że wszystkie kontenery są gotowe i szukają kontenera istio-proxy
w danych wyjściowych kubectl describe
, na przykład:
kubectl describe pod -n namespace <pod name>
Kontener istio-proxy
jest przyczepą Envoy. Aplikacja jest teraz częścią płaszczyzny danych.
Wdrażanie przykładowej aplikacji
Użyj kubectl apply
polecenia , aby wdrożyć przykładową aplikację w klastrze:
kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.18/samples/bookinfo/platform/kube/bookinfo.yaml
Uwaga
Klastry korzystające z serwera proxy HTTP dla wychodzącego dostępu do Internetu muszą skonfigurować wpis 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. 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 kubectl get services
polecenia , 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ą stan Running
z dwoma kontenerami w kolumnie READY
. Drugi kontener (istio-proxy
) dodany do każdego zasobnika to przyczepka Envoy wstrzykiwana przez istio, a druga to kontener aplikacji.
Aby przetestować tę przykładową aplikację pod kątem ruchu przychodzącego, zapoznaj się z kolejnymi krokami.
Usuwanie zasobów
Użyj kubectl delete
polecenia , aby usunąć przykładową aplikację:
kubectl delete -f https://raw.githubusercontent.com/istio/istio/release-1.18/samples/bookinfo/platform/kube/bookinfo.yaml
Jeśli nie zamierzasz włączać ruchu przychodzącego istio w klastrze i chcesz wyłączyć dodatek Istio, uruchom następujące polecenie:
az aks mesh disable --resource-group ${RESOURCE_GROUP} --name ${CLUSTER}
Uwaga
Wyłączenie dodatku siatki usługi spowoduje całkowite usunięcie płaszczyzny sterowania Istio z klastra.
Istio CustomResourceDefintion
s (CRD) nie są domyślnie usuwane. Aby je wyczyścić, użyj:
kubectl delete crd $(kubectl get crd -A | grep "istio.io" | awk '{print $1}')
Użyj az group delete
polecenia , aby usunąć klaster i skojarzone zasoby:
az group delete --name ${RESOURCE_GROUP} --yes --no-wait
Następne kroki
Azure Kubernetes Service