Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Контроллер ALB отвечает за преобразование конфигурации Gateway API и Ingress API в Kubernetes в правила балансировки нагрузки в Application Gateway для контейнеров. В следующем руководстве описаны шаги, необходимые для включения API управляемого шлюза AKS и шлюза приложений для надстроек контроллера ALB контейнеров в новом или существующем кластере Службы Azure Kubernetes (AKS).
Предпосылки
Перед включением надстройки контроллера балансировки нагрузки в кластере необходимо выполнить следующие задачи:
Подготовьте подписку Azure и вашего клиента
az-cli.# Sign in to your Azure subscription. SUBSCRIPTION_ID='<your subscription id>' az login az account set --subscription $SUBSCRIPTION_ID # Register required resource providers on Azure. az provider register --namespace Microsoft.ContainerService az provider register --namespace Microsoft.Network az provider register --namespace Microsoft.NetworkFunction az provider register --namespace Microsoft.ServiceNetworking # Install Azure CLI extensions. az extension add --name alb az extension add --name aks-previewРегистрация дополнительной функции
# Register required preview features az feature register --namespace "Microsoft.ContainerService" --name "ManagedGatewayAPIPreview" az feature register --namespace "Microsoft.ContainerService" --name "ApplicationLoadBalancerPreview"
Настройте кластер AKS с помощью надстройки AKS
Надстройка AKS может быть включена в новых или существующих кластерах.
Для успешного развертывания надстройки нужны следующие требования к кластеру AKS:
- Должен находиться в регионе, где доступен шлюз приложений для контейнеров.
- Необходимо использовать сеть Azure CNI или сеть Azure CNI Overlay.
- Должна быть включена функция идентификации рабочей нагрузки. Узнайте, как включить идентификацию рабочей нагрузки на уже существующем кластере AKS.
- Необходимо использовать поддерживаемую версию AKS Kubernetes.
Замечание
Хотя включение надстройки будет регистрировать и развертывать контроллер ALB во всех регионах, подготовка шлюза приложений для контейнеров завершится ошибкой, если он не развернут в регионе, где доступен шлюз приложений для контейнеров.
Новый кластер
Используйте следующие команды для создания нового кластера AKS с Azure CNI, удостоверений рабочей нагрузки, надстройки API шлюза и надстройки Шлюза приложений для контейнеров.
AKS_NAME='<your cluster name>'
RESOURCE_GROUP='<your resource group name>'
LOCATION='northeurope'
VM_SIZE='<the size of the vm in AKS>' # The size needs to be available in your location
az group create --name $RESOURCE_GROUP --location $LOCATION
az aks create \
--resource-group $RESOURCE_GROUP \
--name $AKS_NAME \
--location $LOCATION \
--node-vm-size $VM_SIZE \
--network-plugin azure \
--enable-oidc-issuer \
--enable-workload-identity \
--enable-gateway-api \
--enable-application-load-balancer \
--generate-ssh-key
Замечание
Чтобы предотвратить конфликт с другими службами с помощью API шлюза, надстройка Application Gateawy для контейнеров требует использования надстройки API шлюза AKS.
Существующий кластер
Добавление необходимых компонентов в существующий кластер
Если используется существующий кластер, убедитесь, что вы включили поддержку Workload Identity в кластере AKS. Идентификаторы рабочей нагрузки можно включить с помощью следующих команд:
AKS_NAME='<your cluster name>'
RESOURCE_GROUP='<your resource group name>'
az aks update -g $RESOURCE_GROUP -n $AKS_NAME --enable-oidc-issuer --enable-workload-identity --no-wait
Установите дополнение контроллера ALB
С помощью существующего кластера можно включить API шлюза и надстройки Шлюза приложений для контейнеров с помощью следующих команд:
AKS_NAME='<your cluster name>'
RESOURCE_GROUP='<your resource group name>'
# Update the AKS cluster
az aks update --name ${AKS_NAME} --resource-group ${RESOURCE_GROUP} --enable-gateway-api --enable-application-load-balancer
Проверка установки контроллера балансировки нагрузки
Проверка модулей pod контроллера ALB
Убедитесь, что pod'ы контроллера ALB работают в kube-system пространстве имен.
kubectl get pods -n kube-system | grep alb-controller
Вы должны увидеть два пода alb-controller в состоянии Running:
| ИМЯ | ГОТОВО | STATUS | ПЕРЕЗАПУСКИ | ВОЗРАСТ |
|---|---|---|---|---|
| alb-controller-6648c5d5c-sdd9t | 1/1 | Бег | 0 | 4 дня 6 часов |
| alb-controller-6648c5d5c-au234 | 1/1 | Бег | 0 | 4 дня 6 часов |
Проверка GatewayClass
Убедитесь, что ШлюзКласс azure-alb-external установлен в кластере:
kubectl get gatewayclass azure-alb-external -o yaml
Вы увидите, что класс Gateway имеет условие, которое гласит Допустимый класс Gateway. Это условие указывает, что GatewayClass по умолчанию настроен, и что все ресурсы шлюза, ссылающиеся на этот GatewayClass, управляются контроллером ALB.
apiVersion: gateway.networking.k8s.io/v1beta1
kind: GatewayClass
metadata:
creationTimestamp: "2023-07-31T13:07:00Z"
generation: 1
name: azure-alb-external
resourceVersion: "64270"
uid: 6c1443af-63e6-4b79-952f-6c3af1f1c41e
spec:
controllerName: alb.networking.azure.io/alb-controller
status:
conditions:
- lastTransitionTime: "2023-07-31T13:07:23Z"
message: Valid GatewayClass
observedGeneration: 1
reason: Accepted
status: "True"
type: Accepted
Проверка дополнительных ресурсов в портале Azure
Перейдите к группе ресурсов MC_ для вашего кластера AKS. Вы увидите следующие ресурсы, созданные надстройкой:
Управляемая идентичность
Идентификатор applicationloadbalancer-<cluster-name> создается со следующими назначениями ролей:
| Role | Scope |
|---|---|
| Участник сети | Группа ресурсов MC |
| AppGw для Диспетчера конфигураций контейнеров | Группа ресурсов MC |
| Читатель | Группа ресурсов MC |
Удостоверение applicationloadbalancer-<cluster-name> имеет федеративные учетные данные, настроенные со следующими характеристиками:
- Имя: aksfic
- Пространство имен: kube-system
- Учетная запись службы: alb-controller-sa
Предупреждение
При подготовке интеграции с надстройкой не поддерживается изменение удостоверения или пространства имен. Если вы хотите настроить развертывание, рассмотрите развертывание с помощью Helm.
Подсеть
Если надстройка включена в кластере AKS с помощью параметра виртуальной сети, управляемой AKS, автоматически создается подсеть с именем aks-appgateway с поддержкой делегирования для Microsoft.ServiceNetworking/TrafficController.
Дальнейшие шаги
После успешной установки ALB-контроллера в кластере можно подготовить ресурсы шлюза приложений для контейнеров в Azure.
Следующим шагом является связывание контроллера ALB с Шлюзом приложений для контейнеров. Создание этой ссылки зависит от стратегии развертывания.
Существует две стратегии развертывания для управления Шлюзом приложений для контейнеров:
-
Собственное развертывание (BYO): в этой стратегии развертывания развертывание и жизненный цикл ресурса Шлюза приложений для контейнеров, ресурса ассоциации и ресурса внешнего интерфейса осуществляются через портал Azure, CLI, PowerShell, Terraform и т. д. и указываются в конфигурации в Kubernetes.
- Чтобы использовать развертывание BYO, ознакомьтесь с статьей "Создание шлюза приложений для контейнеров – Bring Your Own Deployment".
-
Управляется контроллером ALB: В этой стратегии развертывания контроллер ALB, развернутый в Kubernetes, отвечает за жизненный цикл ресурса Шлюза приложений для контейнеров и его вложенных ресурсов. Контроллер ALB создает шлюз приложений для контейнеров, когда в кластере определяется настраиваемый ресурс ApplicationLoadBalancer. Жизненный цикл службы основан на жизненном цикле пользовательского ресурса.
- Сведения об использовании управляемого развертывания ALB см. в статье "Создание шлюза приложений для контейнеров", управляемых контроллером ALB.
Примеры сценариев для пробы
Удаление шлюза приложений для контейнеров и контроллера ALB
Если вы хотите удалить надстройку контроллера балансировки нагрузки, выполните следующие действия.
Отключите надстройку контроллера ALB
Отключите дополнение контроллера ALB на кластере:
AKS_NAME='<your cluster name>'
RESOURCE_GROUP='<your resource group name>'
# Update the AKS cluster
az aks update --name ${AKS_NAME} --resource-group ${RESOURCE_GROUP} --disable-gateway-api --disable-application-load-balancer
Удалите группу ресурсов
Чтобы полностью очистить все ресурсы, включая шлюз приложений для контейнеров, удалите группу ресурсов:
az group delete --resource-group $RESOURCE_GROUP