Beheerd NGINX-inkomend verkeer met de invoegtoepassing voor toepassingsroutering
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 een inkomend object maakt dat gebruikmaakt van de NGINX-ingressklassen voor toepassingsroutering, maakt, configureert en beheert de invoegtoepassing een of meer ingangscontrollers in uw AKS-cluster.
In dit artikel leest u hoe u een eenvoudige ingangscontroller in uw AKS-cluster implementeert en configureert.
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 invoegtoepassing voor toepassingsroutering
- Configureer de interne NGIX-ingangscontroller voor de privé-DNS-zone van Azure.
Met de buitengebruikstelling van Open Service Mesh (OSM) door de Cloud Native Computing Foundation (CNCF) wordt het gebruik van de invoegtoepassing voor toepassingsroutering met OSM niet aanbevolen.
Vereisten
- 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 bekijken. Als u Azure CLI 2.0 wilt installeren of upgraden, raadpleegt u Azure CLI 2.0 installeren. aks-preview
Azure CLI-extensie van versie 0.5.171 of hoger geïnstalleerd
Beperkingen
- De invoegtoepassing voor toepassingsroutering ondersteunt maximaal vijf Azure DNS-zones.
- 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 deapp-routing-system
naamruimte wordt niet ondersteund. - De volgende fragmentaantekeningen worden geblokkeerd en voorkomen dat een inkomend verkeer wordt geconfigureerd:
load_module
, ,lua_package
,_by_lua
, ,location
,root
, ,proxy_pass
,serviceaccount
, ,{
, ,}
.'
Toepassingsroutering inschakelen met behulp van Azure CLI
- Standaard
- Open Service Mesh (OSM) (buiten gebruik gesteld)
- Serviceaantekeningen (buiten gebruik gesteld)
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 -g <ResourceGroupName> -n <ClusterName> -l <Location> --enable-app-routing
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 -g <ResourceGroupName> -n <ClusterName>
Verbinding maken naar uw AKS-cluster
Gebruik kubectl, de Kubernetes-opdrachtregelclient, als u vanaf uw lokale computer verbinding wilt maken met het Kubernetes-cluster. 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
deze om verbinding te maken met uw Kubernetes-cluster met behulp van de opdracht az aks get-credentials .
az aks get-credentials -g <ResourceGroupName> -n <ClusterName>
Een app implementeren
De invoegtoepassing voor toepassingsroutering maakt gebruik van aantekeningen op Kubernetes Ingress-objecten om de juiste resources te maken.
- Invoegtoepassing voor toepassingsroutering
- Open Service Mesh (buiten gebruik gesteld)
- Serviceaantekeningen (buiten gebruik gesteld)
Maak de toepassingsnaamruimte die wordt aangeroepen
hello-web-app-routing
om de voorbeeldpods uit te voeren met behulp van dekubectl create namespace
opdracht.kubectl create namespace hello-web-app-routing
Maak de implementatie door het volgende YAML-manifest te kopiëren naar een nieuw bestand met de naam deployment.yaml en sla het bestand op uw lokale computer op.
apiVersion: apps/v1 kind: Deployment metadata: name: aks-helloworld namespace: hello-web-app-routing spec: replicas: 1 selector: matchLabels: app: aks-helloworld template: metadata: labels: app: aks-helloworld spec: containers: - name: aks-helloworld image: mcr.microsoft.com/azuredocs/aks-helloworld:v1 ports: - containerPort: 80 env: - name: TITLE value: "Welcome to Azure Kubernetes Service (AKS)"
Maak de service door het volgende YAML-manifest te kopiëren naar een nieuw bestand met de naam service.yaml en sla het bestand op uw lokale computer op.
apiVersion: v1 kind: Service metadata: name: aks-helloworld namespace: hello-web-app-routing spec: type: ClusterIP ports: - port: 80 selector: app: aks-helloworld
Het object Inkomend verkeer maken
De invoegtoepassing voor toepassingsroutering maakt een toegangsbeheerobjectklasse op het cluster met de naam webapprouting.kubernetes.azure.com. Wanneer u een inkomend object met deze klasse maakt, wordt de invoegtoepassing geactiveerd.
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: aks-helloworld namespace: hello-web-app-routing spec: ingressClassName: webapprouting.kubernetes.azure.com rules: - host: <Hostname> http: paths: - backend: service: name: aks-helloworld port: number: 80 path: / pathType: Prefix
Maak de clusterbronnen met behulp van de
kubectl apply
opdracht.kubectl apply -f deployment.yaml -n hello-web-app-routing
In de volgende voorbeelduitvoer ziet u de gemaakte resource:
deployment.apps/aks-helloworld created
kubectl apply -f service.yaml -n hello-web-app-routing
In de volgende voorbeelduitvoer ziet u de gemaakte resource:
service/aks-helloworld created
kubectl apply -f ingress.yaml -n hello-web-app-routing
In de volgende voorbeelduitvoer ziet u de gemaakte resource:
ingress.networking.k8s.io/aks-helloworld created
Controleren of het beheerde inkomend verkeer is gemaakt
U kunt controleren of het beheerde inkomend verkeer is gemaakt met behulp van de kubectl get ingress
opdracht.
kubectl get ingress -n hello-web-app-routing
In de volgende voorbeelduitvoer ziet u het gemaakte beheerde inkomend verkeer:
NAME CLASS HOSTS ADDRESS PORTS AGE
aks-helloworld webapprouting.kubernetes.azure.com myapp.contoso.com 20.51.92.19 80, 443 4m
De invoegtoepassing voor toepassingsroutering verwijderen
Gebruik de kubectl delete namespace
opdracht om de bijbehorende naamruimte te verwijderen.
kubectl delete namespace hello-web-app-routing
Gebruik de az aks approuting disable
opdracht om de invoegtoepassing voor toepassingsroutering uit uw cluster te verwijderen.
az aks approuting disable --name myAKSCluster --resource-group myResourceGroup
Wanneer de invoegtoepassing voor toepassingsroutering is uitgeschakeld, blijven sommige Kubernetes-resources mogelijk in het cluster aanwezig. Deze resources omvatten configuratie Kaarten en geheimen en worden gemaakt in de naamruimte van het app-routeringssysteem. U kunt deze resources desgewenst verwijderen.
Volgende stappen
Aangepaste configuraties voor inkomend verkeer configureren laat zien hoe u een geavanceerde configuratie voor inkomend verkeer maakt en een aangepast domein configureert 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-omzetting 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 voor inkomend-nginx-controller die zijn opgenomen in de invoegtoepassing voor toepassingsroutering met Prometheus in Grafana (preview) als onderdeel van het analyseren van de prestaties en het gebruik van uw toepassing.