Delen via


Ingress configureren met de Kubernetes Gateway API via de toevoeging voor toepassingsroutering (preview)

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:

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 Gateway resources. 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 Gateway te 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 TLSRoute resource wordt momenteel niet ondersteund.
  • Uitgaand verkeerbeheer via de implementatie van de gateway-API voor toepassingsroutering wordt niet ondersteund.

Vereiste voorwaarden

  • Installeer de aks-preview extensie 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 versie aks-preview en 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-preview
    
  • Schakel 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 AppRoutingIstioGatewayAPIPreview functievlag met behulp van de az feature register opdracht.

    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