Nasadit doplněk sítě služeb založený na Istiu pro Azure Kubernetes Service
V tomto článku se dozvíte, jak nainstalovat doplněk Istio service mesh pro cluster Azure Kubernetes Service (AKS).
Další informace o istiu a doplňku service mesh najdete v tématu Doplněk Sítě služeb založený na Istio pro službu Azure Kubernetes Service.
Než začnete
Doplněk vyžaduje instalaci Azure CLI verze 2.57.0 nebo novější. Verzi můžete ověřit spuštěním
az --version
. Pokud chcete nainstalovat nebo upgradovat, přečtěte si téma Instalace Azure CLI.Informace o tom, které revize doplňků Istio jsou k dispozici v oblasti a jejich kompatibilitu s verzemi clusteru AKS, najdete pomocí příkazu
az aks mesh get-revisions
:az aks mesh get-revisions --location <location> -o table
Nastavení proměnných prostředí
export CLUSTER=<cluster-name>
export RESOURCE_GROUP=<resource-group-name>
export LOCATION=<location>
Instalace doplňku Istio
Tato část obsahuje postup instalace doplňku Istio během vytváření clusteru nebo povolení existujícího clusteru pomocí Azure CLI. Pokud chcete doplněk nainstalovat pomocí Bicep, přečtěte si průvodce instalací clusteru AKS s doplňkem Istio Service Mesh pomocí Bicep. Další informace o definici prostředku Bicep pro cluster AKS najdete v referenčních informacích ke spravovanému clusteru Bicep.
Výběr revize
Pokud doplněk povolíte bez zadání revize, nainstaluje se vám výchozí podporovaná revize.
Pokud chcete zadat revizi, proveďte následující kroky.
az aks mesh get-revisions
Pomocí příkazu zkontrolujte, které revize jsou dostupné pro různé verze clusteru AKS v oblasti.- Na základě dostupných revizí můžete do příkazu povolení, který používáte pro instalaci sítě, zahrnout
--revision asm-X-Y
příznak (např.:--revision asm-1-20
).
Instalace sítě během vytváření clusteru
Chcete-li nainstalovat doplněk Istio při vytváření clusteru, použijte parametr --enable-azure-service-mesh
nebo--enable-asm
parametr.
az group create --name ${RESOURCE_GROUP} --location ${LOCATION}
az aks create \
--resource-group ${RESOURCE_GROUP} \
--name ${CLUSTER} \
--enable-asm \
--generate-ssh-keys
Instalace sítě pro existující cluster
Následující příklad povolí doplněk Istio pro existující cluster AKS:
Důležité
Doplněk Istio není možné povolit v existujícím clusteru, pokud už je v clusteru doplněk OSM. Před instalací doplňku Istio odinstalujte doplněk OSM. Další informace najdete v tématu odinstalace doplňku OSM z clusteru AKS. Doplněk Istio je možné povolit pouze v clusterech AKS verze >= 1.23.
az aks mesh enable --resource-group ${RESOURCE_GROUP} --name ${CLUSTER}
Ověření úspěšné instalace
Pokud chcete ověřit, že je doplněk Istio nainstalovaný v clusteru, spusťte následující příkaz:
az aks show --resource-group ${RESOURCE_GROUP} --name ${CLUSTER} --query 'serviceMeshProfile.mode'
Potvrďte, že se výstup zobrazí Istio
.
Slouží az aks get-credentials
k přihlašovacím údajům clusteru AKS:
az aks get-credentials --resource-group ${RESOURCE_GROUP} --name ${CLUSTER}
Slouží kubectl
k ověření úspěšného istiod
spuštění podů řídicí roviny (Istio):
kubectl get pods -n aks-istio-system
Potvrďte, že pod istiod
má stav Running
. Příklad:
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
Povolení injektáže sajdkáře
Pokud chcete do nových podů automaticky nainstalovat sajdkárna, musíte přidat poznámky k oborům názvů s popiskem revize odpovídající aktuálně nainstalované revizi řídicí roviny.
Pokud si nejste jistí, která revize je nainstalovaná, použijte:
az aks show --resource-group ${RESOURCE_GROUP} --name ${CLUSTER} --query 'serviceMeshProfile.istio.revisions'
Použijte popisek revize:
kubectl label namespace default istio.io/rev=asm-X-Y
Důležité
Výchozí istio-injection=enabled
popisování nefunguje. Explicitní správa verzí odpovídající revizi řídicí roviny (např.: istio.io/rev=asm-1-18
) se vyžaduje.
Pro ruční injektáž sajdkáře pomocí istioctl kube-inject
, musíte zadat další parametry pro istioNamespace
(-i
) a revision
(-r
). Příklad:
kubectl apply -f <(istioctl kube-inject -f sample.yaml -i aks-istio-system -r asm-X-Y) -n foo
Aktivace injektáže sajdkáře
Můžete buď nasadit ukázkovou aplikaci poskytovanou pro testování, nebo aktivovat injektáž sajdkáře pro existující úlohy.
Existující aplikace
Pokud máte existující aplikace, které se mají přidat do sítě, ujistěte se, že jsou jejich obory názvů označené jako v předchozím kroku, a restartujte jejich nasazení, aby se aktivovala injektáž sajdkárů:
kubectl rollout restart -n <namespace> <deployment name>
Ověřte, že injektáž sajdkáře proběhla úspěšně. Ujistěte se, že jsou všechny kontejnery připravené a ve výstupu kubectl describe
hledáte istio-proxy
kontejner, například:
kubectl describe pod -n namespace <pod name>
Kontejner istio-proxy
je sajdkárna Envoy. Vaše aplikace je teď součástí roviny dat.
Nasazení ukázkové aplikace
Slouží kubectl apply
k nasazení ukázkové aplikace v clusteru:
kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.18/samples/bookinfo/platform/kube/bookinfo.yaml
Poznámka:
Clustery využívající proxy server HTTP pro odchozí přístup k internetu budou muset nastavit položku služby. Pokyny k nastavení najdete v tématu Podpora proxy serveru HTTP ve službě Azure Kubernetes Service.
Ověřte, že se v clusteru vytvoří několik nasazení a služeb. Příklad:
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
Slouží kubectl get services
k ověření úspěšného vytvoření služeb:
kubectl get services
Ověřte, že byly nasazeny následující služby:
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
Ověřte, že všechny pody mají ve READY
sloupci stav se Running
dvěma kontejnery. Druhý kontejner (istio-proxy
) přidaný do každého podu je envoy sidecar vložený istio a druhý je kontejner aplikace.
Pokud chcete otestovat tuto ukázkovou aplikaci proti příchozímu přenosu dat, podívejte se na další kroky.
Odstranění prostředků
Slouží kubectl delete
k odstranění ukázkové aplikace:
kubectl delete -f https://raw.githubusercontent.com/istio/istio/release-1.18/samples/bookinfo/platform/kube/bookinfo.yaml
Pokud v clusteru nechcete povolit příchozí přenos dat Istio a chcete doplněk Istio zakázat, spusťte následující příkaz:
az aks mesh disable --resource-group ${RESOURCE_GROUP} --name ${CLUSTER}
Upozornění
Zakázání doplňku sítě služby zcela odebere řídicí rovinu Istio z clusteru.
Istio CustomResourceDefintion
s (CRD) se ve výchozím nastavení neodstraní. Pokud je chcete vyčistit, použijte:
kubectl delete crd $(kubectl get crd -A | grep "istio.io" | awk '{print $1}')
Slouží az group delete
k odstranění clusteru a přidružených prostředků:
az group delete --name ${RESOURCE_GROUP} --yes --no-wait
Další kroky
Azure Kubernetes Service