Tutorial: Aktivieren des Application Gateway-Eingangsdatencontroller-Add-Ons für einen vorhandenen AKS-Cluster mit einer vorhandenen Application Gateway-Instanz

Mit der Azure CLI oder dem Portal können Sie das Add-On Application Gateway-Eingangsdatencontroller (Application Gateway Ingress Controller, AGIC) für einen vorhandenen Cluster für Azure Kubernetes Services (AKS) aktivieren. In diesem Tutorial erfahren Sie, wie Sie Ihre Kubernetes-Anwendung mit dem AGIC-Add-On über einen vorhandenen Application Gateway in einem vorhandenen AKS-Cluster verfügbar machen, die in separaten virtuellen Netzwerken bereitgestellt werden. Zunächst erstellen Sie einen AKS-Cluster in einem virtuellen Netzwerk und ein Application Gateway in einem anderen virtuellen Netzwerk, um vorhandene Ressourcen zu simulieren. Anschließend aktivieren Sie das AGIC-Add-On, fassen die beiden virtuellen Netzwerke zusammen und stellen eine Beispielanwendung bereit, die über die Application Gateway-Instanz mithilfe des AGIC-Add-Ons verfügbar gemacht wird. Wenn Sie das AGIC-Add-On für ein vorhandenes Application Gateway und einen vorhandenen AKS-Cluster im gleichen virtuellen Netzwerk aktivieren, können Sie den Schritt zum Peering weiter unten überspringen. Das Add-On ermöglicht eine viel schnellere Bereitstellung von AGIC für Ihren AKS-Cluster als das Verfahren mit Helm und bietet außerdem umfassende Verwaltungsfunktionen.

In diesem Tutorial lernen Sie Folgendes:

  • Erstellen einer Ressourcengruppe
  • Erstellen eines neuen AKS-Clusters
  • Erstellen eines neuen Application Gateway
  • Aktivieren des AGIC-Add-Ons im vorhandenen AKS-Cluster über die Azure CLI
  • Aktivieren des AGIC-Add-Ons im vorhandenen AKS-Cluster über das Azure-Portal
  • Peering des virtuellen Netzwerks des Application Gateway mit dem virtuelles Netzwerk des AKS-Cluster
  • Bereitstellen einer Beispielanwendung mit AGIC für eingehenden Datenverkehr auf dem AKS-Cluster
  • Überprüfen der Erreichbarkeit der Anwendung über Application Gateway

Wenn Sie kein Azure-Abonnement haben, erstellen Sie ein kostenloses Azure-Konto, bevor Sie beginnen.

Voraussetzungen

  • Verwenden Sie die Bash-Umgebung in Azure Cloud Shell. Weitere Informationen finden Sie unter Schnellstart für Bash in Azure Cloud Shell.

  • Wenn Sie CLI-Referenzbefehle lieber lokal ausführen, installieren Sie die Azure CLI. Wenn Sie Windows oder macOS ausführen, sollten Sie die Azure CLI in einem Docker-Container ausführen. Weitere Informationen finden Sie unter Ausführen der Azure CLI in einem Docker-Container.

    • Wenn Sie eine lokale Installation verwenden, melden Sie sich mithilfe des Befehls az login bei der Azure CLI an. Führen Sie die in Ihrem Terminal angezeigten Schritte aus, um den Authentifizierungsprozess abzuschließen. Informationen zu anderen Anmeldeoptionen finden Sie unter Anmelden mit der Azure CLI.

    • Installieren Sie die Azure CLI-Erweiterung beim ersten Einsatz, wenn Sie dazu aufgefordert werden. Weitere Informationen zu Erweiterungen finden Sie unter Verwenden von Erweiterungen mit der Azure CLI.

    • Führen Sie az version aus, um die installierte Version und die abhängigen Bibliotheken zu ermitteln. Führen Sie az upgrade aus, um das Upgrade auf die aktuelle Version durchzuführen.

Erstellen einer Ressourcengruppe

In Azure ordnen Sie verwandte Ressourcen einer Ressourcengruppe zu. Erstellen Sie mit az group create eine Ressourcengruppe. Im folgenden Beispiel wird eine Ressourcengruppe mit dem Namen myResourceGroup am Standort (Region) USA, Osten erstellt:

az group create --name myResourceGroup --location eastus

Bereitstellen eines neuen AKS-Clusters

Sie stellen nun einen neuen AKS-Cluster bereit, um einen vorhandenen AKS-Cluster zu simulieren, für den Sie das AGIC-Add-On aktivieren möchten.

Im folgenden Beispiel stellen Sie einen AKS-Cluster mit dem Namen myCluster über Azure CNI und Verwaltete Identitäten in der von Ihnen erstellten Ressourcengruppe myResourceGroup bereit.

az aks create -n myCluster -g myResourceGroup --network-plugin azure --enable-managed-identity --generate-ssh-keys

Informationen zur Konfiguration weiterer Parameter für den obigen Befehl finden Sie unter az aks create.

Hinweis

Eine Knotenressourcengruppe wird mit dem Namen MC_resource-group-name_cluster-name_location erstellt.

Bereitstellen eines neuen Application Gateway

Sie stellen nun ein neues Application Gateway bereit, um ein vorhandenes Application Gateway zu simulieren, das Sie für den Lastenausgleich des Datenverkehrs zum AKS-Cluster myCluster verwenden möchten. Das Application Gateway erhält den Namen myApplicationGateway, Sie müssen jedoch zunächst eine Ressource mit öffentlicher IP-Adresse und dem Namen myPublicIp und ein neues virtuelles Netzwerk mit dem Namen myVnet und dem Adressraum 10.0.0.0/16 erstellen sowie ein Subnetz mit dem Adressraum 10.0.0.0/24 und dem Namen mySubnet. Stellen Sie dann das Application Gateway in mySubnet mithilfe von myPublicIp bereit.

Achtung

Wenn Sie ein AKS-Cluster und ein Application Gateway in separaten virtuellen Netzwerken verwenden, dürfen sich die Adressräume der beiden virtuellen Netzwerke nicht überlappen. Der Standardadressraum, in dem ein AKS-Cluster bereitgestellt wird, ist 10.224.0.0/12.

az network public-ip create -n myPublicIp -g myResourceGroup --allocation-method Static --sku Standard
az network vnet create -n myVnet -g myResourceGroup --address-prefix 10.0.0.0/16 --subnet-name mySubnet --subnet-prefix 10.0.0.0/24 
az network application-gateway create -n myApplicationGateway -g myResourceGroup --sku Standard_v2 --public-ip-address myPublicIp --vnet-name myVnet --subnet mySubnet --priority 100

Hinweis

Das AGIC-Add-On (Application Gateway Ingress Controller, Application Gateway-Eingangscontroller) unterstützt nur Application Gateway v2-SKUs (Standard und WAF) und keine Application Gateway v1-SKUs.

Aktivieren des AGIC-Add-Ons im vorhandenen AKS-Cluster über die Azure CLI

Wenn Sie weiter mit der Azure CLI arbeiten möchten, können Sie nun fortfahren und das AGIC-Add-On in dem von Ihnen erstellten AKS-Cluster myCluster aktivieren und angeben, dass das AGIC-Add-On die vorhandene Application Gateway-Instanz myApplicationGateway verwenden soll, die Sie zuvor erstellt haben.

appgwId=$(az network application-gateway show -n myApplicationGateway -g myResourceGroup -o tsv --query "id") 
az aks enable-addons -n myCluster -g myResourceGroup -a ingress-appgw --appgw-id $appgwId

Wichtig

Wenn Sie ein Anwendungsgateway in einer anderen Ressourcengruppe als der AKS-Clusterressourcengruppe verwenden, muss die verwaltete Identität ingressapplicationgateway-{AKSNAME}, die erstellt wird, Mitwirkenden- und Reader-Rollen in der Ressourcengruppe des Anwendungsgateways festgelegt haben.

Peering zwischen den beiden virtuellen Netzwerken

Da der AKS-Cluster in einem eigenen virtuellen Netzwerk und das Application Gateway in einem anderen virtuellen Netzwerk bereitgestellt wurde, müssen Sie die beiden virtuellen Netzwerke per Peering miteinander verknüpfen, damit Datenverkehr vom Application Gateway zu den Pods im Cluster fließt. Für das Peering der beiden virtuellen Netzwerke muss der Azure CLI-Befehl zweimal ausgeführt werden, um sicherzustellen, dass die Verbindung bidirektional ist. Mit dem ersten Befehl wird eine Peeringverbindung vom virtuellen Netzwerk mit dem Application Gateway zum virtuellen AKS-Netzwerk erstellt. Mit dem zweiten Befehl wird eine Peeringverbindung in umgekehrter Richtung erstellt.

nodeResourceGroup=$(az aks show -n myCluster -g myResourceGroup -o tsv --query "nodeResourceGroup")
aksVnetName=$(az network vnet list -g $nodeResourceGroup -o tsv --query "[0].name")

aksVnetId=$(az network vnet show -n $aksVnetName -g $nodeResourceGroup -o tsv --query "id")
az network vnet peering create -n AppGWtoAKSVnetPeering -g myResourceGroup --vnet-name myVnet --remote-vnet $aksVnetId --allow-vnet-access

appGWVnetId=$(az network vnet show -n myVnet -g myResourceGroup -o tsv --query "id")
az network vnet peering create -n AKStoAppGWVnetPeering -g $nodeResourceGroup --vnet-name $aksVnetName --remote-vnet $appGWVnetId --allow-vnet-access

Hinweis

Im Schritt „Bereitstellen eines neuen AKS-Clusters“ haben wir oben AKS mit Azure CNI erstellt. Falls Sie über einen vorhandenen AKS-Cluster mit Kubenet-Modus verfügen, müssen Sie die Routentabelle aktualisieren, damit die Pakete, die für eine POD-IP bestimmt sind, den Knoten erreichen, der den Pod hostet. Eine einfache Möglichkeit, dies zu erreichen, besteht darin, die gleiche Routentabelle zuzuordnen, die von AKS zum Subnetz der Application Gateway-Instanz erstellt wurde.

Bereitstellen einer Beispielanwendung mit AGIC

Nun stellen Sie eine Beispielanwendung im erstellten AKS-Cluster bereit, die das AGIC-Add-On für den eingehenden Datenverkehr verwendet, und verbinden das Application Gateway mit dem AKS-Cluster. Zuerst rufen Sie die Anmeldeinformationen für den von Ihnen bereitgestellten AKS-Cluster ab, indem Sie den Befehl az aks get-credentials ausführen.

az aks get-credentials -n myCluster -g myResourceGroup

Sobald Sie über die Anmeldeinformationen für den von Ihnen erstellten Cluster verfügen, führen Sie den folgenden Befehl aus, um eine Beispielanwendung einzurichten, die AGIC für beim Cluster eingehenden Datenverkehr verwendet. AGIC aktualisiert das Application Gateway, das Sie zuvor eingerichtet haben, mit den entsprechenden Routingregeln für die neue Beispielanwendung, die Sie bereitgestellt haben.

kubectl apply -f https://raw.githubusercontent.com/Azure/application-gateway-kubernetes-ingress/master/docs/examples/aspnetapp.yaml 

Überprüfen der Erreichbarkeit der Anwendung

Nachdem das Application Gateway für den Datenverkehr zum AKS-Cluster eingerichtet wurde, überprüfen Sie, ob Ihre Anwendung erreichbar ist. Rufen Sie zunächst die IP-Adresse des eingehenden Datenverkehrs ab.

kubectl get ingress

Überprüfen Sie, ob die von Ihnen erstellte Beispielanwendung ausgeführt wird, indem Sie die IP-Adresse des Application Gateway aufrufen, die Sie mit dem Befehl oben abgerufen haben, oder verwenden Sie curl. Es kann eine Minute dauern, bis das Application Gateway aktualisiert wurde. Wenn der Status des Application Gateway im Azure-Portal also noch „Aktualisieren“ lautet, warten Sie, bis der Vorgang abgeschlossen ist, bevor Sie versuchen, die IP-Adresse zu erreichen.

Bereinigen von Ressourcen

Wenn Sie sie nicht mehr benötigen, löschen Sie alle Ressourcen, die in diesem Lernprogramm erstellt wurden, indem Sie myResourceGroup und MC_myResourceGroup_myCluster_eastus Ressourcengruppen löschen:

az group delete --name myResourceGroup 
az group delete --name MC_myResourceGroup_myCluster_eastus

Nächste Schritte