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.

  1. az aks mesh get-revisions Pomocí příkazu zkontrolujte, které revize jsou dostupné pro různé verze clusteru AKS v oblasti.
  2. 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 CustomResourceDefintions (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