Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Försiktighet
Kubernetes SIG Network och Security Response Committee tillkännagav den kommande avvecklingen av Ingress NGINX-projektet, med underhåll som slutar i mars 2026. Det krävs ingen omedelbar åtgärd i dag för AKS-kluster som använder tillägget för programroutning med NGINX. Microsoft tillhandahåller officiellt stöd för kritiska säkerhetskorrigeringar för tillägg för applikationsrouting av NGINX Ingress-resurser till november 2026.
AKS alignerar sig med uppströms Kubernetes genom att flytta till Gateway API som den långsiktiga standarden för ingress och L7-trafikhantering. Vi rekommenderar att du börjar planera migreringsvägen baserat på din aktuella konfiguration:
- Tilläggsanvändare för programroutning: Produktionsarbetsbelastningar stöds fortfarande fullt ut till och med november 2026. Migrera till Gateway API-implementeringen för applikationsdirigering för en hantering av inkommande trafik med Gateway API.
-
OSS NGINX-användare har flera alternativ:
- Migrera till tillägget för programroutning med NGINX för att dra nytta av officiell support till och med november 2026 när du planerar din långsiktiga gateway-API-migrering.
- Migrera till Gateway API-implementeringen för applikationsdirigering för en hantering av inkommande trafik med Gateway API.
- Migrera till Application Gateway för containrar, som stöder både Ingress-API och gateway-API.
- Användare av servicenät: Om du planerar att använda ett tjänstnät bör du överväga det Istio-baserade service mesh-tillägget. Använd Istio Ingress i dag och planera att migrera till Istio Gateway-API:et, som nu är allmänt tillgängligt.
Tillägget för programroutning stöder Kubernetes Gateway-API:et för hantering av inkommande trafik. Kubernetes Gateway-API:et är en uppsättning resurser som tillhandahåller ett standardiserat, rollorienterat och utökningsbart ramverk för trafikhantering som är utformat för att vara en efterföljande och utveckling av ingress-API:et. Implementeringen av API:et för programdirigeringsgateway syftar därför till att fungera som en efterföljare till det hanterade NGINX-tillägget , som baseras på det äldre INGRESS-API:et och slutar ta emot Azure-support från Azure efter november 2026. Om du använder hanterad NGINX måste du migrera till implementeringen av gateway-API:et för programroutning eller en annan implementering som stöds senast i november 2026.
För produktionsarbetsbelastningar är den här modellen den rekommenderade standardingressmodellen på AKS Automatic. Från och med AKS version 1.36 använder nya AKS-automatiska kluster Kubernetes Gateway-API via tillägget för programroutning som standard. Bakgrund om standardvärden för automatisk AKS-produktion finns i Vad är Azure Kubernetes Service (AKS) Automatisk?
Jämförelse med tillägget Istio service mesh
Api-implementeringen av Kubernetes Gateway API för programroutning distribuerar en Istio-kontrollplan för att hantera infrastruktur för Kubernetes Gateway API-resurser. Det skiljer sig dock från tillägget för AKS:s Istio-tjänstnät på följande sätt:
| Feature | API för applikationsdirigeringsgateway | Tillägg för Istio-tjänstnät |
|---|---|---|
| Namn på gatewayklass | approuting-istio |
istio |
| Stöd för sidovagnsinjektion och Istio CRD | Stöds inte. Hanterar endast infrastruktur för Kubernetes Gateway API-resurser | Stöds |
| Revision och uppgraderingar | Inte reviderad. Uppgraderad på plats för både delversions- och korrigeringsversionsuppdateringar | Har reviderats. Uppgraderas via kanarieuppgraderingar för mindre versionsuppdateringar och på plats för uppdateringar av patch-versioner. |
När du ska använda gateway-API:et för programroutning i produktion
Använd den här implementeringen som standardväg för ingress när du vill:
- Ett produktionsklart, hanterat ingress-standardval i AKS Automatic.
- HTTP/HTTPS-ingress för Kubernetes med inbyggt stöd för Gateway API.
- Hanterad gateway-infrastruktur med inbyggda skyddsmekanismer för drift, såsom autoskalning och störningsbudgetar för gateway-proxyservrar.
Överväg alternativ när du behöver funktioner utanför aktuell support i den här artikeln, till exempel:
- Fullständigt beteende för Istio-service mesh med sidecar-baserad trafikhantering och mer omfattande användning av Istio-CRD:er.
- Funktioner som för närvarande anges som inte stödda, till exempel TLSRoute-baserad SNI-vidarebefordran.
Begränsningar
Du kan inte aktivera Gateway API-implementeringen för programdirigering och tillägget Istio service mesh samtidigt. Du måste inaktivera den ena först och aktivera den andra i en separat åtgärd. När du övergår från Istio service mesh-tillägget till implementeringen av Gateway API:et för programroutning måste du ta bort Istio GatewayClass och Istio CRDs efter att du har inaktiverat Istio-tillägget. Istio-tillägget installerar CRD:er (till exempel
virtualservices.networking.istio.io,destinationrules.networking.istio.iooch andra inetworking.istio.iogrupperna ,security.istio.io,telemetry.istio.ioochextensions.istio.ioAPI) som inte tas bort när tillägget är inaktiverat. Om dessa CRD:er finns kvar i klustret, startar inte kontrollplanet för Istio-applikationsdirigerings-gatewayens API. Kör följande kommando för att ta bort dem:kubectl delete crd $(kubectl get crd -o name | grep -E 'istio\.io') kubectl delete gatewayclass istioAnmärkning
Om du har befintliga anpassade Istio-resurser (till exempel VirtualServices eller DestinationRules) tas även dessa resurser bort om du tar bort crd:erna. Se till att du inte längre behöver dem innan du fortsätter.
Api-implementeringen för programroutning använder samma lista över tillåtna resursanpassningar som Istio-tillägget för validering av ConfigMap-anpassningar för
Gatewayresurser. Tilläggshanterade webhooks blockerar anpassningar som inte finns med i listan över tillåtna.Det stöds för närvarande inte att konfigurera HTTPS-ingressåtkomst till HTTPS-tjänster (till exempel vidarekoppling av SNI (Server Name Indication)) via resursen
TLSRoute. Stöd för resursenTLSRoutekommer att vara tillgängligt när AKS lägger till stöd för Istio 1.30. Då uppgraderas istio-kontrollplanet för programroutning automatiskt till den versionen.Utgående trafikhantering via programdirigeringens Gateway API-implementering stöds inte.
Det finns inte officiellt stöd för att mata in icke-Microsoft-hanterade sidovagnar (till exempel anpassad telemetri, loggning eller säkerhetsagenter) i Istio-gatewayproxypoddarna som hanteras av tillägget för programroutning. Om du väljer att mata in din egen sidovagn i en hanterad proxypodd ger Microsoft endast bästa möjliga stöd för eventuella problem du stöter på.
Åtkomstloggning i Envoy är aktiverad som standard på Gateway-proxypoddar, men loggformatet, omfattningen och leverantören kan inte anpassas via Istio
TelemetryAPI. Om du vill anpassa använder du gateway-API-ingressen i tillägget Istio Service Mesh i stället.
Förutsättningar
Uppdatera Azure CLI-versionen
Du måste använda azure-cli version 2.86.0 eller högre. Kör az --version för att hitta din azure-cli version och kör az upgrade för att uppgradera.
Aktivera CRD:erna för Managed Gateway API
Aktivera API-installationen för Managed Gateway. Användning av självhanterade GATEWAY-API CRD:er med tillägget för programroutning stöds inte.
AKS Automatiskt standardbeteende (AKS 1.36 och senare)
I nya AKS-automatiska kluster som kör AKS 1.36 eller senare aktiveras Kubernetes Gateway API via tillägget för programroutning som standard.
Du behöver vanligtvis inte köra kommandot för funktionsaktivering om du inte gör följande:
- Använda ett befintligt kluster.
- Köra en tidigare AKS-version.
- Återaktivera funktionen när den har inaktiverats.
Aktivera implementeringen av gateway-API:et för programroutning
Anmärkning
Om du skapar ett nytt AKS-automatiskt kluster på AKS 1.36 eller senare är den här funktionen aktiverad som standard. Använd kommandona i det här avsnittet för AKS Standard-kluster, tidigare versioner eller befintliga kluster som inte redan har funktionen aktiverad.
Aktivera när klustret skapas
Kör följande kommando för att aktivera implementeringen av gateway-API:et för programroutning när AKS Standard-klustret skapas:
# Set environment variables
export CLUSTER=<cluster-name>
export RESOURCE_GROUP=<resource-group-name>
# Enable the application routing Gateway API implementation during AKS Standard cluster creation
az aks create --resource-group ${RESOURCE_GROUP} --name ${CLUSTER} --enable-app-routing-istio
Aktivera för ett befintligt kluster
Kör följande kommando för att aktivera implementeringen av gateway-API:et för programroutning för ett befintligt kluster:
# Set environment variables
export CLUSTER=<cluster-name>
export RESOURCE_GROUP=<resource-group-name>
# Enable the application routing Gateway API implementation for an existing cluster
az aks update --resource-group ${RESOURCE_GROUP} --name ${CLUSTER} --enable-app-routing-istio
Du bör se istiod poddar i aks-istio-system namnområdet:
kubectl get pods -n aks-istio-system
NAME READY STATUS RESTARTS AGE
istiod-12a3bc45de-fghi6 1/1 Running 0 3m15s
istiod-78j9kl01mn-opqrs 1/1 Running 0 3m
Du bör också se ValidatingWebhookConfiguration bli distribuerad:
kubectl get validatingwebhookconfiguration
NAME WEBHOOKS AGE
aks-node-validating-webhook 1 117m
azure-service-mesh-ccp-validating-webhook 1 4m2s
Om du har aktiverat API-installationen för Managed Gateway bör du även se anpassningen av Istio Gateway ConfigMap skapas:
kubectl get cm -n aks-istio-system
NAME DATA AGE
...
istio-gateway-class-defaults 2 43s
...
Konfigurera ingress med en Kubernetes Gateway
Distribuera exempelprogram
Distribuera först exempelprogrammet httpbin i default namnområdet:
export ISTIO_RELEASE="release-1.27"
kubectl apply -f https://raw.githubusercontent.com/istio/istio/$ISTIO_RELEASE/samples/httpbin/httpbin.yaml
Skapa Kubernetes Gateway och HTTPRoute
Distribuera sedan en gateway-API-konfiguration i default-namnrymden med gatewayClassName satt till 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
Anmärkning
Exemplet ovan skapar en extern ingress load balancer-tjänst som är tillgänglig utanför klustret. Du kan lägga till anteckningar för att skapa en intern lastbalanserare och anpassa andra inställningar för lastbalanserare.
Anmärkning
Som standardinställning lägger Istio-kontrollplanet till GatewayClass-namnet approuting-istio till namnet på de resurser som det etablerar för Gateway. Du kan kommentera resursen Gateway med gateway.istio.io/name-override för att åsidosätta namnet på de etablerade resurserna. Resursnamnen måste vara mindre än 63 tecken och måste vara ett giltigt DNS-namn.
Kontrollera att en Deployment, Service, HorizontalPodAutoscaleroch PodDisruptionBudget skapas för 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
Skicka begäran till exempelapplikationen
Försök slutligen skicka en curl begäran till programmet httpbin .
INGRESS_HOST Ange först miljövariabeln:
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}')
Försök sedan skicka en HTTP-begäran till httpbin:
curl -s -I -HHost:httpbin.example.com "http://$INGRESS_HOST/get"
Du bör se ett HTTP 200 svar.
Anmärkning
Information om hur du skyddar inkommande trafik med implementeringen av gateway-API:et för programroutning och integrering med Azure DNS för hantering av värdnamn finns i Konfigurera Azure DNS och TLS med implementeringen av gateway-API:et för programdirigering för det automatiserade arbetsflödet som drivs av programroutningsoperatorn. Ett manuellt arbetsflöde för TLS-avslutning som inte förlitar sig på operatörens integrering finns i Skydda inkommande trafik med implementeringen av gateway-API:et för programroutning.
Åtkomstloggning
Implementeringen av programroutnings-API:et Gateway aktiverar som standard Envoys åtkomstloggning för alla hanterade Gateway-proxypoddar. Åtkomstloggar skrivs till proxycontainerns standardutdata i standardtextformatet Envoy. Du kan visa loggarna med hjälp kubectl logsav :
kubectl logs deployment/<your-gateway-name>-approuting-istio
Varje begäran som gatewayen hanterar skapar en loggrad som innehåller information, till exempel HTTP-metod, sökväg, svarskod, uppströmstjänst samt storlekar för begäran och svar. Den här informationen gör det enklare att observera inkommande trafik och felsöka routningsproblem utan ytterligare konfiguration.
Versionshantering och uppgraderingar
Gateway API-implementeringen för programdirigering distribuerar och uppgraderar Istio-kontrollplanet baserat på Kubernetes-versionen för AKS-klustret vid uppgraderingar av både delversioner och korrigeringsversioner. Den här modellen på plats överensstämmer med standardinställningarna för automatisk AKS-produktion, där plattformslivscykelhantering är utformad för att minska manuella åtgärder.
Istio-versionen är den högsta istio-delversionen som stöds och som är kompatibel med klustrets AKS-version. Om du till exempel har AKS-versionen 1.34 är 1.28 den högsta Istio-delversion som stöds (från och med mars 2026). Tänk på att den högsta istio-versionen som stöds för en viss Kubernetes-version kan skilja sig mellan Long-Term SUPPORT-kluster (LTS) och icke-LTS-kluster.
Om du vill hitta den högsta istio-delversionen som stöds för din AKS Kubernetes-version kontrollerar du versionskalendern för service mesh-tillägget. Även om implementeringen av Gateway API för programdirigering inte är versionshanterad, motsvarar Istio-kontrollplanets sekundärversion den angivna revisionen för service mesh-tillägget (t.ex. för service mesh-tillägget asm-1-28 är programdirigeringens Istio-kontrollplans sekundärversion 1.28). Du kan också se istio-delversionen genom att kontrollera korrigeringsversionen i istiod-distributionsbilden:
kubectl get deployment istiod -n aks-istio-system -o=jsonpath="{.spec.template.spec.containers[*].image}"
Uppgraderingar
Korrigerings- och delversionsuppgraderingar av Istio-kontrollplanet för implementeringen av gateway-API:et för programroutning sker på plats. Uppgraderingar av patchversioner sker automatiskt som en del av AKS-utgåvor. Delversionsuppgraderingar kan utlösas automatiskt eller manuellt beroende på AKS Kubernetes-versionen och tidpunkten för versioner av Istio-delversioner. Delversionsuppgraderingar sker i följande scenarier:
- AKS-klustret uppgraderas till en ny version som har en högre högsta version av Istio som stöds knuten till den. Istio-kontrollplanet uppgraderas till den högre delversionen som en del av AKS-klusteruppgradering.
- En ny Istio-version släpps för AKS och blir den högsta Istio-versionen som stöds för AKS-klusterversionen. Efter distributionen till din region uppgraderas Istio-kontrollplanet i klustret automatiskt till den nya delversionen. Om du vill följa nya versioner av Istio och se när den nya versionen distribueras till din region, följer du AKS-versioninformationen och AKS versionsspårare.
Trafikstörningar kan uppstå under uppgraderingsprocessen. För att minimera störningar under uppgraderingar installerar tillägget för programroutning en Horizontal Pod Autoscaler (HPA) med minst två repliker och en PodDisruptionBudget (PDB) med en minsta tillgänglighet på 1 för varje Gateway. Du kan anpassa dessa resurser för att ändra de här inställningarna.
Resursanpassningar
HPA-anpassning (Horizontal Pod Autoscaling) för kontrollplanet
Implementeringen av Gateway-API:et för programroutning stöder anpassning av Horizontal Pod Autoscaler (HPA) i Istio-kontrollplanet.
istiod HPA-resursen har följande standardkonfigurationer:
- Min. repliker: två
- Maximalt antal repliker: Fem
- CPU-användning: 80%
Anmärkning
För att förhindra konflikter med PodDisruptionBudget tillåter Gateway API-implementeringen för programrouting inte att minReplicas ställs in till ett värde som är lägre än det ursprungliga standardvärdet 2.
HPA-konfigurationen kan ändras genom korrigeringar och direktredigeringar. Exempel:
kubectl patch hpa istiod -n aks-istio-system --type merge --patch '{"spec": {"minReplicas": 3, "maxReplicas": 6}}'
Anpassning av gatewayresurser
Implementeringen av Gateway API för applikationsdirigering stödjer anpassning av Gateway-resurserna via annotationer och ConfigMaps. Programroutning använder samma lista över tillåtna resursanpassningar som tillägget Istio Service Mesh för gateway-API-resursanpassning. Följ stegen i Gateway-API-dokumenten för Istio-tillägget för att konfigurera resurser som genereras för Gateways och se vilka fält som ingår i vitlistan.
Anmärkning
istio-gateway-class-defaults ConfigMap etableras och avstäms av AKS när CRD:erna för Managed Gateway-API:erna och implementeringen av gateway-API:et för programroutning aktiveras tillsammans. Om du tidigare har skapat istio-gateway-class-defaults ConfigMap i aks-istio-system namnområdet själv måste du ta bort den självhanterade ConfigMap-instansen innan du aktiverar CRD:erna för den hanterade Gateway-API:en för att undvika konflikter med avstämning av den AKS-hanterade ConfigMap.
Anmärkning
Gateway API-implementeringen för programroutning lägger till Azure Load Balancer-annoteringar till Gateway Service för att konfigurera hälsoavsökningar för standardinställningen externalTrafficPolicy "Cluster". Om du ställer in spec.externalTrafficPolicy till "Local" måste du ta bort inställningen för följande annoteringar antingen i ConfigMap på GatewayClass-nivå eller i ConfigMap per gateway:
service: |
spec:
externalTrafficPolicy: Local
metadata:
annotations:
service.beta.kubernetes.io/port_80_health-probe_port:
service.beta.kubernetes.io/port_80_health-probe_protocol:
service.beta.kubernetes.io/port_80_health-probe_request-path:
Inaktivera implementeringen av gateway-API:et för programroutning
Kör följande kommando för att inaktivera implementeringen av gateway-API:et för programroutning:
az aks update --resource-group ${RESOURCE_GROUP} --name ${CLUSTER} --disable-app-routing-istio
Rensa resurser
Kör följande kommandon för att ta bort Gateway resurserna och HTTPRoute :
kubectl delete gateways.gateway.networking.k8s.io httpbin-gateway
kubectl delete httproute httpbin
Om du har skapat en ConfigMap för att anpassa din Gatewaykör du följande kommando för att ta bort ConfigMap:
kubectl delete configmap gw-options
Om du har skapat en SecretProviderClass och en hemlighet som ska användas för TLS-avslutning tar du bort följande resurser:
kubectl delete secret httpbin-credential
kubectl delete pod secrets-store-sync-httpbin
kubectl delete secretproviderclass httpbin-credential-spc