Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Вы можете использовать Azure CLI или портал, чтобы включить дополнение контроллера входящего трафика шлюза приложений (AGIC) для существующего кластера Azure Kubernetes Services (AKS). В этом руководстве вы узнаете, как использовать дополнение AGIC для публикации вашего приложения Kubernetes в существующем кластере AKS через существующий шлюз приложений, развернутый в отдельных виртуальных сетях. Вы начнёте с создания кластера AKS в одной виртуальной сети и шлюза приложений в отдельной виртуальной сети, чтобы смоделировать существующие ресурсы. Затем вы включите дополнение AGIC, объедините две виртуальные сети и развернете образец приложения, которое будет доступно через шлюз приложений с использованием дополнения AGIC. Если вы включаете дополнение AGIC для существующего шлюза приложений и существующего кластера AKS в одной и той же виртуальной сети, то вы можете пропустить шаг подключения ниже. Дополнение предоставляет гораздо более быстрый способ развертывания AGIC для вашего кластера AKS, чем с помощью Helm, а также предлагает полностью управляемый опыт.
В этом руководстве вы узнаете, как:
- Создайте группу ресурсов.
- Создать новый кластер AKS.
- Создайте новый шлюз приложения.
- Включите дополнение AGIC в существующем кластере AKS через Azure CLI.
- Включите дополнительный модуль AGIC в существующем кластере AKS через портал Azure.
- Создайте связь между виртуальной сетью шлюза приложений и виртуальной сетью кластера AKS.
- Разверните образец приложения, используя AGIC для входных подключений в кластере AKS.
- Проверьте, доступно ли приложение через шлюз приложения.
Если у вас нет аккаунта Azure, создайте бесплатную учетную запись перед началом.
Предпосылки
Используйте среду Bash в Azure Cloud Shell. Дополнительные сведения см. в статье "Начало работы с Azure Cloud Shell".
Если вы предпочитаете запускать командные команды CLI локально, установите Azure CLI. Если вы используете Windows или macOS, рассмотрите возможность запуска Azure CLI в контейнере Docker. Для получения дополнительной информации см. Как запускать Azure CLI в контейнере Docker.
Если вы используете локальную установку, войдите в Azure CLI с помощью команды az login. Чтобы завершить процесс аутентификации, следуйте шагам, отображаемым в вашем терминале. Сведения о других параметрах входа см. в статье "Проверка подлинности в Azure с помощью Azure CLI".
Когда будет предложено, установите расширение Azure CLI при первом использовании. Дополнительные сведения о расширениях см. в статье Использование расширений и управление ими с помощью Azure CLI.
Выполните команду az version, чтобы определить установленную версию и зависимые библиотеки. Чтобы обновиться до последней версии, выполните команду az upgrade.
Создайте группу ресурсов
В Azure вы выделяете связанные ресурсы в группу ресурсов. Создайте группу ресурсов с помощью az group create. В следующем примере создается группа ресурсов с именем myResourceGroup в регионе East US (восток США):
az group create --name myResourceGroup --location eastus
Разверните новый кластер AKS
Теперь вы развернете новый кластер AKS, чтобы симулировать наличие существующего кластера AKS, для которого вы хотите включить дополнение AGIC.
В следующем примере вы будете развертывать новый кластер AKS с именем myCluster, используя Azure CNI и Managed Identities в созданной вами группе ресурсов 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.
Предупреждение
В этом документе предполагается, что Azure CNI устанавливается в кластере AKS. Если вы планируете использовать наложение CNI, необходимо убедиться, что шлюз приложений и кластер AKS являются частью одной виртуальной сети.
Развернуть новый шлюз приложений
Теперь вы развернете новый шлюз приложений, чтобы смоделировать наличие существующего шлюза приложений, который вы хотите использовать для балансировки нагрузки на ваш кластер AKS, myCluster. Имя шлюза приложения будет myApplicationGateway, но сначала нужно создать публичный IP-ресурс с именем myPublicIp, и новую виртуальную сеть под названием myVnet с адресным пространством 10.0.0.0/16, и подсеть с адресным пространством 10.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) поддерживает только шлюзы приложений v2 SKU (Standart и WAF), и не поддерживает шлюзы приложений v1 SKU.
Включите дополнение 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.
- В меню обслуживания, в разделе Настройки, выберите Сетевое взаимодействие>Интеграция в виртуальную сеть.
- Под Application Gateway ingress controller выберите Manage.
- На странице контроллера входа шлюза приложений выберите флажок, чтобы включить контроллер входа, а затем выберите существующий шлюз приложений из выпадающего списка.
- Нажмите кнопку "Сохранить".
важно
Если вы используете шлюз приложения в другой группе ресурсов, отличной от группы ресурсов кластера AKS, созданная управляемая идентичность ingressapplicationgateway-{AKSNAME} должна иметь роли Network Contributor и Reader, назначенные в группе ресурсов шлюза приложения.
Соедините два виртуальные сети друг с другом
Поскольку вы развернули кластер AKS в своей собственной виртуальной сети, а шлюз приложений в другой виртуальной сети, вам нужно объединить эти две виртуальные сети, чтобы трафик мог проходить от шлюза приложений к подам в кластере. Для соединения двух виртуальных сетей требуется дважды запустить команду 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 для Ingress, и подключите шлюз приложений к кластеру AKS. Сначала получите учетные данные для кластера AKS, который вы развернули, выполнив команду az aks get-credentials.
az aks get-credentials --name myCluster --resource-group myResourceGroup
Как только у вас будут учетные данные для созданного вами кластера, выполните следующую команду, чтобы настроить примерное приложение, использующее AGIC для входа в кластер. 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