Condividi tramite


Ingresso NGINX gestito con il componente aggiuntivo Instradamento dell'applicazione

Importante

Kubernetes SIG Network e il Security Response Committee hanno annunciato il ritiro imminente del progetto NGINX in ingresso, con la manutenzione che termina a marzo 2026. Attualmente non è richiesto alcun intervento immediato per i cluster AKS che utilizzano il componente aggiuntivo Routing delle applicazioni con NGINX. Microsoft fornirà il supporto ufficiale per le patch di sicurezza critiche per le risorse del componente aggiuntivo NGINX Ingress fino a novembre 2026.

AKS è in linea con Kubernetes upstream passando a Gateway API come standard a lungo termine per la gestione del traffico L7 e degli ingressi. È consigliabile iniziare a pianificare il percorso di migrazione in base alla configurazione corrente:

  • Utenti del componente aggiuntivo di routing delle applicazioni: i carichi di lavoro di produzione rimangono completamente supportati fino a novembre 2026. Il servizio AKS continuerà a evolvere il componente aggiuntivo di instradamento delle applicazioni in linea con l'allineamento dell'API del gateway. Non è necessario passare a un prodotto in ingresso diverso.
  • Gli utenti di OSS NGINX hanno diverse opzioni:
  • Utenti mesh di servizi: se si prevede di adottare una mesh di servizi, prendere in considerazione il componente aggiuntivo mesh di servizi basato su Istio. Usa Istio Ingress oggi e pianifica la migrazione al supporto API del gateway Istio quando diventa GA.

Un modo per instradare il traffico HTTP (Hypertext Transfer Protocol) e HTTPS (Hypertext Transfer Protocol Secure) alle applicazioni in esecuzione in un cluster del servizio Azure Kubernetes prevede l'uso dell'oggetto Ingress Kubernetes. Quando si crea un oggetto Ingress che usa le classi Ingress NGINX del componente aggiuntivo Instradamento dell'applicazione, il componente aggiuntivo crea, configura e gestisce uno o più controller Ingress nel cluster del servizio Azure Kubernetes.

Questo articolo mostra come distribuire e configurare un controller Ingress di base nel cluster del servizio Azure Kubernetes.

Componente aggiuntivo Instradamento dell'applicazione con funzionalità NGINX

Il componente aggiuntivo Instradamento dell'applicazione con NGINX offre quanto segue:

  • Configurazione semplice dei controller Ingress NGINX gestiti basati sul controller Ingress NGINX Kubernetes.
  • Integrazione con DNS di Azure per la gestione delle zone pubbliche e private.
  • Terminazione SSL con certificati archiviati in Azure Key Vault.

Per altre configurazioni, vedere:

Con il ritiro di Open Service Mesh (OSM) da parte della Cloud Native Computing Foundation (CNCF), non è consigliabile usare il componente aggiuntivo Instradamento dell'applicazione con OSM.

Prerequisiti

  • Una sottoscrizione di Azure. Se non si ha una sottoscrizione di Azure, è possibile creare 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.

Limitazioni

  • Il componente aggiuntivo Instradamento dell'applicazione supporta fino a cinque zone DNS di Azure.
  • Il componente aggiuntivo Instradamento dell'applicazione può essere abilitato solo nei cluster del servizio Azure Kubernetes con l'identità gestita.
  • Tutte le zone DNS di Azure globali integrate con il componente aggiuntivo devono risiedere nello stesso gruppo di risorse.
  • Tutte le zone DNS di Azure private integrate con il componente aggiuntivo devono risiedere nello stesso gruppo di risorse.
  • La modifica di ingress-nginx ConfigMap nello spazio dei nomi app-routing-system non è supportata.
  • Le annotazioni dei frammenti seguenti sono bloccate e impediranno la configurazione di un oggetto Ingress: load_module, lua_package, _by_lua, location, root, proxy_pass, serviceaccount, {, }, '.

Abilitare l'instradamento dell'applicazione tramite l'interfaccia della riga di comando di Azure

Abilitare l'instradamento dell'applicazione in un nuovo cluster

Per abilitare l'instradamento dell'applicazione in un nuovo cluster, usare il comando az aks create, specificando il flag --enable-app-routing.

az aks create \
    --resource-group <ResourceGroupName> \
    --name <ClusterName> \
    --location <Location> \
    --enable-app-routing \
    --generate-ssh-keys

Abilitare l'instradamento dell'applicazione in un cluster esistente

Per abilitare l'instradamento dell'applicazione in un cluster esistente, usare il comando az aks approuting enable.

az aks approuting enable --resource-group <ResourceGroupName> --name <ClusterName>

Connettersi al 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 comando az aks install-cli. Se si usa Azure Cloud Shell, kubectl è già installato.

Configurare kubectl per connettesi al cluster Kubernetes usando il comando az aks get-credentials.

az aks get-credentials --resource-group <ResourceGroupName> --name <ClusterName>

Distribuire un'applicazione

Il componente aggiuntivo Instradamento dell'applicazione usa annotazioni negli oggetti ingresso Kubernetes per creare le risorse appropriate.

  1. Creare lo spazio dei nomi dell'applicazione denominato aks-store per eseguire i pod di esempio usando il comando kubectl create namespace.

    kubectl create namespace aks-store
    
  2. Distribuire l'applicazione dell'archivio del servizio Azure Kubernetes usando il file manifesto YAML seguente:

    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
    

Questo manifesto creerà le distribuzioni e i servizi necessari per l'applicazione dell'archivio del servizio Azure Kubernetes.

Creare l'oggetto Ingress

Il componente aggiuntivo Instradamento dell'applicazione crea una classe Ingress nel cluster denominata webapprouting.kubernetes.azure.com. Quando si crea un oggetto Ingress con questa classe, il componente aggiuntivo viene attivato.

  1. 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: 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
    
  2. Creare la risorsa di ingresso con il comando kubectl apply.

    kubectl apply -f ingress.yaml -n aks-store
    

    L'output di esempio seguente mostra la risorsa creata:

    ingress.networking.k8s.io/store-front created
    

Verificare che l'oggetto Ingress gestito sia stato creato

È possibile verificare che l'oggetto Ingress sia stato creato usando il comando kubectl get ingress.

kubectl get ingress -n aks-store

L'output di esempio seguente mostra l'oggetto Ingress gestito creato:

NAME          CLASS                                HOSTS   ADDRESS       PORTS   AGE
store-front   webapprouting.kubernetes.azure.com   *       51.8.10.109   80      110s

È possibile verificare che l'archivio del servizio Azure Kubernetes punti il browser all'indirizzo IP pubblico del controller Ingress. Trovare l'indirizzo IP con kubectl:

kubectl get service -n app-routing-system nginx -o jsonpath="{.status.loadBalancer.ingress[0].ip}"

Rimuovere il componente aggiuntivo Instradamento dell'applicazione

Per rimuovere lo spazio dei nomi associato, usare il comando kubectl delete namespace.

kubectl delete namespace aks-store

Per rimuovere il componente aggiuntivo Instradamento dell'applicazione dal cluster, usare il comando az aks approuting disable.

az aks approuting disable --name <ClusterName> --resource-group <ResourceGroupName>

Note

Per evitare potenziali interruzioni del traffico nel cluster quando il componente aggiuntivo Instradamento dell'applicazione è disabilitato, alcune risorse Kubernetes, tra cui configMaps, segreti e la distribuzione che esegue il controller, rimarranno nel cluster. Queste risorse si trovano nello spazio dei nomi app-routing-system. È possibile rimuovere queste risorse se non sono più necessarie eliminando lo spazio dei nomi con kubectl delete ns app-routing-system.

Passaggi successivi