Поделиться через


Настройка шлюза статического исходящего трафика в Служба Azure Kubernetes (AKS)

Статический шлюз исходящего трафика в AKS предоставляет упрощенное решение для настройки фиксированных исходных IP-адресов для исходящего трафика из рабочих нагрузок AKS. Эта функция позволяет маршрутизировать исходящий трафик через выделенный пул узлов шлюза. Используя шлюз статического исходящего трафика, вы можете эффективно управлять исходящими IP-адресами и управлять ими и обеспечить безопасное и согласованное взаимодействие рабочих нагрузок AKS с внешними системами с помощью предопределенных IP-адресов.

В этой статье приведены пошаговые инструкции по настройке пула узлов шлюза статического исходящего трафика в кластере AKS, что позволяет настроить фиксированные ИСХОДНЫе IP-адреса для исходящего трафика из рабочих нагрузок Kubernetes.

Рекомендации и ограничения

  • Статический шлюз исходящего трафика не поддерживается в кластерах с подсетью Pod Azure CNI.

  • Политики сети Kubernetes не применяются к трафику, выходя из кластера через пул узлов шлюза.

    • Это не должно повлиять на управление трафиком кластера, так как затрагиваются только исходящий трафик из аннотированных модулей pod, перенаправленных в пул узлов шлюза.
  • Пул узлов шлюза не предназначен для рабочих нагрузок общего назначения и должен использоваться только для исходящего трафика.

  • Пулы узлов Windows нельзя использовать в качестве пулов узлов шлюза.

  • Модули pod hostNetwork не могут быть аннотированы для использования пула узлов шлюза.

  • Pod могут использовать пул узлов шлюза только если находятся в том же пространстве имен, что и ресурс StaticGatewayConfiguration.

Создание или обновление кластера AKS с помощью статического шлюза исходящего трафика

Прежде чем создавать пулы узлов шлюза и управлять ими, необходимо включить функцию шлюза статического исходящего трафика для кластера AKS. Это можно сделать при создании нового кластера или обновлении существующего кластера с помощью az aks update.

az aks create -n <cluster-name> -g <resource-group> --enable-static-egress-gateway

Создание пула узлов шлюза

После включения функции создайте пул узлов выделенного шлюза. Этот пул узлов обрабатывает исходящий трафик через указанный префикс общедоступного IP-адреса. Размер --gateway-prefix-size префикса общедоступного IP-адреса, применяемого к узлам пула узлов шлюза. Допустимый диапазон — 28-31.

az aks nodepool add --cluster-name <cluster-name> \
    --name <nodepool-name> \
    --resource-group <resource-group> \
    --mode gateway \
    --node-count <number-of-nodes> \
    --gateway-prefix-size <prefix-size>

Примечание.

  • Количество узлов должно соответствовать емкости, разрешенной выбранным размером префикса. Например, префикс /30 поддерживает до 4 узлов, а для обеспечения высокой доступности требуется не менее 2 узлов. Так как число узлов невозможно настроить динамически, запланируйте узлы в соответствии с фиксированным ограничением, заданным размером префикса.
  • Вы можете определить номер SKU виртуальной машины для использования в пуле узлов шлюза с параметром --vm-size . Вы должны понимать свои конкретные потребности и планировать соответствующим образом, чтобы обеспечить правильную производительность и баланс затрат.

Масштабирование пула узлов шлюза (необязательно)

При необходимости можно изменить размер пула узлов шлюза в пределах ограничений, определенных размером префикса, но он не поддерживает автомасштабирование.

az aks nodepool scale --cluster-name <cluster-name> -n <nodepool-name> --node-count <desired-node-count>

Создание конфигурации статического шлюза

Определите конфигурацию шлюза StaticGatewayConfiguration , создав пользовательский ресурс. Эта конфигурация указывает, какой пул узлов и префикс общедоступного IP-адреса следует использовать.

apiVersion: egressgateway.kubernetes.azure.com/v1alpha1
kind: StaticGatewayConfiguration
metadata:
  name: <gateway-config-name>
  namespace: <namespace>
spec:
  gatewayNodepoolName: <nodepool-name>
  excludeCidrs:  # Optional
  - 10.0.0.0/8
  - 172.16.0.0/12
  - 169.254.169.254/32
  publicIpPrefixId: /subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.Network/publicIPPrefixes/<prefix-name> # Optional

Совет

Если не задано publicIpPrefixId, для вас автоматически будет создан префикс общедоступного IP-адреса. При выполнении kubectl describe StaticGatewayConfiguration <gateway-config-name> -n <namespace>вы увидите значение "Префикс исходящего ip-адреса" в состоянии. Это только что созданный префикс общедоступного IP-адреса. Можно также использовать существующий префикс общедоступного IP-адреса, указав его идентификатор ресурса в аргументе publicIpPrefixId . В этом случае необходимо предоставить роль "Участник сети" удостоверению кластера AKS.

Поддержка статических частных IP-адресов (предварительная версия)

Это важно

Для поддержки статических частных IP-адресов требуются кластеры под управлением Kubernetes версии 1.34 или более поздней версии, а также подписка с включенным флагом Microsoft.ContainerService/StaticEgressGatewayPreview управления экспозицией компонентов Azure (AFEC). Следуйте инструкциям по предварительной версии функции регистрации , чтобы запросить флаг компонента перед созданием пула узлов Gateway VirtualMachines.

Если необходимо сохранить исходящий трафик на частных адресах, включите поддержку частных IP-адресов в пуле узлов шлюза. Используйте ту же az aks nodepool add команду и настройте пул узлов на использование типа набора VirtualMachines VM, отключив при этом создание общедоступных IP-адресов:

az aks nodepool add --cluster-name <cluster-name> \
  --name <nodepool-name> \
  --resource-group <resource-group> \
  --mode gateway \
  --node-count <number-of-nodes> \
  --vm-set-type VirtualMachines \
  --gateway-prefix-size <prefix-size>

В этой конфигурации параметр provisionPublicIps=false сохраняет частные IP-адреса, которые выделены для узлов шлюза, на всё время существования StaticGatewayConfiguration. При запуске kubectl describe StaticGatewayConfiguration <gateway-config-name> -n <namespace>egressIpPrefix в поле отображается разделенный запятыми список статических частных IP-адресов. Вы продолжаете использовать те же API и манифесты для остальной части рабочего процесса, включая ресурс StaticGatewayConfiguration и аннотации pod.

Аномирование модулей pod для использования конфигурации шлюза

Чтобы маршрутизировать трафик из определенных модулей pod через пул узлов шлюза, заметите шаблон pod в конфигурации развертывания.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: <deployment-name>
  namespace: <namespace>
spec:
  template:
    metadata:
      annotations:
        kubernetes.azure.com/static-gateway-configuration: <gateway-config-name>

Примечание.

Подключаемый модуль CNI на каждом узле автоматически настраивает pod для маршрутизации трафика через выбранный узел шлюза.

Мониторинг конфигураций шлюза и управление ими

После развертывания можно отслеживать состояние конфигураций шлюза через кластер AKS. Раздел состояния в StaticGatewayConfiguration ресурсе обновляется с такими сведениями, как назначенные IP-адреса и конфигурации WireGuard.

Удаление пула узлов шлюза (необязательно)

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

az aks nodepool delete --cluster-name <cluster-name> -n <nodepool-name>

Отключение функции шлюза статического исходящего трафика (необязательно)

Если вам больше не нужен шлюз статического исходящего трафика, можно отключить эту функцию и удалить оператор. Сначала убедитесь, что все пулы узлов шлюза удаляются.

az aks update -n <cluster-name> -g <resource-group> --disable-static-egress-gateway

Следуя этим инструкциям, вы можете эффективно настроить конфигурации шлюза статического исходящего трафика и управлять ими в кластере AKS, что позволяет управлять управляемым и согласованным исходящим трафиком из рабочих нагрузок.

Дальнейшие шаги