Beheerd NGINX-inkomend verkeer met de invoegtoepassing voor toepassingsroutering

Waarschuwing

Het Kubernetes SIG Network en de Security Response Committee kondigden de buitengebruikstelling van het Ingress NGINX-project aan, met onderhoud dat in maart 2026 is beëindigd. 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 en maakt gebruik van Gateway API als de langetermijnstandaard voor ingress en L7-verkeerbeheer. Migreren voordat de ondersteuning eindigt in november 2026, op basis van uw vereisten:

Een manier om Hypertext Transfer Protocol (HTTP) en beveiligd (HTTPS)-verkeer te routeren naar toepassingen die worden uitgevoerd op een AKS-cluster (Azure Kubernetes Service), is het kubernetes-object voor inkomend verkeer te gebruiken. Wanneer u de invoegtoepassing voor toepassingsroutering inschakelt met NGINX, wordt er een controller voor inkomend verkeer in uw AKS-cluster gemaakt, geconfigureerd en beheerd.

In dit artikel leest u hoe u de beheerde NGINX-ingangscontroller inschakelt en een inkomend object configureert om verkeer naar een toepassing in uw AKS-cluster te routeren.

Invoegtoepassing voor toepassingsroutering met NGINX-functies

De invoegtoepassing voor toepassingsroutering met NGINX levert het volgende:

  • Eenvoudige configuratie van beheerde NGINX-ingangscontrollers op basis van kubernetes NGINX-ingangscontroller.
  • Integratie met Azure DNS voor beheer van openbare en privézones.
  • SSL-beëindiging met certificaten die zijn opgeslagen in Azure Key Vault.

Zie voor andere configuraties:

Belangrijk

Vanaf 30 september 2027 ondersteunt Azure Kubernetes Service (AKS) de invoegtoepassing Open Service Mesh (OSM) niet meer. Het upstream Open Service Mesh-project is buiten gebruik gesteld.

Als uw cluster gebruikmaakt van de OSM-invoegtoepassing, migreert u naar de Istio-invoegtoepassing vóór de einddatum van de ondersteuning. Deze buitengebruikstellingsmelding is alleen van toepassing op de beheerde OSM-invoegtoepassing en heeft geen betrekking op opensource- of zelfbeheerde mesh-installaties. Zie Migratierichtlijnen van de OSM-invoegtoepassing naar de Istio-invoegtoepassing voor migratiestappen. Als u op de hoogte wilt blijven van AKS-aankondigingen en updates, volgt u de opmerkingen bij de AKS-release.

Prerequisites

  • Een Azure-abonnement. Als u geen Azure-abonnement hebt, kunt u een gratis account maken.
  • Azure CLI versie 2.54.0 of hoger geïnstalleerd en geconfigureerd. Voer az --version uit om de versie te vinden. Als u Azure CLI wilt installeren of upgraden, raadpleegt u Azure CLI installeren.

Limitations

  • De invoegtoepassing voor toepassingsroutering ondersteunt maximaal vijf Azure DNS-zones.

  • De invoegtoepassing voor toepassingsroutering kan alleen worden ingeschakeld op AKS-clusters met beheerde identiteit.

  • Alle globale Azure DNS-zones die zijn geïntegreerd met de invoegtoepassing, moeten zich in dezelfde resourcegroep bevinden.

  • Alle privé-Azure DNS-zones die zijn geïntegreerd met de invoegtoepassing, moeten zich in dezelfde resourcegroep bevinden.

  • Het bewerken van de ingress-nginx ConfigMap in de app-routing-system naamruimte wordt niet ondersteund.

  • Als een snippet-annotatiewaarde overeenkomt met een van de volgende geblokkeerde waarden, wordt de Ingress niet geconfigureerd:

    Geblokkeerde waarde Effect
    load_module De Ingress is niet geconfigureerd.
    lua_package De Ingress is niet geconfigureerd.
    _by_lua De Ingress is niet geconfigureerd.
    location De Ingress is niet geconfigureerd.
    root De Ingress is niet geconfigureerd.
    proxy_pass De Ingress is niet geconfigureerd.
    serviceaccount De Ingress is niet geconfigureerd.
    { De Ingress is niet geconfigureerd.
    } De Ingress is niet geconfigureerd.
    ' De Ingress is niet geconfigureerd.
  • De invoegtoepassing biedt geen officiële ondersteuning voor het injecteren van niet door Microsoft beheerde sidecars (bijvoorbeeld aangepaste telemetrie-, logregistratie- of beveiligingsagenten) in de ingress-nginx-proxypods die door de invoegtoepassing worden beheerd. Als u ervoor kiest om uw eigen sidecar in een beheerde proxypod te injecteren, biedt Microsoft alleen best effort-ondersteuning voor eventuele problemen die u ondervindt.

Multitenantclusters

Belangrijk

De beheerde NGINX-ingangscontroller isoleert tenants niet op naamruimteniveau. Gebruik deze niet als een beveiligingsgrens tussen tenants die een cluster delen.

De beheerde NGINX Ingress-controller is gebaseerd op het upstream-ingress-nginx-project. In het project ingress-nginx wordt ervan uitgegaan dat gebruikers die Ingress-objecten kunnen maken clusterbeheerders zijn. Het project zegt dat geen gebruik moet worden gemaakt van ingress-nginx in multi-tenant productieclusters. Zie Kubernetes met meerdere tenants in de veelgestelde vragen over ingress-nginx voor meer informatie.

Het volgende gedrag overschrijdt de grenzen van naamruimten:

  • Eén NGINX Ingress-controller dient de Ingress-objecten van zijn Ingress-klasse vanuit alle namespaces. De controller voegt de regels van deze Ingress-objecten samen in één NGINX-configuratie. Zie Hoe het werkt voor meer informatie.
  • Een Ingress in één naamruimte kan paden toevoegen aan een host die door een Ingress in een andere naamruimte wordt gebruikt. Als twee Ingress-objecten dezelfde host gebruiken, bepaalt het oudste Ingress-object de TLS-instellingen en aantekeningen op serverniveau voor die host. Als ze ook hetzelfde pad gebruiken, krijgt het oudste Ingress-object het verkeer voor dat pad.
  • Met de invoegtoepassing zijn snippetannotaties mogelijk, met uitzondering van de geblokkeerde waarden in Beperkingen. Snippetannotaties voegen NGINX-configuratie toe aan de gedeelde controller.
  • De NGINX Ingress-controller kan Secrets lezen in alle namespaces. De invoegtoepassing maakt de allow-cross-namespace-resources-optie beschikbaar. Met deze optie kunnen sommige aantekeningen verwijzen naar een Secret of ConfigMap in een andere namespace.
  • Een gebruiker die een Ingress kan maken, kan elke Ingress-klasse gebruiken. Een afzonderlijk NginxIngressController voor elke tenant isoleert geen tenants.

Gebruik deze procedures om dit risico te verminderen:

  • Geef toestemming om Ingress-objecten alleen te maken of bij te werken aan gebruikers die u vertrouwt op hetzelfde niveau als clusterbeheerders.
  • Als tenants elkaar niet vertrouwen, gebruikt u een afzonderlijk cluster voor elke tenant. Zie Fysiek geïsoleerde clusters voor meer informatie.

Schakel de invoegtoepassing voor toepassingsroutering in met behulp van Azure CLI

Inschakelen op een nieuw cluster

Als u toepassingsroutering op een nieuw cluster wilt inschakelen, gebruikt u de az aks create opdracht en geeft u de --enable-app-routing vlag op.

az aks create \
    --resource-group <resource-group-name> \
    --name <cluster-name> \
    --location <location> \
    --enable-app-routing \
    --generate-ssh-keys

Inschakelen op een bestaand cluster

Gebruik de az aks approuting enable opdracht om toepassingsroutering in te schakelen op een bestaand cluster.

az aks approuting enable --resource-group <resource-group-name> --name <cluster-name>

Verbinding maken met uw AKS-cluster

Als u vanaf uw lokale computer verbinding wilt maken met het Kubernetes-cluster, gebruikt kubectlu de Kubernetes-opdrachtregelclient. U kunt deze lokaal installeren met behulp van de az aks install-cli opdracht. Als u Azure Cloud Shell gebruikt, is kubectl al geïnstalleerd.

Configureer kubectl om verbinding te maken met uw Kubernetes-cluster met behulp van het az aks get-credentials commando.

az aks get-credentials --resource-group <resource-group-name> --name <cluster-name>

Een app implementeren

Kubernetes-objecten voor inkomend verkeer definiëren routeringsregels voor een controller voor inkomend verkeer. Gebruik de beheerde Ingress-klasse van de add-on voor toepassingsroutering en de ondersteunde annotaties om te configureren hoe de controller verkeer afhandelt.

  1. Maak de toepassingsnaamruimte genaamd aks-store om de voorbeeldpods uit te voeren met de opdracht kubectl create namespace.

    kubectl create namespace aks-store
    
  2. Implementeer de AKS-archieftoepassing met behulp van het volgende YAML-manifestbestand:

    kubectl apply -f https://raw.githubusercontent.com/Azure-Samples/aks-store-demo/main/sample-manifests/docs/app-routing/aks-store-deployments-and-services.yaml -n aks-store
    

Met dit manifest worden rabbitmq, order-service, product-service en store-front Deployments en bijbehorende Services gemaakt. De store-front Service stelt poort 80 beschikbaar, waarnaar de Ingress in het volgende gedeelte routeert.

Het Ingress-object maken

Wanneer u de invoegtoepassing voor toepassingsroutering inschakelt, wordt een Ingress-klasse met de naam webapprouting.kubernetes.azure.com gemaakt. Geef deze klasse op in een Ingress-object om de beheerde NGINX Ingress-controller van de add-on te gebruiken.

  1. Kopieer het volgende YAML-manifest naar een nieuw bestand met de naam ingress.yaml en sla het bestand op uw lokale computer op.

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: store-front
      namespace: aks-store
    spec:
      ingressClassName: webapprouting.kubernetes.azure.com
      rules:
      - http:
          paths:
          - backend:
              service:
                name: store-front
                port:
                  number: 80
            path: /
            pathType: Prefix
    
  2. Maak de ingress-resource met behulp van de kubectl apply commando.

    kubectl apply -f ingress.yaml -n aks-store
    

    In de volgende voorbeelduitvoer ziet u de gemaakte resource:

    ingress.networking.k8s.io/store-front created
    

Controleer de beheerde Ingress-resource

U kunt verifiëren of het beheerde Ingress is gemaakt met behulp van het kubectl get ingress commando.

kubectl get ingress -n aks-store

In de volgende voorbeelduitvoer ziet u de aangemaakte managed Ingress:

NAME          CLASS                                HOSTS   ADDRESS       PORTS   AGE
store-front   webapprouting.kubernetes.azure.com   *       51.8.10.109   80      110s

U kunt controleren of de AKS-winkel werkt door in uw browser naar het openbare IP-adres van de Ingress-controller te gaan. Met de volgende opdracht wordt het externe IP-adres opgehaald dat door de load balancer is toegewezen aan de nginx-service van de beheerde NGINX ingress-controller in de naamruimte app-routing-system:

kubectl get service -n app-routing-system nginx -o jsonpath="{.status.loadBalancer.ingress[0].ip}"

De invoegtoepassing voor toepassingsroutering verwijderen

Gebruik de kubectl delete namespace opdracht om de bijbehorende naamruimte te verwijderen.

kubectl delete namespace aks-store

Gebruik de az aks approuting disable opdracht om de invoegtoepassing voor toepassingsroutering uit uw cluster te verwijderen.

az aks approuting disable --name <cluster-name> --resource-group <resource-group-name>

Opmerking

Om potentiële onderbreking van verkeer in het cluster te voorkomen wanneer u de invoegtoepassing voor toepassingsroutering uitschakelt, blijven sommige Kubernetes-resources, waaronder configMaps, geheimen en de implementatie waarop de controller wordt uitgevoerd, op het cluster aanwezig. Deze resources bevinden zich in de naamruimte van het app-routeringssysteem . U kunt deze middelen verwijderen als ze niet meer nodig zijn door de naamruimte te verwijderen met kubectl delete ns app-routing-system.