Samouczek: włączanie dodatku kontrolera ruchu przychodzącego bramy aplikacji dla istniejącego klastra usługi AKS z istniejącą bramą aplikacji

Interfejs wiersza polecenia platformy Azure lub portal umożliwia włączenie dodatku kontrolera ruchu przychodzącego bramy aplikacji (AGIC) dla istniejącego klastra usługi Azure Kubernetes Services (AKS). Z tego samouczka dowiesz się, jak za pomocą dodatku AGIC uwidocznić aplikację Kubernetes w istniejącym klastrze usługi AKS za pomocą istniejącej bramy aplikacji wdrożonej w oddzielnych sieciach wirtualnych. Zaczniesz od utworzenia klastra usługi AKS w jednej sieci wirtualnej i bramy aplikacji w oddzielnej sieci wirtualnej w celu symulowania istniejących zasobów. Następnie włączysz dodatek AGIC, połączysz elementy równorzędne z dwiema sieciami wirtualnymi i wdrożysz przykładową aplikację, która zostanie udostępniona za pośrednictwem bramy aplikacji przy użyciu dodatku AGIC. Jeśli włączasz dodatek AGIC dla istniejącej bramy aplikacji i istniejącego klastra usługi AKS w tej samej sieci wirtualnej, możesz pominąć poniższy krok komunikacji równorzędnej. Dodatek zapewnia znacznie szybszy sposób wdrażania usługi AGIC dla klastra usługi AKS niż za pośrednictwem programu Helm , a także oferuje w pełni zarządzane środowisko.

Z tego samouczka dowiesz się, jak wykonywać następujące czynności:

  • Tworzenie grupy zasobów
  • Tworzenie nowego klastra usługi AKS
  • Tworzenie nowej bramy aplikacji
  • Włączanie dodatku AGIC w istniejącym klastrze usługi AKS za pomocą interfejsu wiersza polecenia platformy Azure
  • Włączanie dodatku AGIC w istniejącym klastrze usługi AKS za pośrednictwem witryny Azure Portal
  • Komunikacja równorzędna sieci wirtualnej bramy aplikacji z siecią wirtualną klastra usługi AKS
  • Wdrażanie przykładowej aplikacji przy użyciu programu AGIC na potrzeby ruchu przychodzącego w klastrze usługi AKS
  • Sprawdź, czy aplikacja jest osiągalna za pośrednictwem bramy aplikacji

Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto platformy Azure.

Wymagania wstępne

Tworzenie grupy zasobów

Na platformie Azure możesz przydzielić powiązane zasoby do grupy zasobów. Utwórz grupę zasobów za pomocą polecenia az group create. Poniższy przykład tworzy grupę zasobów o nazwie myResourceGroup w lokalizacji Wschodnie stany USA (region):

az group create --name myResourceGroup --location eastus

Wdrażanie nowego klastra usługi AKS

Teraz wdrożysz nowy klaster usługi AKS, aby symulować posiadanie istniejącego klastra usługi AKS, dla którego chcesz włączyć dodatek AGIC.

W poniższym przykładzie wdrożysz nowy klaster usługi AKS o nazwie myCluster przy użyciu usługi Azure CNI i tożsamości zarządzanych w utworzonej grupie zasobów myResourceGroup.

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

Aby skonfigurować więcej parametrów dla powyższego polecenia, zobacz az aks create.

Uwaga

Zostanie utworzona grupa zasobów węzła o nazwie MC_resource-group-name_cluster-name_location.

Wdrażanie nowej bramy aplikacji

Teraz wdrożysz nową bramę aplikacji, aby symulować istniejącą bramę aplikacji, której chcesz użyć do równoważenia obciążenia ruchu do klastra usługi AKS, myCluster. Nazwa bramy aplikacji będzie następująca: myApplicationGateway, ale musisz najpierw utworzyć zasób publicznego adresu IP o nazwie myPublicIp i nową sieć wirtualną o nazwie myVnet z przestrzenią adresową 10.0.0.0/16 oraz podsiecią z przestrzenią adresową 10.0.0.0/24 i wdrożyć bramę aplikacji w podsieci mySubnet przy użyciu myPublicIp.

Uwaga

W przypadku korzystania z klastra AKS i bramy aplikacji w oddzielnych sieciach wirtualnych przestrzenie adresowe dwóch sieci wirtualnych nie mogą się nakładać. Domyślna przestrzeń adresowa wdrażana przez klaster usługi AKS to 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

Uwaga

Dodatek kontrolera ruchu przychodzącego bramy aplikacji (AGIC) obsługuje tylko jednostki SKU bramy aplikacji w wersji 2 (Standardowa i zapora aplikacji internetowej), a nie jednostki SKU bramy aplikacji w wersji 1.

Włączanie dodatku AGIC w istniejącym klastrze usługi AKS za pomocą interfejsu wiersza polecenia platformy Azure

Jeśli chcesz kontynuować korzystanie z interfejsu wiersza polecenia platformy Azure, możesz nadal włączyć dodatek AGIC w utworzonym klastrze usługi AKS, myCluster i określić dodatek AGIC, aby użyć utworzonej istniejącej bramy aplikacji myApplicationGateway.

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

Ważne

Jeśli używasz bramy aplikacji w innej grupie zasobów niż grupa zasobów klastra usługi AKS, tożsamość zarządzana ingressapplicationgateway-{AKSNAME}, która jest tworzona, musi mieć role Współautor sieci i Czytelnik ustawiony w grupie zasobów bramy aplikacji.

Połącz elementy równorzędne z dwiema sieciami wirtualnymi

Ponieważ klaster usługi AKS został wdrożony we własnej sieci wirtualnej i w bramie aplikacji w innej sieci wirtualnej, należy za pomocą komunikacji równorzędnej między dwiema sieciami wirtualnymi, aby ruch przepływał z bramy aplikacji do zasobników w klastrze. Komunikacja równorzędna dwóch sieci wirtualnych wymaga dwukrotnego uruchomienia polecenia interfejsu wiersza polecenia platformy Azure, aby upewnić się, że połączenie jest dwukierunkowe. Pierwsze polecenie spowoduje utworzenie połączenia komunikacji równorzędnej z sieci wirtualnej usługi Application Gateway do sieci wirtualnej usługi AKS; drugie polecenie utworzy połączenie komunikacji równorzędnej w innym kierunku.

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

Uwaga

W kroku "Wdróż nowy klaster usługi AKS" powyżej utworzyliśmy usługę AKS za pomocą usługi Azure CNI, jeśli masz istniejący klaster usługi AKS przy użyciu trybu Kubenet, musisz zaktualizować tabelę tras, aby pomóc pakietom przeznaczonym dla adresu IP zasobnika dotrzeć do węzła obsługującego zasobnik. Prostym sposobem osiągnięcia tego celu jest skojarzenie tej samej tabeli tras utworzonej przez usługę AKS z podsiecią usługi Application Gateway.

Wdrażanie przykładowej aplikacji przy użyciu programu AGIC

Teraz wdrożysz przykładową aplikację w utworzonym klastrze usługi AKS, który będzie używał dodatku AGIC dla ruchu przychodzącego i połączysz bramę aplikacji z klastrem usługi AKS. Najpierw uzyskasz poświadczenia do wdrożonego klastra az aks get-credentials usługi AKS, uruchamiając polecenie .

az aks get-credentials -n myCluster -g myResourceGroup

Po utworzeniu poświadczeń do utworzonego klastra uruchom następujące polecenie, aby skonfigurować przykładową aplikację korzystającą z programu AGIC dla ruchu przychodzącego do klastra. Program AGIC zaktualizuje bramę aplikacji skonfigurowaną wcześniej przy użyciu odpowiednich reguł routingu do nowej wdrożonej przykładowej aplikacji.

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

Sprawdź, czy aplikacja jest osiągalna

Teraz, gdy brama aplikacji jest skonfigurowana do obsługi ruchu do klastra usługi AKS, sprawdźmy, czy aplikacja jest osiągalna. Najpierw uzyskasz adres IP ruchu przychodzącego.

kubectl get ingress

Sprawdź, czy utworzona przykładowa aplikacja jest uruchomiona, odwiedzając adres IP bramy aplikacji uzyskany z uruchomienia powyższego polecenia lub zaewidencjonuj curlpolecenie . Pobranie aktualizacji przez bramę aplikacji może potrwać minutę, więc jeśli brama aplikacji jest nadal w stanie "Aktualizowanie" w witrynie Azure Portal, niech zakończy się przed próbą uzyskania adresu IP.

Czyszczenie zasobów

Jeśli nie są już potrzebne, usuń wszystkie zasoby utworzone w tym samouczku, usuwając grupę zasobów myResourceGroup i MC_myResourceGroup_myCluster_eastus :

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

Następne kroki