Руководство. Включение надстройки контроллера входящего трафика шлюза приложений для существующего кластера 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 --name myCluster --resource-group 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 --name myPublicIp --resource-group myResourceGroup --allocation-method Static --sku Standard
az network vnet create --name myVnet --resource-group myResourceGroup --address-prefix 10.0.0.0/16 --subnet-name mySubnet --subnet-prefix 10.0.0.0/24
az network application-gateway create --name myApplicationGateway --resource-group 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 --name myApplicationGateway --resource-group myResourceGroup -o tsv --query "id")
az aks enable-addons --name myCluster --resource-group myResourceGroup --addon ingress-appgw --appgw-id $appgwId
Включение надстройки AGIC в существующем кластере AKS с помощью портал Azure
- На домашней странице портал Azure перейдите к ресурсу кластера AKS.
- В меню службы в разделе "Параметры" выберите "Интеграция сетевой>виртуальной сети".
- В разделе Шлюз приложений контроллер входящего трафика нажмите кнопку "Управление".
- На странице контроллера Шлюз приложений входящего трафика установите флажок, чтобы включить контроллер входящего трафика, а затем выберите существующий шлюз приложений из раскрывающегося списка.
- Выберите Сохранить.
Внимание
Если вы используете шлюз приложений в другой группе ресурсов, отличной от группы ресурсов кластера AKS, то у управляемого удостоверения ingressapplicationgateway-{AKSNAME} должны быть установлены роли участника сети и читателя , заданные в группе ресурсов шлюза приложений.
Создание пирингового подключения между двумя виртуальными сетями
Так как вы развернули кластер AKS в собственной виртуальной сети и шлюзе приложений в другой виртуальной сети, необходимо выполнить пиринг между двумя виртуальными сетями для передачи трафика из шлюза приложений в модули pod в кластере. Для пирингового подключения между двумя виртуальными сетями требуется выполнить команду Azure CLI два раза, чтобы обеспечить двустороннюю связь. Первая команда создаст пиринговое подключение из виртуальной сети шлюза приложений к виртуальной сети AKS; Вторая команда создаст пиринговое соединение в другом направлении.
nodeResourceGroup=$(az aks show --name myCluster --resource-group myResourceGroup -o tsv --query "nodeResourceGroup")
aksVnetName=$(az network vnet list --resource-group $nodeResourceGroup -o tsv --query "[0].name")
aksVnetId=$(az network vnet show --name $aksVnetName --resource-group $nodeResourceGroup -o tsv --query "id")
az network vnet peering create --name AppGWtoAKSVnetPeering --resource-group myResourceGroup --vnet-name myVnet --remote-vnet $aksVnetId --allow-vnet-access
appGWVnetId=$(az network vnet show --name myVnet --resource-group myResourceGroup -o tsv --query "id")
az network vnet peering create --name AKStoAppGWVnetPeering --resource-group $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 --name myCluster --resource-group 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