Freigeben über


Bereitstellen des Istio-basierten Service-Mesh-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 dem Dienstnetz-Add-On finden Sie unter Istio-basiertes Dienstnetz-Add-On für Azure Kubernetes Service.

Tip

Sie können Azure Copilot verwenden, um Istio in Ihren AKS-Clustern im Azure-Portal bereitzustellen. Weitere Informationen finden Sie unter Effizientes Arbeiten mit AKS-Clustern mithilfe von Azure Copilot.

Bevor Sie beginnen

  • 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 darüber zu finden, welche Istio-Add-On-Überarbeitungen in einer Region und deren Kompatibilität mit AKS-Standard- und LTS-Clusterversionen verfügbar sind, verwenden Sie den Befehl az aks mesh get-revisions:

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

    Weitere Informationen zur Kompatibilität des Istio-Add-Ons mit AKS finden Sie in der Kompatibilitätsunterstützungsrichtlinie.

  • In einigen Fällen werden Istio CRDs aus früheren Installationen möglicherweise nicht automatisch bei der Deinstallation bereinigt. Stellen Sie sicher, dass vorhandene Istio CRDs gelöscht werden:

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

    Es wird empfohlen, auch andere Ressourcen aus selbstverwalteten Installationen von Istio wie ClusterRoles, MutatingWebhookConfigurations und ValidatingWebhookConfigurations zu bereinigen.

  • Beachten Sie, dass Sie, wenn Sie istioctl CLI-Befehle verwenden möchten, ein Flag einfügen müssen, das auf die Add-On-Installation von Istio verweist: --istioNamespace aks-istio-system

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 den Leitfaden zum Installieren eines AKS-Clusters mit dem Istio-Dienstnetz-Add-On mithilfe von Bicep. Weitere Informationen zur Bicep-Ressourcendefinition für einen AKS-Cluster finden Sie unter managedCluster-Bicep-Referenz.

Note

Wenn Sie die auf bestimmten Knoten geplanten Gateway-Pods für den istiod Eingang/Ausgang benötigen, können Sie AKS-Systemknoten oder die azureservicemesh/istio.replica.preferred Knotenbeschriftung verwenden. Die Pods verfügen über Knotenaffinitäten mit einer gewichteten Präferenz von 100 für AKS-Systemknoten (bezeichnet kubernetes.azure.com/mode: system) und eine gewichtete Präferenz von 50 für Knoten mit der Bezeichnung azureservicemesh/istio.replica.preferred: true.

Ü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-24) in den für die Gitterinstallation verwendeten Aktivierungsbefehl einschließen.

Installieren eines Meshs 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 \
    --generate-ssh-keys

Mesh für bestehenden Cluster installieren

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

Important

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 aus Ihrem AKS-Cluster. 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 um die Anmeldeinformationen für Ihren AKS-Cluster abzurufen.

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-24-74f7f7c46c-xfdtl   1/1     Running   0          2m
istiod-asm-1-24-74f7f7c46c-4nt2v   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

Important

Die explizite Versionsverwaltung, die mit der Revision der Steuerebene (z. B. istio.io/rev=asm-1-24) übereinstimmt, ist erforderlich.

Die Standard istio-injection=enabled Beschriftung funktioniert nicht und führt dazu, dass die Sidecar-Einfügung den Namespace für das Add-On überspringt.

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. 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 Mesh-Netzwerk hinzugefügt werden sollen, stellen Sie sicher, dass ihre Namespaces wie im vorherigen Schritt markiert sind, und starten Sie dann ihre Bereitstellungen neu, um die Sidecar-Injektion 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.24/samples/bookinfo/platform/kube/bookinfo.yaml

Note

Cluster, die einen HTTP-Proxy für ausgehenden Internetzugriff verwenden, müssen einen Service Entry einrichten. Anweisungen zum Einrichten finden Sie unter HTTP-Proxyunterstützung in Azure Kubernetes Service

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 Running mit zwei 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.

Wenn Sie diese Beispielanwendung gegen Ingress testen möchten, schauen Sie sich die nächsten Schritte an.

Nächste Schritte