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 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.
Ü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-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 \
--generate-ssh-keys
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
istiod-asm-1-18-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
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
Hinweis
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.
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.
CustomResourceDefintion
s (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
Azure Kubernetes Service