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 meddelade avvecklingen av Ingress NGINX-projektet, med underhåll som avslutades i mars 2026. 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 överensstämmer med upstream-Kubernetes och använder Gateway API som den långsiktiga standarden för ingress- och L7-trafikhantering. Migrera innan supporten upphör i november 2026, baserat på dina krav:
- Användare av tillägget Application Routing och OSS NGINX-användare: Migrera till Application Routing Gateway API-implementeringen för en Gateway API-baserad upplevelse för hantering av inkommande trafik, eller till Application Gateway for Containers, som stöder både Ingress API och Gateway API.
- Service mesh eller avancerade krav för ingress: Överväg gateway-API-ingress med tillägget Istio Service Mesh. Du kan använda den för ingress utan att mata in sidovagnar i dina arbetsbelastningar. Om du behöver storleksbegränsningar för begärandehuvud och brödtext, Lua-skript eller hastighetsbegränsning läser du begränsningar och alternativ för Gateway-API:et.
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 Ingress-styrenheten och konfigurerar ett Ingress-objekt för att dirigera trafik till en applikation i ditt AKS-kluster.
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:
- DNS- och SSL-konfiguration.
- Tilläggskonfiguration för programroutning.
- Konfigurera intern NGINX-ingresskontrollant för Azure privat DNS-zon.
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 --versionfö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
ConfigMapiapp-routing-systemnamnområdet.Om ett kodfragmentanteckningsvärde matchar något av följande blockerade värden är ingressen inte konfigurerad:
Blockerat värde Effect load_moduleIngress är inte konfigurerad. lua_packageIngress är inte konfigurerad. _by_luaIngress är inte konfigurerad. locationIngress är inte konfigurerad. rootIngress är inte konfigurerad. proxy_passIngress är inte konfigurerad. serviceaccountIngress är inte konfigurerad. {Ingress är inte konfigurerad. }Ingress är inte konfigurerad. 'Ingress är inte konfigurerad. Tillägget har inte officiellt stöd för att injicera sidecars som inte hanteras av Microsoft (till exempel anpassad telemetri, loggning eller säkerhetsagenter) i de ingress-nginx-proxypoddar som det hanterar. 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å.
Multitenantkluster
Viktigt!
Den hanterade NGINX Ingress-kontrollern isolerar inte hyresgäster på namnområdesnivå. Använd den inte som en säkerhetsgräns mellan klientorganisationer som delar ett kluster.
Den hanterade NGINX Ingress-controllern baseras på uppströmsprojektet ingress-nginx. Projektet ingress-nginx förutsätter att användare som kan skapa ingressobjekt är klusteradministratörer. Projektet anger att man inte ska använda ingress-nginx i produktionskluster för flera klientorganisationer. Mer information finns i Kubernetes för flera klientorganisationer i ingress-nginx FAQ.
Följande beteenden korsar namnområdesgränser:
- En NGINX Ingress controller hanterar ingressobjekten i sin ingressklass från alla namespaces. Styrenheten sammanfogar reglerna för dessa Ingress-objekt till en NGINX-konfiguration. Mer information finns i Så här fungerar det.
- En ingress i en namnrymd kan lägga till sökvägar till en värd som en ingress i en annan namnrymd använder. Om två Ingress-objekt använder samma värdnamn styr det äldsta Ingress-objektet TLS-inställningarna och annoteringar på servernivå för värdnamnet. Om de också använder samma sökväg får det äldsta Ingress-objektet trafiken för den sökvägen.
- Tillägget tillåter anteckningar för kodfragment, förutom de blockerade värdena i Begränsningar. Snippet-annoteringar lägger till NGINX-konfiguration till den delade styrenheten.
- NGINX-ingresskontrollanten kan läsa Secrets i alla namnrymder. Tillägget möjliggör alternativet
allow-cross-namespace-resources. Med det här alternativet kan vissa annoteringar referera till en hemlighet eller ConfigMap i en annan namnrymd. - En användare som kan skapa en ingress kan använda vilken ingressklass som helst. En separat
NginxIngressControllerför varje klientorganisation isolerar inte klientorganisationer.
Använd följande metoder för att minska den här risken:
- Ge behörighet att endast skapa eller uppdatera Ingress-objekt till användare som du litar på på samma nivå som klusteradministratörer.
- Om hyresgäster inte litar på varandra använder du ett separat kluster för varje hyresgäst. Mer information finns i artikeln Fysiskt isolerade kluster.
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.
Skapa programnamnområdet med namnet
aks-storeför att köra exempelpoddar med kommandotkubectl create namespace.kubectl create namespace aks-storeDistribuera 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 Ingress dirigerar 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.
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: PrefixSkapa ingressresursen
kubectl applymed kommandot .kubectl apply -f ingress.yaml -n aks-storeFöljande exempelutdata visar den skapade resursen:
ingress.networking.k8s.io/store-front created
Kontrollera den hanterade Ingress-resursen
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 verifiera att AKS Store fungerar genom att gå till den offentliga IP-adressen för Ingress-styrenheten i webbläsaren. Följande kommando hämtar den externa IP-adressen som tilldelats av lastbalanseraren till den hanterade NGINX-ingresskontrollerns nginx Service i namnrymden app-routing-system:
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.
Relaterat innehåll
- Aktivera Gateway API-implementationen för programdirigering för att hantera inkommande trafik med Kubernetes Gateway API.
- Konfigurera anpassade ingresskonfigurationer visar hur du skapar en avancerad ingresskonfiguration. Konfigurera en anpassad domän med hjälp av Azure DNS för att hantera DNS-zoner och konfigurera en säker ingress.
- Information om hur du integrerar med en intern Azure-lastbalanserare och konfigurerar en privat Azure DNS-zon för att aktivera DNS-matchning för de privata slutpunkterna för att matcha specifika domäner finns i Konfigurera intern NGINX-ingresskontrollant för Azures privata DNS-zon.
- Lär dig mer om övervakning av ingress-nginx-kontrollantmåtten som ingår i tillägget för programroutning med Prometheus i Grafana (förhandsversion) som en del av analysen av programmets prestanda och användning.