Руководство. Включение надстройки контроллера входящего трафика шлюза приложений для существующего кластера AKS с существующим шлюзом приложений

С помощью Azure CLI или портала можно включить надстройку контроллера входящего трафика шлюза приложений (AGIC) для существующего кластера Служба Azure Kubernetes (AKS). В этом руководстве описано, как использовать надстройку AGIC для предоставления приложения Kubernetes в существующем кластере AKS через существующий шлюз приложений, развернутый в отдельных виртуальных сетях. Начнем с создания кластера AKS в одной виртуальной сети и шлюза приложений в отдельной виртуальной сети для имитации существующих ресурсов. Затем вы включите надстройку AGIC, пиринг между двумя виртуальными сетями и разверните пример приложения, которое будет предоставляться через шлюз приложений с помощью надстройки AGIC. Если вы включаете надстройку AGIC для существующего шлюза приложений и существующего кластера AKS в той же виртуальной сети, можно пропустить шаг пиринга ниже. Надстройка обеспечивает гораздо более быстрый способ развертывания AGIC для кластера AKS, чем через Helm , а также обеспечивает полностью управляемый интерфейс.

В этом руководстве описано следующее:

  • Создание или изменение группы ресурсов
  • Создание кластера AKS.
  • Создание шлюза приложений
  • Включение надстройки AGIC в существующем кластере AKS с помощью Azure CLI
  • Включите надстройку AGIC в существующем кластере AKS с помощью портал Azure
  • Пиринг виртуальной сети шлюза приложений с виртуальной сетью кластера AKS
  • Развертывание примера приложения с помощью AGIC для входящего трафика в кластере AKS
  • Убедитесь, что приложение доступно через шлюз приложений

Если у вас еще нет подписки Azure, создайте бесплатную учетную запись Azure, прежде чем начинать работу.

Необходимые компоненты

  • Используйте среду Bash в Azure Cloud Shell. Дополнительные сведения см . в кратком руководстве по Bash в Azure Cloud Shell.

  • Если вы предпочитаете выполнять справочные команды CLI локально, установите Azure CLI. Если вы работаете в Windows или macOS, Azure CLI можно запустить в контейнере Docker. Дополнительные сведения см. в статье Как запустить Azure CLI в контейнере Docker.

    • Если вы используете локальную установку, выполните вход в Azure CLI с помощью команды az login. Чтобы выполнить аутентификацию, следуйте инструкциям в окне терминала. Сведения о других возможностях, доступных при входе, см. в статье Вход с помощью Azure CLI.

    • Установите расширение Azure CLI при первом использовании, когда появится соответствующий запрос. Дополнительные сведения о расширениях см. в статье Использование расширений с Azure CLI.

    • Выполните команду az version, чтобы узнать установленную версию и зависимые библиотеки. Чтобы обновиться до последней версии, выполните команду az upgrade.

Создание или изменение группы ресурсов

В Azure выделите связанные ресурсы группе ресурсов. Создайте группу ресурсов, используя команду az group create. В следующем примере создается группа ресурсов с именем myResourceGroup в расположении "Восточная часть США " (регион):

az group create --name myResourceGroup --location eastus

Развертывание нового кластера AKS

Теперь можно развернуть новый кластер AKS, чтобы имитировать наличие имеющегося кластера AKS, для которого требуется включить надстройку AGIC.

В следующем примере вы развернете новый кластер AKS с именем myCluster, используя Azure CNI и управляемые удостоверения в созданной группе ресурсов myResourceGroup.

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

Чтобы настроить дополнительные параметры для приведенной выше команды, см . статью az aks create.

Примечание.

Группа ресурсов узла будет создана с именем MC_resource-group-name_cluster-name_location.

Развертывание нового шлюза приложений

Теперь вы развернете новый шлюз приложений, чтобы имитировать существующий шлюз приложений, который вы хотите использовать для балансировки трафика в кластер AKS, myCluster. Имя шлюза приложений будет myApplicationGateway, но сначала необходимо создать ресурс общедоступного IP-адреса с именем myPublicIp и новую виртуальную сеть с адресным пространством 10.0.0.0.0/16 и подсеть с адресным пространством 10.0.0.0.0/24 с именем mySubnet и развернуть шлюз приложений в mySubnet с помощью myPublicIp.

Внимание

При использовании кластера AKS и шлюза приложений в отдельных виртуальных сетях адресные пространства двух виртуальных сетей не должны перекрываться. Адресное пространство по умолчанию, в которое развертывается кластер AKS, равно 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

Примечание.

Надстройка контроллера входящего трафика шлюза приложений (AGIC) поддерживает только номера SKU шлюза приложений версии 2 (standard и WAF), а не SKU шлюза приложений версии 1.

Включение надстройки AGIC в существующем кластере AKS с помощью Azure CLI

Если вы хотите продолжить использование Azure CLI, вы можете продолжить включение надстройки AGIC в созданном кластере AKS myCluster и указать надстройку AGIC для использования существующего шлюза приложений, 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

Внимание

При использовании шлюза приложений в другой группе ресурсов, отличной от группы ресурсов кластера AKS, у управляемого удостоверения ingressapplicationgateway-{AKSNAME}, который создается, должны быть установлены роли участника сети и читателя в группе ресурсов шлюза приложений.

Создание пирингового подключения между двумя виртуальными сетями

Так как вы развернули кластер AKS в собственной виртуальной сети и шлюзе приложений в другой виртуальной сети, необходимо выполнить пиринг между двумя виртуальными сетями для передачи трафика из шлюза приложений в модули pod в кластере. Для пирингового подключения между двумя виртуальными сетями требуется выполнить команду Azure CLI два раза, чтобы обеспечить двустороннюю связь. Первая команда создаст пиринговое подключение из виртуальной сети шлюза приложений к виртуальной сети AKS; Вторая команда создаст пиринговое соединение в другом направлении.

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

Примечание.

На шаге "Развертывание нового кластера AKS" выше мы создали AKS с Azure CNI, если у вас есть существующий кластер AKS с помощью режима Kubenet, необходимо обновить таблицу маршрутов, чтобы помочь пакетам, предназначенным для IP-адреса POD, достичь узла, на котором размещен модуль pod. Это можно сделать простым путем связывания той же таблицы маршрутов, созданной AKS с подсетью Шлюз приложений.

Развертывание примера приложения с помощью AGIC

Теперь вы развернете пример приложения в созданном кластере AKS, который будет использовать надстройку AGIC для входящего трафика и подключите шлюз приложений к кластеру AKS. Сначала получите учетные данные для развернутого кластера AKS с помощью команды az aks get-credentials.

az aks get-credentials -n myCluster -g myResourceGroup

Теперь, когда у вас есть учетные данные для созданного кластера, выполните указанную ниже команду, чтобы настроить пример приложения, использующего AGIC для ingress в кластере. AGIC обновит шлюз приложений, настроенный ранее с соответствующими правилами маршрутизации, до нового развернутого примера приложения.

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

Проверка доступности приложения

Теперь, когда шлюз приложений настроен для обслуживания трафика в кластер AKS, давайте убедимся, что приложение доступно. Сначала получите IP-адрес объекта ingress.

kubectl get ingress

Убедитесь, что созданное приложение запущено и запущено, перейдя по IP-адресу шлюза приложений, который вы получили от выполнения приведенной выше команды или проверка.curl Чтобы получить обновление, шлюз приложений может занять минуту, поэтому если шлюз приложений по-прежнему находится в состоянии "Обновление" в портал Azure, а затем дайте ему завершить работу, прежде чем попытаться получить IP-адрес.

Очистка ресурсов

При отсутствии необходимости удалите все ресурсы, созданные в этом руководстве, удалив myResourceGroup и MC_myResourceGroup_myCluster_eastus группы ресурсов:

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

Следующие шаги