Bereitstellen des Istio-basierten Dienstnetz-Add-Ons für Azure Kubernetes Service

In diesem Artikel erfahren Sie, wie Sie das Istio-basierte Dienstnetz-Add-On für Azure Kubernetes Service-Cluster (AKS) installieren.

Weitere Informationen zu Istio und zum Dienstnetz-Add-On finden Sie unter Istio-basiertes Dienstnetz-Add-On für Azure Kubernetes Service (Vorschau).

Voraussetzungen

  • Für das Add-On muss die Azure CLI-Version 2.57.0 oder neuer installiert sein. Sie können az --version ausführen, um die Version zu überprüfen. Informationen zum Ausführen einer Installation oder eines Upgrades finden Sie unter Installieren der Azure CLI.

  • Um Informationen über die verfügbaren Istio-Add-On-Überarbeitungen in einer Region und deren Kompatibilität mit AKS-Clusterversionen zu finden, verwenden Sie den Befehl az aks mesh get-revisions:

    az aks mesh get-revisions --location <location> -o table
    

Festlegen von Umgebungsvariablen

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

Installieren des Istio-Add-Ons

Dieser Abschnitt enthält Schritte zum Installieren des Istio-Add-Ons während der Clustererstellung oder zu dessen Aktivierung für einen vorhandenen Cluster mithilfe der Azure CLI. Wenn Sie das Add-On mit Bicep installieren möchten, lesen Sie Installieren eines AKS-Clusters mit dem Istio-Dienstnetz-Add-On mit Bicep. Weitere Informationen zur Bicep-Ressourcendefinition für einen AKS-Cluster finden Sie unter managedCluster-Bicep-Referenz.

Überarbeitungsauswahl

Wenn Sie das Add-On ohne Angabe einer Überarbeitung aktivieren, wird eine standardmäßig unterstützte Revision für Sie installiert.

Führen Sie die folgenden Schritte aus, um eine Überarbeitung anzugeben.

  1. Verwenden Sie den Befehl az aks mesh get-revisions, um zu überprüfen, welche Überarbeitungen für verschiedene AKS-Clusterversionen in einer Region verfügbar sind.
  2. Basierend auf den verfügbaren Überarbeitungen können Sie das --revision asm-X-Y-Flag (z. B. --revision asm-1-20) in den für die Gitterinstallation verwendeten Aktivierungsbefehl einschließen.

Installieren des Gittermodells während der Clustererstellung

Verwenden Sie zum Installieren des Istio-Add-Ons beim Erstellen des Clusters den Parameter --enable-azure-service-mesh oder --enable-asm.

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

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

Installieren des Gittermodells für vorhandene Cluster

Im folgenden Beispiel wird das Istio-Add-On für einen vorhandenen AKS-Cluster aktiviert:

Wichtig

Sie können das Istio-Add-On in einem vorhandenen Cluster nicht aktivieren, wenn sich bereits ein OSM-Add-On in Ihrem Cluster befindet. Deinstallieren Sie das OSM-Add-On, bevor Sie das Istio-Add-On installieren. Weitere Informationen finden Sie unter Deinstallieren des OSM-Add-Ons (Open Service Mesh) aus Ihrem AKS-Cluster (Azure Kubernetes Service). Das Istio-Add-On kann nur in AKS-Clustern mit mindestens Version 1.23 aktiviert werden.

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

Bestätigen einer erfolgreichen Installation

Führen Sie den folgenden Befehl aus, um zu überprüfen, ob das Istio-Add-On in Ihrem Cluster installiert ist:

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

Vergewissern Sie sich, dass in der Ausgabe Istio angezeigt wird.

Verwenden Sie az aks get-credentials für die Anmeldeinformationen für Ihren AKS-Cluster:

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

Verwenden Sie kubectl, um zu überprüfen, ob istiod-Pods (Istio-Steuerungsebene) erfolgreich ausgeführt werden:

kubectl get pods -n aks-istio-system

Vergewissern Sie sich, dass der Pod istiod den Status Running aufweist. Beispiel:

NAME                               READY   STATUS    RESTARTS   AGE
istiod-asm-1-18-74f7f7c46c-xfdtl   1/1     Running   0          2m

Aktivieren der Sidecar-Einschleusung

Um Sidecar automatisch auf neuen Pods zu installieren, müssen Sie Ihre Namespaces mit der Überarbeitungsbezeichnung versehen, die der aktuell installierten Überarbeitung der Kontrollebene entspricht.

Wenn Sie nicht sicher sind, welche Revision installiert ist, verwenden Sie Folgendes:

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

Anwenden der Überarbeitungsbezeichnung:

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

Wichtig

Die Standardbezeichnung istio-injection=enabled funktioniert nicht. Die explizite Versionsverwaltung, die mit der Überarbeitung der Steuerebene (z. B. istio.io/rev=asm-1-18) übereinstimmen, ist erforderlich.

Für die manuelle Sidecar-Einschleusung mithilfe von istioctl kube-inject müssen Sie zusätzliche Parameter für istioNamespace (-i) und revision (-r) angeben. Zum Beispiel:

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

Sidecar-Injektion auslösen

Sie können entweder die Beispielanwendung bereitstellen, die zum Testen bereitgestellt wird, oder die Sidecar-Einfügung für vorhandene Workloads auslösen.

Bestehende Anwendungen

Wenn Sie über vorhandene Anwendungen verfügen, die dem Gittermodell hinzugefügt werden sollen, stellen Sie sicher, dass ihre Namespaces wie im vorherigen Schritt bezeichnet werden, und starten Sie dann ihre Bereitstellungen neu, um die Sidecar-Einfügung auszulösen:

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

Stellen Sie sicher, dass die Sidecar-Injektion erfolgreich war, indem Sie sicherstellen, dass alle Container bereit sind und in der istio-proxy-Ausgabe nach dem kubectl describe-Container suchen, z. B.:

kubectl describe pod -n namespace <pod name>

Der istio-proxy-Container ist der Envoy Sidecar. Ihre Anwendung ist jetzt Teil der Datenebene.

Bereitstellen der Beispielanwendung

Verwenden Sie kubectl apply, um die Beispielanwendung im Cluster bereitzustellen:

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

Vergewissern Sie sich, dass mehrere Bereitstellungen und Dienste in Ihrem Cluster erstellt wurden. Beispiel:

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

Verwenden Sie kubectl get services, um zu überprüfen, ob die Dienste erfolgreich erstellt wurden:

kubectl get services

Vergewissern Sie sich, dass die folgenden Dienste bereitgestellt wurden:

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

Vergewissern Sie sich, dass alle Pods den Status von Running 2 Containern in der READY-Spalte aufweisen. Der zweite Container (istio-proxy) zu jedem Pod hinzugefügt ist der von Istio eingefügte Envoy-Sidecar, und der andere ist der Anwendungscontainer.

Lesen Sie die nächsten Schritte, um diese Beispielanwendung auf Eingangsgateways zu testen.

Löschen von Ressourcen

Verwenden Sie kubectl delete, um die Beispielanwendung zu löschen:

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

Wenn Sie kein Istio-Eingangsgateway in Ihrem Cluster aktivieren und das Istio-Add-On deaktivieren möchten, führen Sie den folgenden Befehl aus:

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

Achtung

Wenn Sie das Dienstnetz-Add-On deaktivieren, wird die Istio-Steuerungsebene vollständig aus dem Cluster entfernt.

CustomResourceDefintions (CRDs) von Istio werden nicht standardmäßig gelöscht. Verwenden Sie zum Bereinigen den folgenden Befehl:

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

Verwenden Sie az group delete, um Ihren Cluster und die zugehörigen Ressourcen zu löschen:

az group delete --name ${RESOURCE_GROUP} --yes --no-wait

Nächste Schritte