Dela via


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:

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 i app-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.

  1. Skapa programnamnområdet med namnet aks-store för att köra exempelpoddar med kommandot kubectl create namespace .

    kubectl create namespace aks-store
    
  2. 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.

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