Hanterad NGINX-ingress med tillägget för programroutning

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:

Ett sätt att dirigera HTTP-trafik (Hypertext Transfer Protocol) och säker (HTTPS)-trafik till program som körs i ett AKS-kluster (Azure Kubernetes Service) är att använda Kubernetes-ingressobjektet. När du aktiverar tillägget för programroutning med NGINX skapas, konfigureras och hanteras en ingresskontrollant i AKS-klustret.

Den här artikeln visar hur du aktiverar den hanterade NGINX-ingresskontrollanten och konfigurerar ett inkommande objekt för att dirigera trafik till ett program i aks-klustret.

Tillägg för programroutning med NGINX-funktioner

Tillägget för programroutning med NGINX levererar följande:

  • Enkel konfiguration av hanterade NGINX-ingresskontrollanter baserat på Kubernetes NGINX-ingresskontrollant.
  • Integrering med Azure DNS för offentlig och privat zonhantering.
  • SSL-avslutning med certifikat som lagras i Azure Key Vault.

Andra konfigurationer finns i:

Viktigt!

Från och med den 30 september 2027 stöder Azure Kubernetes Service (AKS) inte längre tillägget Open Service Mesh (OSM). Det överordnade Open Service Mesh-projektet har dragits tillbaka.

Om klustret använder OSM-tillägget migrerar du till Istio-tillägget före sista supportdatumet. Det här avregistreringsmeddelandet gäller endast för det hanterade OSM-tillägget och hanterar inte installationer med nät med öppen källkod eller självhanterade servicenät. Information om migreringssteg finns i Migreringsvägledning från OSM-tillägget till Istio-tillägget. Om du vill hålla dig informerad om AKS-meddelanden och -uppdateringar följer du AKS-viktig information.

Prerequisites

  • Ett Azure-abonnemang. Om du inte har någon Azure-prenumeration kan du skapa ett kostnadsfritt konto.
  • Azure CLI version 2.54.0 eller senare installerad och konfigurerad. Kör az --version för att hitta versionen. Om du behöver installera eller uppgradera, se Installera Azure CLI.

Limitations

  • Tillägget för programroutning stöder upp till fem Azure DNS-zoner.

  • Tillägget för programroutning kan bara aktiveras i AKS-kluster med hanterad identitet.

  • Alla globala Azure DNS-zoner som är integrerade med tillägget måste finnas i samma resursgrupp.

  • Alla privata Azure DNS-zoner som är integrerade med tillägget måste finnas i samma resursgrupp.

  • Det går inte att redigera ingress-nginx ConfigMap i app-routing-system namnområdet.

  • Om ett kodfragmentanteckningsvärde matchar något av följande blockerade värden är ingressen inte konfigurerad:

    Blockerat värde Effect
    load_module Ingressen har inte konfigurerats.
    lua_package Ingressen har inte konfigurerats.
    _by_lua Ingressen har inte konfigurerats.
    location Ingressen har inte konfigurerats.
    root Ingressen har inte konfigurerats.
    proxy_pass Ingressen har inte konfigurerats.
    serviceaccount Ingressen har inte konfigurerats.
    { Ingressen har inte konfigurerats.
    } Ingressen har inte konfigurerats.
    ' Ingressen har inte konfigurerats.
  • Tillägget stöder inte officiellt injicering av icke-Microsoft-hanterade sidovagnar (till exempel anpassad telemetri, loggning eller säkerhetsagenter) i ingress-nginx-proxypoddar som hanteras. 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å.

Aktivera tillägget för programroutning med hjälp av Azure CLI

Aktivera i ett nytt kluster

Om du vill aktivera programroutning i ett nytt kluster använder du az aks create kommandot och anger --enable-app-routing flaggan.

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

Aktivera i ett befintligt kluster

Om du vill aktivera programroutning i ett befintligt kluster använder du az aks approuting enable kommandot .

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

Ansluta till ditt AKS-kluster

Om du vill ansluta till Kubernetes-klustret från den lokala datorn använder kubectldu kubernetes-kommandoradsklienten. Du kan installera den lokalt med hjälp av az aks install-cli kommandot . Om du använder Azure Cloud Shell är kubectl redan installerat.

Konfigurera kubectl för att ansluta till kubernetes-klustret med hjälp av az aks get-credentials kommandot .

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

Distribuera ett program

Kubernetes-ingressobjekt definierar routningsregler för en ingresskontrollant. Använd programdirigeringstilläggets hanterade ingressklass och anteckningar som stöds för att konfigurera hur dess kontrollant hanterar trafik.

  1. Skapa programnamnområdet med namnet aks-store för att köra exempelpoddar med kommandot kubectl create namespace .

    kubectl create namespace aks-store
    
  2. Distribuera AKS Store-programmet med hjälp av följande YAML-manifestfil:

    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
    

Det här manifestet skapar rabbitmq, order-service, product-serviceoch store-front distributioner och motsvarande tjänster. Tjänsten store-front exponerar port 80, som ingressvägarna till i nästa avsnitt.

Skapa ingressobjektet

När du aktiverar tillägget för programroutning skapas en ingressklass med namnet webapprouting.kubernetes.azure.com. Ange den här klassen i ett inkommande objekt för att använda tilläggets hanterade NGINX-ingresskontrollant.

  1. Kopiera följande YAML-manifest till en ny fil med namnet ingress.yaml och spara filen på den lokala datorn.

    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. Skapa ingressresursen kubectl apply med kommandot .

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

    Följande exempelutdata visar den skapade resursen:

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

Verifiera den hanterade ingressresursen

Du kan kontrollera att den hanterade Ingress har skapats med hjälp av kommandot kubectl get ingress.

kubectl get ingress -n aks-store

Följande exempelutdata visar den skapade hanterade ingressen:

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

Du kan kontrollera att AKS-arkivet fungerar genom att peka webbläsaren mot den offentliga IP-adressen för ingresskontrollanten. Följande kommando hämtar den externa IP-adress som tilldelats av lastbalanseraren till den hanterade NGINX-ingresskontrollantens nginxapp-routing-system tjänst i namnområdet:

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

Ta bort tillägget för programroutning

Om du vill ta bort det associerade namnområdet använder du kubectl delete namespace kommandot .

kubectl delete namespace aks-store

Om du vill ta bort tillägget för programroutning från klustret använder du az aks approuting disable kommandot .

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

Note

För att undvika potentiella trafikstörningar i klustret när du inaktiverar tillägget för programroutning finns vissa Kubernetes-resurser, inklusive configMaps, hemligheter och distributionen som kör kontrollanten, kvar i klustret. Dessa resurser finns i namnområdet app-routing-system . Du kan ta bort dessa resurser om de inte längre behövs genom att ta bort namnområdet med kubectl delete ns app-routing-system.