Verwalteter NGINX-Eingang mit dem Anwendungsrouting-Add-On

Eine Möglichkeit zum Weiterleiten von HTTP- (Hypertext Transfer Protocol) und HTTPS-Datenverkehr (sicheres HTTP) an Anwendungen in einem AKS-Cluster (Azure Kubernetes Service) stellt die Verwendung des Kubernetes-Eingangsobjekts dar. Wenn Sie ein Eingangsobjekt erstellen, das die NGINX-Eingangsklassen des Anwendungsrouting-Add-Ons verwendet, erstellt, konfiguriert und verwaltet das Add-On mindestens einen Eingangsdatencontroller in Ihrem AKS-Cluster.

In diesem Artikel erfahren Sie, wie Sie einen einfachen Eingangsdatencontroller in Ihrem AKS-Cluster bereitstellen und konfigurieren.

Anwendungsrouting-Add-On mit NGINX-Features

Das Anwendungsrouting-Add-On mit NGINX ermöglicht Folgendes:

  • Einfache Konfiguration von verwalteten NGINX-Eingangsdatencontrollern basierend auf NGINX-Eingangsdatencontrollern für Kubernetes
  • Integration in Azure DNS für die Verwaltung öffentlicher und privater Zonen
  • SSL-Beendigung mit Zertifikaten, die in Azure Key Vault gespeichert sind

Weitere Konfigurationen finden Sie unter:

Mit der Einstellung von Open Service Mesh (OSM) durch die Cloud Native Computing Foundation (CNCF) ist die Verwendung des Anwendungsrouting-Add-Ons mit OSM nicht empfehlenswert.

Voraussetzungen

  • Ein Azure-Abonnement. Falls Sie über kein Azure-Abonnement verfügen, können Sie ein kostenloses Konto erstellen.
  • Version 2.54.0 oder höher der Azure CLI installiert und konfiguriert. Führen Sie az --version aus, um die Version zu ermitteln. Informationen zum Durchführen einer Installation oder eines Upgrades finden Sie bei Bedarf unter Installieren der Azure CLI.
  • Installation der Azure CLI-Erweiterung aks-preview, Version 0.5.171 oder höher

Begrenzungen

  • Das Anwendungsrouting-Add-On unterstützt bis zu fünf Azure DNS-Zonen.
  • Alle globalen Azure DNS-Zonen, die in das Add-On integriert sind, müssen sich in derselben Ressourcengruppe befinden.
  • Alle privaten Azure DNS-Zonen, die in das Add-On integriert sind, müssen sich in derselben Ressourcengruppe befinden.
  • Das Bearbeiten des Eingangs-NGINX ConfigMap im app-routing-system-Namespace wird nicht unterstützt.
  • Die folgenden Codeausschnittanmerkungen werden blockiert und verhindern, dass ein Ingress konfiguriert wird: load_module, lua_package, _by_lua, location, root, proxy_pass, serviceaccount, {, }, '.

Aktivieren von Anwendungsrouting mithilfe der Azure CLI

Aktivieren in einem neuen Cluster

Um das Anwendungsrouting in einem neuen Cluster zu aktivieren, verwenden Sie den Befehl az aks create und geben Sie die Flag --enable-app-routing an.

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

Aktivieren in einem vorhandenen Cluster

Führen Sie zum Aktivieren von Anwendungsrouting auf einem vorhandenen Cluster den Befehl az aks approuting enable aus.

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

Herstellen einer Verbindung mit dem AKS-Cluster

Zum Herstellen der Verbindung mit dem Kubernetes-Cluster auf Ihrem lokalen Computer verwenden Sie den Kubernetes-Befehlszeilenclient kubectl. Mit dem az aks install-cli-Befehl können Sie es lokal installieren. Wenn Sie Azure Cloud Shell verwenden, ist kubectl bereits installiert.

Mit dem Befehl az aks get-credentials können Sie kubectl für die Verbindungsherstellung mit Ihrem Kubernetes-Cluster konfigurieren.

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

Bereitstellen von Anwendungen

Das Anwendungsrouting-Add-On verwendet Anmerkungen für Kubernetes-Eingangsobjekte, um die zugehörigen Ressourcen zu erstellen.

  1. Erstellen Sie den Anwendungsnamespace hello-web-app-routing, um die Beispielpods mit dem Befehl kubectl create namespace auszuführen.

    kubectl create namespace hello-web-app-routing
    
  2. Erstellen Sie die Bereitstellung, indem Sie das folgende YAML-Manifest in eine neue Datei namens deployment.yaml kopieren und die Datei auf Ihrem lokalen Computer speichern.

    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. Erstellen Sie den Dienst, indem Sie das folgende YAML-Manifest in eine neue Datei namens service.yaml kopieren und die Datei auf Ihrem lokalen Computer speichern.

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

Erstellen des Eingangsobjekts

Das Anwendungsrouting-Add-On erstellt eine Eingangsklasse im Cluster mit Namen webapprouting.kubernetes.azure.com. Wenn Sie ein Eingangsobjekt mit dieser Klasse erstellen, aktiviert es das Add-On.

  1. Kopieren Sie das folgende YAML-Manifest in eine neue Datei namens ingress.yaml, und speichern Sie die Datei auf Ihrem lokalen Computer.

    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. Erstellen Sie die Clusterressourcen mithilfe des Befehls kubectl apply.

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

    In der folgenden Beispielausgabe sehen Sie die erstellten Ressourcen:

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

    In der folgenden Beispielausgabe sehen Sie die erstellten Ressourcen:

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

    In der folgenden Beispielausgabe sehen Sie die erstellten Ressourcen:

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

Überprüfen, ob der verwaltete Eingang erstellt wurde

Überprüfen Sie mithilfe des Befehls kubectl get ingress, ob der verwaltete Eingang erstellt wurde.

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

Die folgende Beispielausgabe zeigt den erstellten verwalteten Eingang:

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

Entfernen des Anwendungsrouting-Add-Ons

Entfernen Sie den zugeordneten Namespace mithilfe des Befehls kubectl delete namespace.

kubectl delete namespace hello-web-app-routing

Entfernen Sie das Anwendungsrouting-Add-On mithilfe des Befehls az aks approuting disable aus Ihrem Cluster.

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

Wenn das Add-On für das Anwendungsrouting deaktiviert ist, verbleiben eventuell einige Kubernetes-Ressourcen im Cluster. Zu diesen Ressourcen zählen configMaps und secrets, und sie werden im Namespace app-routing-system erstellt. Sie können diese Ressourcen bei Bedarf entfernen.

Nächste Schritte