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.
Von Bedeutung
AKS-Vorschaufunktionen sind auf Selbstbedienungsbasis und freiwillig verfügbar. Vorschauversionen werden „im Istzustand“ und „wie verfügbar“ bereitgestellt und sind von den Service Level Agreements und der eingeschränkten Garantie ausgeschlossen. AKS-Vorschauversionen werden teilweise vom Kundensupport auf Grundlage der bestmöglichen Leistung abgedeckt. Daher sind diese Funktionen nicht für die Verwendung in der Produktion vorgesehen. Weitere Informationen finden Sie in den folgenden Supportartikeln:
Vorsicht
Der Kubernetes SIG Network und der Sicherheitsreaktionsausschuss kündigte die bevorstehende Einstellung des Projekts Ingress NGINX an, wobei die Wartung im März 2026 endet. Für AKS-Cluster, die das Anwendungsrouting-Add-On mit NGINX verwenden, ist heute keine sofortige Aktion erforderlich. Microsoft wird offizielle Unterstützung für kritische Sicherheitspatches für NGINX Ingress-Ressourcen für das Anwendungsrouting bis November 2026 bereitstellen.
AKS passt sich dem Upstream Kubernetes an, indem es auf Gateway API als langfristigen Standard für die Verwaltung des Ingress- und L7-Datenverkehrs umstellt. Wir empfehlen Ihnen, ihren Migrationspfad basierend auf Ihrem aktuellen Setup zu planen:
- Benutzer des Add-on Application Routing: Produktions-Workloads werden noch bis November 2026 vollständig unterstützt. Migrieren Sie auf die Application Routing Gateway API-Implementierung für eine Gateway API-basierte Verwaltung des Datenverkehrs im Eingang.
-
OSS NGINX-Benutzer haben mehrere Optionen:
- Migrieren Sie zum Anwendungsrouting-Add-On mit NGINX , um von offiziellem Support bis November 2026 zu profitieren, während Sie Ihre langfristige Gateway-API-Migration planen.
- Migrieren Sie auf die Application Routing Gateway API-Implementierung für eine Gateway API-basierte Verwaltung des Datenverkehrs im Eingang.
- Migrieren Sie zu Anwendungsgateway für Container, die sowohl die Ingress-API als auch die Gateway-API unterstützen.
- Dienstgitterbenutzer: Wenn Sie ein Dienstgitter einführen möchten, berücksichtigen Sie das Istio-basierte Dienstgitter-Add-On. Nutzen Sie heute Istio Ingress und planen Sie die Migration auf die Unterstützung der Istio-Gateway-API, sobald sie allgemein verfügbar wird (GA).
Das Anwendungsrouting-Add-On unterstützt die Kubernetes-Gateway-API für das Management von Ingress-Traffic. Die Kubernetes-Gateway-API ist eine Reihe von Ressourcen, die ein standardisiertes, rollenorientiertes und erweiterbares Framework für die Datenverkehrsverwaltung bereitstellen, das als Nachfolger und Weiterentwicklung der Ingress-API konzipiert ist. Die Implementierung der Anwendungsroutinggateway-API soll daher als Nachfolger des verwalteten NGINX-Add-Ons dienen, das auf der älteren Ingress-API basiert und nach November 2026 keine Azure-Unterstützung mehr von Azure erhält. Wenn Sie verwaltetes NGINX verwenden, müssen Sie bis November 2026 zur Gateway-API für Anwendungsrouting-Implementierung oder einer anderen unterstützten Implementierung migrieren.
Die Api-Implementierung des Anwendungsrouting-Add-Ons Kubernetes Gateway stellt eine Istio-Steuerungsebene bereit, um die Infrastruktur für Kubernetes-Gateway-API-Ressourcen zu verwalten. Es unterscheidet sich jedoch von dem Istio-Service-Mesh-Add-On für AKS in folgender Hinsicht:
| Funktion | Anwendungs-Routing-Gateway-API | Istio Service Mesh Add-on |
|---|---|---|
| Name der Gatewayklasse | approuting-istio |
istio |
| Sidecar-Injektion und Istio CRD-Unterstützung | Nicht unterstützt. Verwaltet nur infrastruktur für Kubernetes Gateway-API-Ressourcen | Unterstützt |
| Überarbeitung und Aktualisierungen | Nicht überarbeitet. In-Place-Upgrade für Minor- und Patch-Versions-Updates | Überarbeitet. Upgrade über Canary-Upgrades für Minor-Versionsupdates und In-Place für Patch-Versionsupdates |
Einschränkungen
- Die Application Routing Gateway API-Implementierung und das Istio Service Mesh Add-on können nicht gleichzeitig aktiviert werden. Sie müssen eins zuerst deaktivieren und den anderen in einem separaten Vorgang aktivieren. Beim Übergang vom Istio Service Mesh Add-On zur Gateway-API-Implementierung für das Anwendungsrouting müssen Sie die Istio GatewayClass und Istio-CRDs löschen, nachdem Sie das Istio-Add-On deaktiviert haben. Das Istio-Add-on installiert CRDs (z. B.
virtualservices.networking.istio.io,destinationrules.networking.istio.iound andere in dennetworking.istio.io,security.istio.io,telemetry.istio.ioundextensions.istio.ioAPI-Gruppen), die nicht entfernt werden, wenn das Add-on deaktiviert ist. Wenn diese CRDs im Cluster verbleiben, kann die Istio-Steuerungsebene der Gateway-API für das Anwendungsrouting nicht gestartet werden. Führen Sie den folgenden Befehl aus, um sie zu löschen:azurecli-interactive kubectl delete crd $(kubectl get crd -o name | grep -E 'istio\.io') kubectl delete gatewayclass istio> [! HINWEIS] > Wenn Sie über benutzerdefinierte Istio-Ressourcen (z. B. VirtualServices oder DestinationRules) verfügen, werden die CRDs auch gelöscht. Stellen Sie sicher, dass Sie sie nicht mehr benötigen, bevor Sie fortfahren. - Die Implementierung der Gateway-API für das Anwendungs-Routing verwendet dieselbe Allowlist zur Anpassung von Ressourcen wie das Istio-Add-On, um Anpassungen der ConfigMap für
Gateway-Ressourcen zu validieren. Anpassungen, die nicht in der Zulassungsliste enthalten sind, werden über verwaltete Add-On-Webhooks blockiert. -
Die Azure DNS- und TLS-Zertifikatverwaltung über das Anwendungsrouting-Add-On wird derzeit für die Kubernetes-Gateway-API nicht unterstützt. Sie können die Schritte in der Anleitung Application Routing Gateway API Implementation Secure Ingress befolgen, um ein
Gatewayfür die Durchführung der TLS-Terminierung zu konfigurieren. - Das Konfigurieren des HTTPS-Eingangszugriffs auf HTTPS-Dienste – d. h. SNI-Passthrough (Server Name Indication) – über die
TLSRouteRessource wird derzeit nicht unterstützt. - Die Verwaltung des Egress-Datenverkehrs über die Implementierung der Application Routing Gateway API wird nicht unterstützt.
Voraussetzungen
Installieren Sie die
aks-previewErweiterung oder aktualisieren Sie die neueste Version der Erweiterung mithilfe der Befehle [az extension add][az-extension-add] und [az extension update][az-extension-update]. wenn Sie Azure CLI verwenden. Sie müssen Versionaks-previewund höher verwenden19.0.0b24.# Install the aks-preview extension az extension add --name aks-preview # Update the aks-preview extension to the latest version az extension update --name aks-previewAktivieren Sie die Installation der verwalteten Gateway-API. Die Verwendung von selbstverwalteten Gateway-API-CRDs mit dem Anwendungsrouting-Add-On wird nicht unterstützt.
Registrieren Sie das Vorschau-Feature-Flag der App-Routing-Gateway-API.
Registrieren Sie das Featureflag
AppRoutingIstioGatewayAPIPreviewmithilfe des Befehlsaz feature register.az feature register --namespace "Microsoft.ContainerService" --name "AppRoutingIstioGatewayAPIPreview"
Aktivierung der API-Implementierung des Anwendungs-Routing-Gateways
Festlegen von Umgebungsvariablen
export CLUSTER=<cluster-name>
export RESOURCE_GROUP=<resource-group-name>
Aktivieren während der Clustererstellung
Führen Sie den folgenden Befehl aus, um die Implementierung der Anwendungsroutinggateway-API während der Clustererstellung zu aktivieren:
az aks create --resource-group ${RESOURCE_GROUP} --name ${CLUSTER} --enable-app-routing-istio
Aktivieren für einen vorhandenen Cluster
Führen Sie den folgenden Befehl aus, um die Anwendungsroutinggateway-API-Implementierung für einen vorhandenen Cluster zu aktivieren:
az aks update --resource-group ${RESOURCE_GROUP} --name ${CLUSTER} --enable-app-routing-istio
Sie sollten istiod Pods im aks-istio-system Namespace sehen:
kubectl get pods -n aks-istio-system
NAME READY STATUS RESTARTS AGE
istiod-54b4ff45cf-htph8 1/1 Running 0 3m15s
istiod-54b4ff45cf-wlvgd 1/1 Running 0 3m
Sie sollten auch sehen, dass die ValidatingWebhookConfiguration bereitgestellt werden:
kubectl get validatingwebhookconfiguration
NAME WEBHOOKS AGE
aks-node-validating-webhook 1 117m
azure-service-mesh-ccp-validating-webhook 1 4m2s
Wenn die Installation der verwalteten Gateway-API aktiviert ist, sollten Sie auch sehen, dass die ConfigMap zur Anpassung des Istio-Gateways erstellt wird.
kubectl get cm -n aks-istio-system
NAME DATA AGE
...
istio-gateway-class-defaults 2 43s
...
Konfigurieren des Eingangs mithilfe eines Kubernetes-Gateways
Bereitstellen der Beispielanwendung
Stellen Sie zunächst die Beispielanwendung httpbin im default Namespace bereit:
export ISTIO_RELEASE="release-1.27"
kubectl apply -f https://raw.githubusercontent.com/istio/istio/$ISTIO_RELEASE/samples/httpbin/httpbin.yaml
Erstellen von Kubernetes-Gateway und HTTPRoute
Stellen Sie als Nächstes eine Gateway-API-Konfiguration im default Namespace bereit, wobei gatewayClassName auf approuting-istio gesetzt ist.
kubectl apply -f - <<EOF
apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata:
name: httpbin-gateway
spec:
gatewayClassName: approuting-istio
listeners:
- name: http
port: 80
protocol: HTTP
allowedRoutes:
namespaces:
from: Same
---
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
name: httpbin
spec:
parentRefs:
- name: httpbin-gateway
hostnames: ["httpbin.example.com"]
rules:
- matches:
- path:
type: PathPrefix
value: /get
backendRefs:
- name: httpbin
port: 8000
EOF
Hinweis
Im obigen Beispiel wird ein externer Eingangslastenausgleichsdienst erstellt, auf den von außerhalb des Clusters zugegriffen werden kann. Sie können Anmerkungen hinzufügen, um einen internen Lastenausgleich zu erstellen und andere Einstellungen für den Lastenausgleich anzupassen.
Hinweis
Standardmäßig hängt die Steuerungsebene von Istio den GatewayClass Namen approuting-istio an den Namen der Ressourcen an, die sie für den Gateway bereitstellt. Sie können Ihre Gateway Ressource mit gateway.istio.io/name-override kommentieren, um den Namen der bereitgestellten Ressourcen zu überschreiben. Die Ressourcennamen müssen kleiner als 63 Zeichen sein und ein gültiger DNS-Name sein.
Stellen Sie sicher, dass ein Deployment, ein Service, ein HorizontalPodAutoscaler und ein PodDisruptionBudget für httpbin-gateway erstellt werden.
kubectl get deployment httpbin-gateway-approuting-istio
NAME READY UP-TO-DATE AVAILABLE AGE
httpbin-gateway-approuting-istio 2/2 2 2 6m41s
kubectl get service httpbin-gateway-approuting-istio
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
httpbin-gateway-approuting-istio LoadBalancer 10.0.54.96 <external-ip> 15021:30580/TCP,80:32693/TCP 7m13s
kubectl get hpa httpbin-gateway-approuting-istio
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
httpbin-gateway-approuting-istio Deployment/httpbin-gateway-approuting-istio cpu: 3%/80% 2 5 2 8m13s
kubectl get pdb httpbin-gateway-approuting-istio
NAME MIN AVAILABLE MAX UNAVAILABLE ALLOWED DISRUPTIONS AGE
httpbin-gateway-approuting-istio 1 N/A 1 9m1s
Anforderung an Beispielanwendung senden
Versuchen Sie schließlich, eine curl Anforderung an die httpbin Anwendung zu senden. Legen Sie zunächst die Umgebungsvariable INGRESS_HOST fest:
kubectl wait --for=condition=programmed gateways.gateway.networking.k8s.io httpbin-gateway
export INGRESS_HOST=$(kubectl get gateways.gateway.networking.k8s.io httpbin-gateway -ojsonpath='{.status.addresses[0].value}')
Versuchen Sie dann, eine HTTP-Anforderung an httpbin:
curl -s -I -HHost:httpbin.example.com "http://$INGRESS_HOST/get"
Es sollte eine HTTP 200-Antwort angezeigt werden.
Hinweis
Informationen zum Sichern des eingehenden Datenverkehrs mit der Implementierung der Gateway-API für das Anwendungsrouting finden Sie im folgenden Leitfaden zum Synchronisieren geheimer Schlüssel aus Azure Key Vault (AKV) zum Sichern des Gateway-API-Eingangsdatenverkehrs mit TLS-Beendigung.
Versionsverwaltung und Upgrades
Die Application Gateway API-Implementierung für das Routing von Anwendungen stellt die Istio Steuerungsebene auf der Grundlage der Kubernetes-Version des AKS-Clusters bereit und führt Upgrades durch, und zwar sowohl für kleinere Versionen als auch für Patches.
Die Istio-Version ist die maximal unterstützte Istio-Nebenversion, die mit der AKS-Version Ihres Clusters kompatibel ist. Wenn Sie beispielsweise die AKS-Version 1.34 verwenden, ist die maximal unterstützte Istio-Nebenversion, die installiert ist (Stand: März 2026), 1.28. Beachten Sie, dass die maximal unterstützte Istio-Version für eine bestimmte Kubernetes-Version zwischen Long-Term Supportclustern (LTS) und Nicht-LTS-Clustern unterschiedlich sein kann.
Um die maximal unterstützte Istio-Minor-Version für Ihre AKS Kubernetes-Version zu finden, können Sie den Service Mesh Add-on-Veröffentlichungskalender überprüfen. Während die Implementierung der Application Gateway API für das Routing nicht überarbeitet wird, entspricht die Nebenversion der Istio Steuerungsebene der gegebenen Revision des Service Mesh Add-Ons (z.B.: für das Service Mesh Add-On asm-1-28 wäre die Nebenversion der Istio Steuerungsebene für das Application Routing 1.28). Sie können auch die Istio-Nebenversion sehen, indem Sie die Patchversion im istiod Bereitstellungsimage überprüfen: kubectl get deployment istiod -n aks-istio-system -o=jsonpath="{.spec.template.spec.containers[*].image}".
Aktualisierungen
Upgrades der Patch-Version und der Nebenversion der Istio-Steuerungsebene für die Implementierung der Application Routing Gateway API finden In-Place statt. Upgrades der Patch-Version der Istio Steuerungsebene werden automatisch als Teil der AKS-Releases ausgelöst. Nebenversionsupgrades können abhängig von der AKS Kubernetes-Version und dem Zeitpunkt der Istio-Minor-Version-Veröffentlichungen automatisch oder manuell ausgelöst werden. Nebenversionsupgrades treten in den folgenden beiden Szenarien auf:
- Der AKS-Cluster wird auf eine neue Version aktualisiert, die mit einer höheren maximal unterstützten Istio-Version angeheftet ist. Die Steuerungsebene von Istio wird im Rahmen des Upgrades des AKS-Clusters auf die höhere Minor-Version aktualisiert.
- Eine neue Istio-Version wird für AKS veröffentlicht und ist jetzt die maximal unterstützte Istio-Version für die AKS-Clusterversion. Die Istio Steuerungsebene auf Ihrem Cluster wird automatisch auf die neue Minor-Version aktualisiert, nachdem das Release in Ihrer Region ausgerollt wurde. Folgen Sie den AKS-Versionshinweisen und der AKS-Versionsverfolgung , um neue Istio-Versionsversionen nachzuverfolgen und zu sehen, wann die neue Version für Ihre Region eingeführt wurde.
Es ist möglich, dass Während des Upgradevorgangs Verkehrsunterbrechungen auftreten können. Um Unterbrechungen bei Upgrades zu minimieren, stellt das Application Routing Add-on einen Horizontal Pod Autoscaler (HPA) mit mindestens 2 Repliken und ein PodDisruptionBudget (PDB) mit einer Mindestverfügbarkeit von 1 für jeden Gateway bereit. Sie können diese Ressourcen anpassen , um diese Einstellungen zu ändern.
Ressourcenanpassungen
Anpassung der Steuerungsebene Horizontal Pod Autoscaling (HPA)
Die Implementierung der Application Routing Gateway API unterstützt die Anpassung der Istio Steuerungsebene Horizontal Pod Autoscaler (HPA). Die istiod HPA-Ressource verfügt über die folgenden Standardkonfigurationen:
- Minimale Repliken: 2
- Maximale Anzahl Replikate: 5
- CPU-Auslastung: 80%
Hinweis
Um Konflikte mit PodDisruptionBudget zu vermeiden, bietet die Application Routing Gateway API-Implementierung keine Möglichkeit, minReplicas unterhalb des anfänglichen Standards von 2 festzulegen.
Die HPA-Konfiguration kann über Patches und direkte Bearbeitungen geändert werden. Beispiel:
kubectl patch hpa istiod -n aks-istio-system --type merge --patch '{"spec": {"minReplicas": 3, "maxReplicas": 6}}'
Gateway-Ressourcenanpassung
Die API-Implementierung des Anwendungsrouting-Gateways unterstützt die Anpassung der Gateway Ressourcen über Annotations und ConfigMaps. Das Application Routing bietet dieselbe Möglichkeit der Ressourcenanpassung wie das Istio Add-on für das Gateway Mesh zur Anpassung der Gateway API-Ressourcen. Folgen Sie den Schritten in den Istio Add-on Gateway API docs, um die für die Gateways generierten Ressourcen zu konfigurieren und um zu sehen, welche Felder unter die zulässige Liste fallen.
Hinweis
Die istio-gateway-class-defaults ConfigMap wird von AKS bereitgestellt und abgestimmt, wenn die Managed Gateway API CRDs und die Application Routing Gateway API Implementierung gemeinsam aktiviert sind. Wenn Sie zuvor die istio-gateway-class-defaults ConfigMap im aks-istio-system Namespace selbst erstellt haben, müssen Sie die selbstverwaltete ConfigMap-Instanz löschen, bevor Sie die CRDs der verwalteten Gateway-API aktivieren, um Konflikte beim Abgleich der von AKS verwalteten ConfigMap zu vermeiden.
Deaktivieren der API-Implementierung des Anwendungs-Routing-Gateways
Führen Sie den folgenden Befehl aus, um die Implementierung der API für Anwendungs-Routing-Gateway zu deaktivieren.
az aks update --resource-group ${RESOURCE_GROUP} --name ${CLUSTER} --disable-app-routing-istio
Bereinigen von Ressourcen
Führen Sie die folgenden Befehle aus, um Gateway und HttpRoute zu löschen.
kubectl delete gateways.gateway.networking.k8s.io httpbin-gateway
kubectl delete httproute httpbin
Wenn Sie eine ConfigMap erstellt haben, um Ihren GatewayAnzupassen, führen Sie den folgenden Befehl aus, um die ConfigMap zu löschen:
kubectl delete configmap gw-options
Wenn Sie eine SecretProviderClass und einen geheimen Schlüssel für die TLS-Beendigung erstellt haben, löschen Sie auch die folgenden Ressourcen:
kubectl delete secret httpbin-credential
kubectl delete pod secrets-store-sync-httpbin
kubectl delete secretproviderclass httpbin-credential-spc
Nächste Schritte
Sichern Sie den eingehenden Datenverkehr mit der API-Implementierung des Anwendungs-Routing-Gateways