Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Belangrijk
AKS preview-functies zijn beschikbaar op selfservice, opt-in basis. Previews worden geleverd 'zoals het is' en 'voor zover beschikbaar' en zijn uitgesloten van de serviceovereenkomsten en beperkte garantie. AKS-previews worden gedeeltelijk gedekt door klantondersteuning naar best vermogen. Zodoende zijn deze functies niet bedoeld voor productiegebruik. Zie de volgende ondersteuningsartikelen voor meer informatie:
Waarschuwing
Het Kubernetes SIG Network en de Security Response Committee kondigde de aanstaande buitengebruikstelling van het NGINX-project voor inkomend verkeer aan, met een einde aan onderhoud in maart 2026. Er is momenteel geen onmiddellijke actie vereist voor AKS-clusters met behulp van de invoegtoepassing voor toepassingsroutering met NGINX. Microsoft biedt officiële ondersteuning tot en met november 2026 voor kritieke beveiligingspatches voor de application routing-add-on NGINX Ingress-resources.
AKS is afgestemd op upstream Kubernetes door over te stappen op gateway-API als de langetermijnstandaard voor inkomend verkeer en L7-verkeerbeheer. U wordt aangeraden uw migratiepad te plannen op basis van uw huidige installatie:
- Invoegtoepassingsgebruikers voor toepassingsroutering: Productieworkloads blijven volledig ondersteund tot november 2026. Migreer naar de Gateway API-implementatie voor toepassingsroutering voor een op Gateway API gebaseerd beheer van inkomend verkeer.
-
OSS NGINX-gebruikers hebben verschillende opties:
- Migreer naar de invoegtoepassing voor toepassingsroutering met NGINX om te profiteren van officiële ondersteuning tot en met november 2026 tijdens het plannen van uw gateway-API-migratie op lange termijn.
- Migreer naar de Gateway API-implementatie voor toepassingsroutering voor een op Gateway API gebaseerd beheer van inkomend verkeer.
- Migreren naar Application Gateway voor containers, die ondersteuning biedt voor zowel de Ingress-API als de Gateway-API.
- Service mesh-gebruikers: Als u van plan bent om een service-mesh te gebruiken, kunt u de invoegtoepassing service mesh op basis van Istio overwegen. Gebruik Istio Ingress en plan om te migreren naar de API-ondersteuning van Istio Gateway wanneer het algemeen beschikbaar is.
De invoegtoepassing voor toepassingsroutering ondersteunt de Kubernetes Gateway-API voor inkomend verkeerbeheer. De Kubernetes Gateway API is een set van resources die een gestandaardiseerd, rolgeoriënteerd en uitbreidbaar framework voor verkeersbeheer bieden, ontworpen als opvolger en evolutie van de Ingress API. De implementatie van de toepassingsroutering-gateway-API is dus bedoeld als opvolger van de beheerde NGINX-invoegtoepassing, die is gebaseerd op de verouderde Ingress API en na november 2026 zal geen Azure-ondersteuning meer ontvangen. Als u beheerde NGINX gebruikt, moet u tegen november 2026 migreren naar de gateway-API-implementatie van de toepassingsroutering of een andere ondersteunde implementatie.
De Kubernetes Gateway-API-implementatie voor toepassingsroutering implementeert een Istio-besturingsvlak om infrastructuur voor Kubernetes Gateway-API-resources te beheren. Het verschilt echter op de volgende manieren van de invoegtoepassing Istio service mesh voor AKS :
| Feature | Gateway-API voor toepassingsroutering | Invoegtoepassing voor Istio-service-mesh |
|---|---|---|
| Naam van gatewayklasse | approuting-istio |
istio |
| Sidecar injectie en Istio CRD ondersteuning | Wordt niet ondersteund. Beheert alleen infrastructuur voor Kubernetes Gateway-API-resources | Ondersteund |
| Revisie en upgrades | Niet herzien. In-place bijgewerkt voor zowel minor- als patchupdates | Herzien. Bijgewerkt via canary-upgrades voor secundaire versie-updates en in-place voor patchversie-updates |
Beperkingen
- De implementatie van de gateway-API voor toepassingsroutering en de invoegtoepassing Istio-service-mesh kunnen niet tegelijkertijd worden ingeschakeld. U moet er eerst een uitschakelen en de andere inschakelen in een afzonderlijke bewerking.
- De implementatie van de gateway-API voor toepassingsroutering maakt gebruik van dezelfde acceptatielijst voor resourceaanpassing als de Istio-invoegtoepassing voor het valideren van ConfigMap-aanpassingen voor
Gatewayresources. Aanpassingen die niet op de toegelaten lijst staan, worden geblokkeerd via door add-ons beheerde webhooks. -
Azure DNS- en TLS-certificaatbeheer via de invoegtoepassing voor toepassingsroutering wordt momenteel niet ondersteund voor de Kubernetes Gateway-API. U kunt de stappen in de secure ingress-gids voor de gateway-API-implementatie van toepassingsroutering volgen om een
Gatewayte configureren voor het uitvoeren van TLS-beëindiging. - Het configureren van HTTPS-toegang tot HTTPS-services , d.w.z. SNI-passthrough (Server Name Indication), via de
TLSRouteresource wordt momenteel niet ondersteund. - Uitgaand verkeerbeheer via de implementatie van de gateway-API voor toepassingsroutering wordt niet ondersteund.
Vereiste voorwaarden
Installeer de
aks-previewextensie of werk deze bij naar de nieuwste versie van de extensie met behulp van de opdrachten [az extension add][az-extension-add] en [az extension update][az-extension-update]. als u Azure CLI gebruikt. U moet versieaks-previewen hoger gebruiken19.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-previewSchakel de installatie van de Managed Gateway-API in. Het gebruik van zelfbeheerde GATEWAY-API-CRD's met de invoegtoepassing voor toepassingsroutering wordt niet ondersteund.
De preview-functievlag voor de App-routeringsgateway-API registreren
Registreer de
AppRoutingIstioGatewayAPIPreviewfunctievlag met behulp van deaz feature registeropdracht.az feature register --namespace "Microsoft.ContainerService" --name "AppRoutingIstioGatewayAPIPreview"
De implementatie van de gateway-API voor toepassingsroutering inschakelen
Omgevingsvariabelen instellen
export CLUSTER=<cluster-name>
export RESOURCE_GROUP=<resource-group-name>
Inschakelen tijdens het maken van het cluster
Voer de volgende opdracht uit om de implementatie van de gateway-API voor toepassingsroutering in te schakelen tijdens het maken van het cluster:
az aks create --resource-group ${RESOURCE_GROUP} --name ${CLUSTER} --enable-app-routing-istio
Inschakelen voor een bestaand cluster
Voer de volgende opdracht uit om de implementatie van de gateway-API voor toepassingsroutering in te schakelen voor een bestaand cluster:
az aks update --resource-group ${RESOURCE_GROUP} --name ${CLUSTER} --enable-app-routing-istio
Je zou istiod pods in de aks-istio-system namespace moeten zien.
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
U ziet ook dat de ValidatingWebhookConfiguration implementatie wordt uitgevoerd:
kubectl get validatingwebhookconfiguration
NAME WEBHOOKS AGE
aks-node-validating-webhook 1 117m
azure-service-mesh-ccp-validating-webhook 1 4m2s
Als u de installatie van de Managed Gateway-API hebt ingeschakeld, ziet u ook dat de ConfigMap-aanpassing van de Istio-gateway wordt gemaakt:
kubectl get cm -n aks-istio-system
NAME DATA AGE
...
istio-gateway-class-defaults 2 43s
...
Inkomend verkeer configureren met behulp van een Kubernetes-gateway
Voorbeeldtoepassing implementeren
Implementeer eerst de voorbeeldtoepassing httpbin in de default naamruimte:
export ISTIO_RELEASE="release-1.27"
kubectl apply -f https://raw.githubusercontent.com/istio/istio/$ISTIO_RELEASE/samples/httpbin/httpbin.yaml
Kubernetes Gateway en HTTPRoute maken
Implementeer vervolgens een API-gatewayconfiguratie in de default naamruimte met de gatewayClassName ingesteld op approuting-istio.
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
Opmerking
In het bovenstaande voorbeeld wordt een externe load balancer-service voor inkomend verkeer gemaakt die toegankelijk is van buiten het cluster. U kunt aantekeningen toevoegen om een interne load balancer te maken en andere load balancer-instellingen aan te passen.
Opmerking
Standaard zal het Istio-besturingsvlak de GatewayClass naam approuting-istio toevoegen aan de naam van de resources die het voor de Gateway voorziet. U kunt uw Gateway resource annoteren met gateway.istio.io/name-override om de naam van de ingerichte resources te wijzigen. De resourcenamen moeten kleiner zijn dan 63 tekens en moeten een geldige DNS-naam zijn.
Controleer of een Deployment, Service, HorizontalPodAutoscaler en PodDisruptionBudget worden aangemaakt voor httpbin-gateway:
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
Aanvraag verzenden naar voorbeeldtoepassing
Probeer ten slotte een curl aanvraag naar de httpbin toepassing te verzenden. Stel eerst de INGRESS_HOST omgevingsvariabele in:
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}')
Verzend vervolgens een HTTP-aanvraag naar httpbin:
curl -s -I -HHost:httpbin.example.com "http://$INGRESS_HOST/get"
U zou een HTTP 200 antwoord moeten zien.
Opmerking
Zie de volgende handleiding om geheimen vanuit Azure Key Vault (AKV) te synchroniseren voor het beveiligen van inkomend verkeer met TLS-beëindiging van de Gateway API.
Versiebeheer en upgrades
De implementatie van de Gateway-API voor toepassingsroutering implementeert en upgradet het Besturingsvlak van Istio op basis van de Kubernetes-versie van het AKS-cluster voor zowel secundaire als patchversie-upgrades.
De Istio-versie is de maximaal ondersteunde Secundaire Versie van Istio die compatibel is met de AKS-versie van uw cluster. Als u bijvoorbeeld versie 1.34 van AKS gebruikt, is de maximaal ondersteunde geïnstalleerde minor-versie van Istio (vanaf maart 2026) 1.28. Houd er rekening mee dat de maximaal ondersteunde Istio-versie voor een bepaalde Kubernetes-versie kan verschillen tussen Long-Term LTS-clusters (Support) en niet-LTS-clusters.
Als u de maximaal ondersteunde minore versie van Istio voor uw AKS Kubernetes-versie wilt vinden, kunt u de releasekalender van de service mesh add-on controleren. Hoewel de implementatie van de Gateway-API voor toepassingsroutering niet wordt herzien, komt de minor versie van het Istio-besturingsvlak overeen met de gegeven service mesh-invoegtoepassing (bijvoorbeeld: voor de service mesh-invoegtoepassing asm-1-28, zou de minor versie van het Istio-besturingsvlak voor toepassingsroutering 1.28 zijn). U kunt ook de minor versie van Istio zien door de patchversie in de istiod deployment-image te controleren: kubectl get deployment istiod -n aks-istio-system -o=jsonpath="{.spec.template.spec.containers[*].image}".
Verbeteringen
Patchversie en secundaire versie-upgrades van het Istio-besturingsvlak voor de implementatie van de gateway-API voor toepassingsroutering vinden plaats. Patchversie-upgrades van het Istio control plane worden automatisch geïnitieerd als onderdeel van AKS-releases. Upgrades van kleine versies kunnen automatisch of handmatig worden geactiveerd, afhankelijk van de AKS Kubernetes-versie en de timing van de releases van kleine versies van Istio. Secundaire versie-upgrades worden uitgevoerd in de volgende twee scenario's:
- Het AKS-cluster wordt geüpgraded naar een nieuwe versie met een hogere ondersteunde Istio-versie die aan deze nieuwe versie is gekoppeld. Het Istio-controlevlak wordt geüpgraded naar een hogere subversie als onderdeel van de upgrade van het AKS-cluster.
- Er wordt een nieuwe Istio-versie uitgebracht voor AKS en is nu de maximaal ondersteunde Istio-versie voor de AKS-clusterversie. Het Istio-besturingsvlak op uw cluster wordt automatisch bijgewerkt naar de nieuwe secundaire versie nadat de release is geïmplementeerd in uw regio. Volg de releaseopmerkingen van AKS en de AKS-releasetracker om nieuwe Versies van Istio bij te houden en te zien wanneer de nieuwe versie is geïmplementeerd in uw regio.
Het is mogelijk dat verkeersonderbrekingen kunnen optreden tijdens het upgradeproces. Om onderbrekingen tijdens upgrades te minimaliseren, implementeert de add-on voor toepassingsroutering een Horizontal Pod Autoscaler (HPA) met minimaal 2 replica's en een PodDisruptionBudget (PDB) met een minimale beschikbaarheid van 1 voor elk Gateway. U kunt deze resources aanpassen om deze instellingen te wijzigen.
Resourceaanpassingen
Aanpassing van de horizontale Pod Autoscaling (HPA) in de control plane
De implementatie van de Gateway-API voor toepassingsroutering ondersteunt aanpassing van het Istio-besturingsvlak Horizontal Pod Autoscaler (HPA). De istiod HPA-resource heeft de volgende standaardconfiguraties:
- Minimale replicas: 2
- Maximum aantal replica's: 5
- CPU-gebruik: 80%
Opmerking
Om conflicten met de implementatie van de PodDisruptionBudgetgateway-API voor toepassingsroutering te voorkomen, staat de instelling van de minReplicas niet lager dan de initiële standaardwaarde van 2 toe.
De HPA-configuratie kan worden gewijzigd via patches en directe bewerkingen. Voorbeeld:
kubectl patch hpa istiod -n aks-istio-system --type merge --patch '{"spec": {"minReplicas": 3, "maxReplicas": 6}}'
Aanpassing van gatewaybronnen
De implementatie van de gateway-API voor toepassingsroutering ondersteunt het aanpassen van de Gateway resources via aantekeningen en ConfigMaps. Toepassingsroutering maakt gebruik van dezelfde toegestane lijst voor resourceaanpassing als de Istio-service-mesh-add-on voor het aanpassen van Gateway-API-resources. Volg de stappen in de Api-documenten voor de Istio-invoegtoepassing om resources te configureren die zijn gegenereerd voor de Gateways en om te zien welke velden onder de acceptatielijst vallen.
Opmerking
De istio-gateway-class-defaults ConfigMap wordt ingericht en afgestemd door AKS wanneer de Managed Gateway API-CRD's en de gateway-API-implementatie voor toepassingsroutering samen worden ingeschakeld. Als u de istio-gateway-class-defaults ConfigMap eerder zelf in de aks-istio-system naamruimte hebt gemaakt, moet u het zelfbeheerde ConfigMap-exemplaar verwijderen voordat u de MANAGED Gateway-API-CRD's inschakelt om conflicten met afstemming van de door AKS beheerde ConfigMap te voorkomen.
De implementatie van de gateway-API voor toepassingsroutering uitschakelen
Voer de volgende opdracht uit om de implementatie van de gateway-API voor toepassingsroutering uit te schakelen:
az aks update --resource-group ${RESOURCE_GROUP} --name ${CLUSTER} --disable-app-routing-istio
Middelen opschonen
Voer de volgende commando's uit om Gateway en HttpRoute te verwijderen.
kubectl delete gateways.gateway.networking.k8s.io httpbin-gateway
kubectl delete httproute httpbin
Als u een ConfigMap hebt gemaakt om uw Gatewayconfiguratie aan te passen, voert u de volgende opdracht uit om de ConfigMap te verwijderen:
kubectl delete configmap gw-options
Als u een SecretProviderClass en een geheim hebt gemaakt dat moet worden gebruikt voor TLS-beëindiging, verwijdert u ook de volgende resources:
kubectl delete secret httpbin-credential
kubectl delete pod secrets-store-sync-httpbin
kubectl delete secretproviderclass httpbin-credential-spc
Volgende stappen
Inkomend verkeer beveiligen met de implementatie van de Gateway-API voor toepassingsroutering