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ä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 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.
Förutsättningar
- 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.
Begränsningar
- 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
, ,{
, ,}
.'
Aktivera 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 <ResourceGroupName> \
--name <ClusterName> \
--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 <ResourceGroupName> --name <ClusterName>
Ansluta till ditt AKS-kluster
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>
Distribuera ett program
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.
Skapa ingressobjektet
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
Kontrollera att den hanterade ingressen har skapats
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}"
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 <ClusterName> --resource-group <ResourceGroupName>
Kommentar
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
.
Nästa steg
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.
Azure Kubernetes Service