Beheerd NGINX-inkomend verkeer met de invoegtoepassing voor toepassingsroutering

Een manier om Hypertext Transfer Protocol (HTTP) en beveiligd (HTTPS)-verkeer te routeren naar toepassingen die worden uitgevoerd op een AKS-cluster (Azure Kubernetes Service), is het kubernetes-object voor inkomend verkeer te gebruiken. Wanneer u een inkomend object maakt dat gebruikmaakt van de NGINX-ingressklassen voor toepassingsroutering, maakt, configureert en beheert de invoegtoepassing een of meer ingangscontrollers in uw AKS-cluster.

In dit artikel leest u hoe u een eenvoudige ingangscontroller in uw AKS-cluster implementeert en configureert.

Invoegtoepassing voor toepassingsroutering met NGINX-functies

De invoegtoepassing voor toepassingsroutering met NGINX levert het volgende:

Zie voor andere configuraties:

Met de buitengebruikstelling van Open Service Mesh (OSM) door de Cloud Native Computing Foundation (CNCF) wordt het gebruik van de invoegtoepassing voor toepassingsroutering met OSM niet aanbevolen.

Vereisten

  • Een Azure-abonnement. Als u geen Azure-abonnement hebt, kunt u een gratis account maken.
  • Azure CLI versie 2.54.0 of hoger geïnstalleerd en geconfigureerd. Voer az --version uit om de versie te bekijken. Als u Azure CLI 2.0 wilt installeren of upgraden, raadpleegt u Azure CLI 2.0 installeren.
  • aks-preview Azure CLI-extensie van versie 0.5.171 of hoger geïnstalleerd

Beperkingen

  • De invoegtoepassing voor toepassingsroutering ondersteunt maximaal vijf Azure DNS-zones.
  • Alle globale Azure DNS-zones die zijn geïntegreerd met de invoegtoepassing, moeten zich in dezelfde resourcegroep bevinden.
  • Alle privé-Azure DNS-zones die zijn geïntegreerd met de invoegtoepassing, moeten zich in dezelfde resourcegroep bevinden.
  • Het bewerken van de ingress-nginx ConfigMap in de app-routing-system naamruimte wordt niet ondersteund.
  • De volgende fragmentaantekeningen worden geblokkeerd en voorkomen dat een inkomend verkeer wordt geconfigureerd: load_module, , lua_package, _by_lua, , location, root, , proxy_pass, serviceaccount, , {, , }. '

Toepassingsroutering inschakelen met behulp van Azure CLI

Inschakelen op een nieuw cluster

Als u toepassingsroutering op een nieuw cluster wilt inschakelen, gebruikt u de az aks create opdracht en geeft u de --enable-app-routing vlag op.

az aks create -g <ResourceGroupName> -n <ClusterName> -l <Location> --enable-app-routing

Inschakelen op een bestaand cluster

Gebruik de az aks approuting enable opdracht om toepassingsroutering in te schakelen op een bestaand cluster.

az aks approuting enable -g <ResourceGroupName> -n <ClusterName>

Verbinding maken naar uw AKS-cluster

Gebruik kubectl, de Kubernetes-opdrachtregelclient, als u vanaf uw lokale computer verbinding wilt maken met het Kubernetes-cluster. U kunt deze lokaal installeren met behulp van de az aks install-cli opdracht. Als u Azure Cloud Shell gebruikt, is kubectl al geïnstalleerd.

Configureer kubectl deze om verbinding te maken met uw Kubernetes-cluster met behulp van de opdracht az aks get-credentials .

az aks get-credentials -g <ResourceGroupName> -n <ClusterName>

Een app implementeren

De invoegtoepassing voor toepassingsroutering maakt gebruik van aantekeningen op Kubernetes Ingress-objecten om de juiste resources te maken.

  1. Maak de toepassingsnaamruimte die wordt aangeroepen hello-web-app-routing om de voorbeeldpods uit te voeren met behulp van de kubectl create namespace opdracht.

    kubectl create namespace hello-web-app-routing
    
  2. Maak de implementatie door het volgende YAML-manifest te kopiëren naar een nieuw bestand met de naam deployment.yaml en sla het bestand op uw lokale computer op.

    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. Maak de service door het volgende YAML-manifest te kopiëren naar een nieuw bestand met de naam service.yaml en sla het bestand op uw lokale computer op.

    apiVersion: v1
    kind: Service
    metadata:
      name: aks-helloworld
      namespace: hello-web-app-routing
    spec:
      type: ClusterIP
      ports:
      - port: 80
      selector:
        app: aks-helloworld
    

Het object Inkomend verkeer maken

De invoegtoepassing voor toepassingsroutering maakt een toegangsbeheerobjectklasse op het cluster met de naam webapprouting.kubernetes.azure.com. Wanneer u een inkomend object met deze klasse maakt, wordt de invoegtoepassing geactiveerd.

  1. Kopieer het volgende YAML-manifest naar een nieuw bestand met de naam ingress.yaml en sla het bestand op uw lokale computer op.

    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. Maak de clusterbronnen met behulp van de kubectl apply opdracht.

    kubectl apply -f deployment.yaml -n hello-web-app-routing
    

    In de volgende voorbeelduitvoer ziet u de gemaakte resource:

    deployment.apps/aks-helloworld created
    
    kubectl apply -f service.yaml -n hello-web-app-routing
    

    In de volgende voorbeelduitvoer ziet u de gemaakte resource:

    service/aks-helloworld created
    
    kubectl apply -f ingress.yaml -n hello-web-app-routing
    

    In de volgende voorbeelduitvoer ziet u de gemaakte resource:

    ingress.networking.k8s.io/aks-helloworld created
    

Controleren of het beheerde inkomend verkeer is gemaakt

U kunt controleren of het beheerde inkomend verkeer is gemaakt met behulp van de kubectl get ingress opdracht.

kubectl get ingress -n hello-web-app-routing

In de volgende voorbeelduitvoer ziet u het gemaakte beheerde inkomend verkeer:

NAME             CLASS                                HOSTS               ADDRESS       PORTS     AGE
aks-helloworld   webapprouting.kubernetes.azure.com   myapp.contoso.com   20.51.92.19   80, 443   4m

De invoegtoepassing voor toepassingsroutering verwijderen

Gebruik de kubectl delete namespace opdracht om de bijbehorende naamruimte te verwijderen.

kubectl delete namespace hello-web-app-routing

Gebruik de az aks approuting disable opdracht om de invoegtoepassing voor toepassingsroutering uit uw cluster te verwijderen.

az aks approuting disable --name myAKSCluster --resource-group myResourceGroup 

Wanneer de invoegtoepassing voor toepassingsroutering is uitgeschakeld, blijven sommige Kubernetes-resources mogelijk in het cluster aanwezig. Deze resources omvatten configuratie Kaarten en geheimen en worden gemaakt in de naamruimte van het app-routeringssysteem. U kunt deze resources desgewenst verwijderen.

Volgende stappen