Share 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.
  • 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 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

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.

  1. Skapa programnamnområdet med namnet hello-web-app-routing för att köra exempelpoddar med kommandot kubectl create namespace .

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

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