Ingresso NGINX gestito con il componente aggiuntivo di routing dell'applicazione
Un modo per instradare il traffico HTTP (Hypertext Transfer Protocol) e il traffico sicuro (HTTPS) alle applicazioni in esecuzione in un cluster servizio Azure Kubernetes (AKS) consiste nell'usare l'oggetto in ingresso Kubernetes. Quando si crea un oggetto Ingress che usa le classi NGINX Ingress del routing dell'applicazione, il componente aggiuntivo crea, configura e gestisce uno o più controller di ingresso nel cluster del servizio Azure Kubernetes.
Questo articolo illustra come distribuire e configurare un controller di ingresso di base nel cluster del servizio Azure Kubernetes.
Componente aggiuntivo di routing delle applicazioni con funzionalità NGINX
Il componente aggiuntivo di routing delle applicazioni con NGINX offre quanto segue:
- Configurazione semplice dei controller di ingresso NGINX gestiti basati sul controller di ingresso NGINX di Kubernetes.
- Integrazione con DNS di Azure per la gestione della zona pubblica e privata
- Terminazione SSL con certificati archiviati in Azure Key Vault.
Per altre configurazioni, vedere:
- Configurazione DNS e SSL
- Configurazione del componente aggiuntivo di routing delle applicazioni
- Configurare il controller di ingresso NGIX interno per la zona DNS privata di Azure.
Con il ritiro di Open Service Mesh (OSM) da Cloud Native Computing Foundation (CNF), non è consigliabile usare il componente aggiuntivo di routing delle applicazioni con OSM.
Prerequisiti
- Una sottoscrizione di Azure. Se non hai una sottoscrizione Azure, crea un account gratuito.
- Interfaccia della riga di comando di Azure versione 2.54.0 o successiva installata e configurata. Eseguire
az --version
per trovare la versione. Se è necessario eseguire l'installazione o l'aggiornamento, vedere Installare l'interfaccia della riga di comando di Azure. aks-preview
Estensione dell'interfaccia della riga di comando di Azure versione 0.5.171 o successiva installata
Limiti
- Il componente aggiuntivo di routing delle applicazioni supporta fino a cinque zone DNS di Azure.
- Tutte le zone DNS di Azure globali integrate con il componente aggiuntivo devono trovarsi nello stesso gruppo di risorse.
- Tutte le zone DNS di Azure private integrate con il componente aggiuntivo devono trovarsi nello stesso gruppo di risorse.
- La modifica dell'ingresso-nginx
ConfigMap
nelloapp-routing-system
spazio dei nomi non è supportata. - Le annotazioni dei frammenti di codice seguenti sono bloccate e impediranno la configurazione di un ingresso:
load_module
,_by_lua
lua_package
}
root
location
proxy_pass
serviceaccount
{
.'
Abilitare il routing delle applicazioni tramite l'interfaccia della riga di comando di Azure
Abilitare in un nuovo cluster
Per abilitare il routing delle applicazioni in un nuovo cluster, usare il az aks create
comando , specificando il --enable-app-routing
flag .
az aks create -g <ResourceGroupName> -n <ClusterName> -l <Location> --enable-app-routing
Abilitare in un cluster esistente
Per abilitare il routing delle applicazioni in un cluster esistente, usare il az aks approuting enable
comando .
az aks approuting enable -g <ResourceGroupName> -n <ClusterName>
Connettiti al tuo cluster del servizio Azure Kubernetes
Per connettersi al cluster Kubernetes dal computer locale si usa kubectl, il client da riga di comando di Kubernetes. È possibile installarlo in locale usando il az aks install-cli
comando . Se si usa Azure Cloud Shell, kubectl
è già installato.
Configurare kubectl
per connettersi al cluster Kubernetes usando il comando az aks get-credentials.
az aks get-credentials -g <ResourceGroupName> -n <ClusterName>
Distribuire un'applicazione
Il componente aggiuntivo di routing dell'applicazione usa annotazioni negli oggetti in ingresso Kubernetes per creare le risorse appropriate.
- Componente aggiuntivo di routing delle applicazioni
- Aprire Service Mesh (ritirata)
- Annotazioni del servizio (ritirata)
Creare lo spazio dei nomi dell'applicazione chiamato
hello-web-app-routing
per eseguire i pod di esempio usando ilkubectl create namespace
comando .kubectl create namespace hello-web-app-routing
Creare la distribuzione copiando il manifesto YAML seguente in un nuovo file denominato deployment.yaml e salvare il file nel computer locale.
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)"
Creare il servizio copiando il manifesto YAML seguente in un nuovo file denominato service.yaml e salvare il file nel computer locale.
apiVersion: v1 kind: Service metadata: name: aks-helloworld namespace: hello-web-app-routing spec: type: ClusterIP ports: - port: 80 selector: app: aks-helloworld
Creare l'oggetto Ingress
Il componente aggiuntivo di routing dell'applicazione crea una classe Ingress nel cluster denominato webapprouting.kubernetes.azure.com. Quando si crea un oggetto Ingress con questa classe, il componente aggiuntivo viene attivato.
Copiare il manifesto YAML seguente in un nuovo file denominato ingress.yaml e salvare il file nel computer locale.
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
Creare le risorse del cluster usando il comando
kubectl apply
.kubectl apply -f deployment.yaml -n hello-web-app-routing
L'output di esempio seguente mostra la risorsa creata:
deployment.apps/aks-helloworld created
kubectl apply -f service.yaml -n hello-web-app-routing
L'output di esempio seguente mostra la risorsa creata:
service/aks-helloworld created
kubectl apply -f ingress.yaml -n hello-web-app-routing
L'output di esempio seguente mostra la risorsa creata:
ingress.networking.k8s.io/aks-helloworld created
Verificare che l'Ingress gestito sia stato creato
È possibile verificare che l'ingresso gestito sia stato creato usando il comando kubectl get ingress
.
kubectl get ingress -n hello-web-app-routing
L'output di esempio seguente mostra l’Ingress gestito creato:
NAME CLASS HOSTS ADDRESS PORTS AGE
aks-helloworld webapprouting.kubernetes.azure.com myapp.contoso.com 20.51.92.19 80, 443 4m
Rimuovere il componente aggiuntivo di routing dell'applicazione
Per rimuovere lo spazio dei nomi associato, usare il kubectl delete namespace
comando .
kubectl delete namespace hello-web-app-routing
Per rimuovere il componente aggiuntivo di routing dell'applicazione dal cluster, usare il az aks approuting disable
comando .
az aks approuting disable --name myAKSCluster --resource-group myResourceGroup
Quando il componente aggiuntivo di routing dell'applicazione è disabilitato, alcune risorse kubernetes potrebbero rimanere nel cluster. Queste risorse includono config Mappe e segreti e vengono creati nello spazio dei nomi app-routing-system. Se necessario, è possibile rimuovere queste risorse.
Passaggi successivi
Configurare configurazioni di ingresso personalizzate illustra come creare una configurazione avanzata in ingresso e configurare un dominio personalizzato usando DNS di Azure per gestire le zone DNS e configurare un ingresso sicuro.
Per l'integrazione con un servizio di bilanciamento del carico interno di Azure e configurare una zona DNS di Azure privata per abilitare la risoluzione DNS per gli endpoint privati per risolvere domini specifici, vedere Configurare il controller di ingresso NGINX interno per la zona DNS privata di Azure.
Informazioni sul monitoraggio delle metriche del controller in ingresso-nginx incluse nel componente aggiuntivo di routing delle applicazioni con con Prometheus in Grafana (anteprima) come parte dell'analisi delle prestazioni e dell'utilizzo dell'applicazione.