Hanterad NGINX-ingress med tillägget för programroutning
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 skapar ett ingressobjekt som använder tilläggsklasserna för programroutning av NGINX-ingress skapar, konfigurerar och hanterar tillägget en eller flera ingresskontrollanter i AKS-klustret.
Den här artikeln visar hur du distribuerar och konfigurerar en grundläggande ingresskontrollant i ditt AKS-kluster.
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 NGIX-ingresskontrollant för en privat DNS-zon i Azure.
Med tillbakadragandet av Open Service Mesh (OSM) av Cloud Native Computing Foundation (CNCF) rekommenderas inte att använda tillägget för programroutning med OSM.
- En Azure-prenumeration. 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 kan du läsa Installera Azure CLI.
- 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
iapp-routing-system
namnområdet. - Följande kodfragmentanteckningar blockeras och förhindrar att en ingress konfigureras:
load_module
,lua_package
,_by_lua
,location
,root
,proxy_pass
,serviceaccount
, ,{
, ,}
.'
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 <ResourceGroupName> \
--name <ClusterName> \
--location <Location> \
--enable-app-routing \
--generate-ssh-keys
Om du vill aktivera programroutning i ett befintligt kluster använder du az aks approuting enable
kommandot .
az aks approuting enable --resource-group <ResourceGroupName> --name <ClusterName>
När du ska ansluta till Kubernetes-klustret från din lokala dator använder du kubectl, Kubernetes kommandoradsklient. 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 kommandot az aks get-credentials .
az aks get-credentials --resource-group <ResourceGroupName> --name <ClusterName>
Tillägget för programroutning använder anteckningar på Kubernetes-ingressobjekt för att skapa lämpliga resurser.
Skapa programnamnområdet med namnet
aks-store
för att köra exempelpoddar med kommandotkubectl create namespace
.kubectl create namespace aks-store
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 nödvändiga distributioner och tjänster för AKS-lagringsprogrammet.
Tillägget för programroutning skapar en Ingress-klass i klustret med namnet webapprouting.kubernetes.azure.com. När du skapar ett ingressobjekt med den här klassen aktiveras tillägget.
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
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
Du kan kontrollera att den hanterade ingressen har skapats med hjälp av kubectl get ingress
kommandot .
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 med att peka webbläsaren mot den offentliga IP-adressen för ingresskontrollanten. Hitta IP-adressen med kubectl:
kubectl get service -n app-routing-system nginx -o jsonpath="{.status.loadBalancer.ingress[0].ip}"
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 <ClusterName> --resource-group <ResourceGroupName>
Anteckning
För att undvika potentiella störningar i trafiken till klustret när tillägget för programdirigering inaktiveras kommer vissa Kubernetes-resurser, inklusive configMaps, hemligheter och distributionen som kör kontrollanten, att finnas 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
.
Konfigurera anpassade ingresskonfigurationer visar hur du skapar en avancerad ingresskonfiguration och konfigurerar 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.
Feedback om Azure Kubernetes Service
Azure Kubernetes Service är ett öppen källkod projekt. Välj en länk för att ge feedback: