Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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:
- gebruikers van de invoegtoepassing Application Routing en OSS NGINX-gebruikers: migreren naar de implementatie van de Application Routing Gateway API voor ingress-verkeersbeheer op basis van de Gateway API, of naar Application Gateway for Containers, die ondersteuning biedt voor zowel de Ingress API als de Gateway API.
- Service-mesh- of geavanceerde toegangsbeheervereisten: Overweeg toegangsbeheer voor gateway-API's met de invoegtoepassing Istio-service-mesh. U kunt het gebruiken voor ingress zonder sidecars aan uw workloads toe te voegen. Als u limieten voor headers en hoofdteksten, Lua-scripts of snelheidsbeperking nodig hebt, controleert u de beperkingen en alternatieven van de Gateway-API.
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:
- DNS- en SSL-configuratie.
- Configuratie van de invoegtoepassing voor toepassingsroutering.
- Configureer de interne NGINX-ingangscontroller voor Azure privé-DNS-zone.
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 --versionuit 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
ConfigMapin deapp-routing-systemnaamruimte wordt niet ondersteund.Als een snippet-annotatiewaarde overeenkomt met een van de volgende geblokkeerde waarden, wordt de Ingress niet geconfigureerd:
Geblokkeerde waarde Effect load_moduleDe Ingress is niet geconfigureerd. lua_packageDe Ingress is niet geconfigureerd. _by_luaDe Ingress is niet geconfigureerd. locationDe Ingress is niet geconfigureerd. rootDe Ingress is niet geconfigureerd. proxy_passDe Ingress is niet geconfigureerd. serviceaccountDe 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
NginxIngressControllervoor 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.
Maak de toepassingsnaamruimte genaamd
aks-storeom de voorbeeldpods uit te voeren met de opdrachtkubectl create namespace.kubectl create namespace aks-storeImplementeer 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.
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: PrefixMaak de ingress-resource met behulp van de
kubectl applycommando.kubectl apply -f ingress.yaml -n aks-storeIn 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.
Verwante onderwerpen
- Schakel de implementatie van de gateway-API voor toepassingsroutering in om inkomend verkeer te beheren met de Kubernetes Gateway-API.
- Aangepaste configuraties voor inkomend verkeer configureren laat zien hoe u een geavanceerde configuratie voor inkomend verkeer maakt. Configureer een aangepast domein met behulp van Azure DNS voor het beheren van DNS-zones en het instellen van een beveiligd inkomend verkeer.
- Als u wilt integreren met een interne load balancer van Azure en een privé-Azure DNS-zone wilt configureren om DNS-resolutie voor de privé-eindpunten in te schakelen voor het omzetten van specifieke domeinen, Raadpleegt u Interne NGINX-ingangscontroller configureren voor Azure-privé-DNS-zone.
- Meer informatie over het bewaken van de metrische gegevens van de ingress-nginx-controller die zijn opgenomen in de add-on voor toepassingsroutering met Prometheus in Grafana (preview-versie), als onderdeel van het analyseren van de prestaties en het gebruik van uw toepassing.