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:

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 nello app-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_lualua_package}rootlocationproxy_passserviceaccount{. '

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.

  1. Creare lo spazio dei nomi dell'applicazione chiamato hello-web-app-routing per eseguire i pod di esempio usando il kubectl create namespace comando .

    kubectl create namespace hello-web-app-routing
    
  2. 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)"
    
  3. 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.

  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: 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
    
  2. 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