Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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 --versionausfü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 tableWeitere 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
istioctlCLI-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.
- 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. - 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
- Externe oder interne Ingresses für das Istio Service Mesh Add-on bereitstellen
- Skalierung: HPA für istiod und Eingangsgateways
- Sammeln von Metriken für Istio-Service-Mesh-Add-On-Workloads in Azure Managed Prometheus
- Bereitstellen von Ausgangsgateways für das Istio-Dienstgitter-Add-On
- Aktivieren Sie Istio CNI für das Istio-Service-Mesh-Add-On (Vorschau)