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. aks-preview
Azure CLI-tillägget för version 0.5.171 eller senare installerat
Begränsningar
- Tillägget för programroutning stöder upp till fem Azure DNS-zoner.
- 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
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>
Anslut 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
hello-web-app-routing
för att köra exempelpoddar med kommandotkubectl create namespace
.kubectl create namespace hello-web-app-routing
Skapa distributionen genom att kopiera följande YAML-manifest till en ny fil med namnet deployment.yaml och spara filen på den lokala datorn.
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)"
Skapa tjänsten genom att kopiera följande YAML-manifest till en ny fil med namnet service.yaml och spara filen på den lokala datorn.
apiVersion: v1 kind: Service metadata: name: aks-helloworld namespace: hello-web-app-routing spec: type: ClusterIP ports: - port: 80 selector: app: aks-helloworld
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: 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
Skapa klusterresurserna
kubectl apply
med kommandot .kubectl apply -f deployment.yaml -n hello-web-app-routing
Följande exempelutdata visar den skapade resursen:
deployment.apps/aks-helloworld created
kubectl apply -f service.yaml -n hello-web-app-routing
Följande exempelutdata visar den skapade resursen:
service/aks-helloworld created
kubectl apply -f ingress.yaml -n hello-web-app-routing
Följande exempelutdata visar den skapade resursen:
ingress.networking.k8s.io/aks-helloworld 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 hello-web-app-routing
Följande exempelutdata visar den skapade hanterade ingressen:
NAME CLASS HOSTS ADDRESS PORTS AGE
aks-helloworld webapprouting.kubernetes.azure.com myapp.contoso.com 20.51.92.19 80, 443 4m
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 hello-web-app-routing
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 myAKSCluster --resource-group myResourceGroup
När tillägget för programdirigering är inaktiverat kan vissa Kubernetes-resurser finnas kvar i klustret. Dessa resurser omfattar konfiguration Kartor och hemligheter och skapas i namnområdet app-routing-system. Du kan ta bort dessa resurser om du vill.
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.