Настройка ALB
ALB устарел. Пожалуйста, используйте вместо него ingress-nginx-operator или envoy-gateway.
Содержание
ALBПредварительные требованияНастройка ALBКонфигурация, связанная с ресурсамиКонфигурация сетиКонфигурация проектаДополнительная настройкаОперации с ALBСозданиеОбновлениеУдалениеFrontendПредварительные требованияНастройка FrontendОперации с FrontendСозданиеПоследующие действияСвязанные операцииRuleПредварительные требованияСопоставление запроса с dslx и приоритетомdslxПриоритетДействияBackendbackend protocolГруппа сервисов и политика сессионной привязкиОперации с RuleЧерез веб-консольЧерез CLIHTTPSАннотация сертификата в IngressСертификат в RuleРежим TLSIngressСинхронизация IngressЛоги и мониторингПросмотр логовМетрики мониторингаALB
ALB — это кастомный ресурс, представляющий балансировщик нагрузки. alb-operator, который по умолчанию встроен во все кластеры, отслеживает операции создания/обновления/удаления ресурсов ALB и создает соответствующие деплойменты и сервисы в ответ.
Для каждого ALB соответствующий Deployment отслеживает все Frontends и Rules, прикрепленные к этому ALB, и маршрутизирует запросы к бэкендам на основе этих конфигураций.
Предварительные требования
Высокая доступность Load Balancer требует VIP. Пожалуйста, обратитесь к разделу Настройка VIP.
Настройка ALB
Конфигурация ALB состоит из трех частей.
Конфигурация, связанная с ресурсами
Поля, связанные с ресурсами, описывают конфигурацию деплоймента для alb.
Конфигурация сети
Поля сети описывают, как получить доступ к ALB. Например, в режиме host alb использует hostnetwork, и вы можете получить доступ к ALB по IP узла.
Конфигурация проекта
Добавление ALB в проект означает:
- В веб-интерфейсе только пользователи данного проекта могут найти и настроить этот ALB.
- Этот ALB будет обрабатывать ingress ресурсы, принадлежащие этому проекту. Пожалуйста, обратитесь к разделу ingress-sync.
- В веб-интерфейсе правила, созданные в проекте X, не будут видны и не могут быть настроены в проекте Y.
Если вы включите портовый проект и назначите диапазон портов проекту, это означает:
- Вы не сможете создавать порты, не принадлежащие диапазону портов, назначенному проекту.
Дополнительная настройка
Существуют некоторые глобальные настройки, которые можно изменить в alb cr.
Операции с ALB
Создание
Через веб-консоль
Некоторые общие настройки доступны в веб-интерфейсе. Следуйте этим шагам для создания балансировщика нагрузки:
- Перейдите в раздел Administrator.
- В левой боковой панели нажмите Network Management > Load Balancer.
- Нажмите Create Load Balancer.
Каждое поле ввода в веб-интерфейсе соответствует полю CR:
Через CLI
Обновление
Через веб-консоль
Обновление балансировщика нагрузки приведет к прерыванию сервиса на 3-5 минут. Пожалуйста, выберите подходящее время для этой операции!
-
Войдите в Administrator.
-
В левой навигационной панели нажмите Network Management > Load Balancer.
-
Нажмите ⋮ > Update.
-
Обновите конфигурацию сети и ресурсов по необходимости.
-
Пожалуйста, разумно задавайте спецификации в соответствии с бизнес-требованиями. Также можно обратиться к соответствующему руководству Как правильно выделять CPU и память.
-
Внутренний роутинг поддерживает только обновление из состояния Disabled в состояние Enabled.
-
-
Нажмите Update.
Удаление
Через веб-консоль
После удаления балансировщика нагрузки связанные порты и правила также будут удалены и не подлежат восстановлению.
-
Войдите в Administrator.
-
В левой навигационной панели нажмите Network Management > Load Balancer.
-
Нажмите ⋮ > Delete и подтвердите.
Через CLI
Frontend
Frontend — это кастомный ресурс, который определяет порт слушателя и протокол для ALB. Поддерживаемые протоколы: L7 (http|https|grpc|grpcs) и L4 (tcp|udp).
- В L4 Proxy используйте frontend для прямой настройки backend-сервиса.
- В L7 Proxy используйте frontend для настройки портов слушателя и rule для настройки backend-сервиса.
Если необходимо добавить HTTPS-порт слушателя, следует также обратиться к администратору для назначения TLS-сертификата текущему проекту для шифрования.
Предварительные требования
Сначала создайте ALB.
Настройка Frontend
-
Метка alb: обязательна, указывает экземпляр ALB, к которому принадлежит этот
Frontend. -
Имя frontend: формат
$alb_name-$port. -
port: порт, на котором слушает.
-
protocol: протокол, используемый этим портом.
- L7 протоколы https|http|grpcs|grpc и L4 протоколы tcp|udp.
- При выборе HTTPS необходимо добавить сертификат; добавление сертификата для протокола gRPC необязательно.
- При выборе протокола gRPC протокол бэкенда по умолчанию gRPC, который не поддерживает сессионную привязку. Если для gRPC протокола установлен сертификат, балансировщик нагрузки снимет сертификат gRPC и перенаправит незашифрованный трафик gRPC на backend-сервис.
- При использовании кластера Google GKE балансировщик нагрузки с одинаковым типом контейнерной сети не может одновременно иметь протоколы слушателя TCP и UDP.
-
certificate_name: для протоколов grpcs и https, используемый сертификат по умолчанию, формат
$secret_ns/$secret_name. -
backendProtocol: протокол, используемый backend-сервисом.
-
По умолчанию
serviceGroup:- L4 proxy: обязательно. ALB напрямую перенаправляет трафик в группу сервисов по умолчанию.
- L7 proxy: необязательно. ALB сначала сопоставляет правила (Rules) на этом Frontend; если совпадений нет, используется группа сервисов по умолчанию.
Операции с Frontend
Создание
Через веб-консоль

-
Перейдите в Container Platform.
-
В левой навигационной панели нажмите Network > Load Balancing.
-
Нажмите на имя балансировщика нагрузки, чтобы перейти на страницу деталей.
-
Нажмите Add Port.
Каждое поле ввода в веб-интерфейсе соответствует полю CR
Через CLI
Последующие действия
Для трафика с портов HTTP, gRPC и HTTPS, помимо группы внутреннего роутинга по умолчанию, вы можете задать более разнообразные правила сопоставления backend-сервисов rules. Балансировщик нагрузки сначала сопоставит соответствующий backend-сервис согласно заданным правилам; если совпадение не найдено, он перейдет к backend-сервисам, соответствующим вышеупомянутой группе внутреннего роутинга.
Связанные операции
Вы можете нажать на значок ⋮ справа на странице списка или нажать Actions в правом верхнем углу страницы деталей, чтобы при необходимости обновить маршрут по умолчанию или удалить порт слушателя.
Если метод выделения ресурсов балансировщика нагрузки — Port, удалять связанные порты слушателей могут только администраторы в режиме Administrator.
Rule
Rule — это кастомный ресурс (CR), который определяет, как входящие запросы сопоставляются и обрабатываются ALB.
Ingress, обрабатываемые ALB, могут быть автоматически преобразованы в правила.
Предварительные требования
Ниже приведен демонстрационный rule для быстрого ознакомления с использованием правил.
rule должен быть прикреплен к frontend и alb через метки.
- Обязательно, указывает
Frontend, к которому принадлежит это правило. - Обязательно, указывает ALB, к которому принадлежит это правило.
- backendProtocol
- certificate_name
- dslx
- Чем меньше число, тем выше приоритет.
- serviceGroup
Сопоставление запроса с dslx и приоритетом
dslx
DSLX — это предметно-ориентированный язык, используемый для описания критериев сопоставления. Например, приведенное ниже правило сопоставляет запрос, который удовлетворяет всем следующим условиям:
- url начинается с /app-a или /app-b
- метод — post
- параметр url с ключом group равен vip
- host заканчивается на *.app.com
- заголовок LOCATION равен east-1 или east-2
- есть cookie с именем uid
- исходные IP находятся в диапазоне 1.1.1.1-1.1.1.100
Приоритет
Приоритет — это целое число от 0 до 10, где меньшие значения означают более высокий приоритет. Для настройки приоритета правила в ingress можно использовать следующий формат аннотации:
Для правил достаточно задать приоритет напрямую в .spec.priority целочисленным значением.
Действия
После того как запрос совпал с правилом, к запросу можно применить следующие действия
Backend
backend protocol
По умолчанию протокол backend установлен в HTTP. Если вы хотите использовать TLS повторное шифрование, можно настроить HTTPS.
Группа сервисов и политика сессионной привязки
В правиле можно настроить один или несколько сервисов.
По умолчанию ALB использует алгоритм round-robin (RR) для распределения запросов между backend-сервисами. Однако вы можете назначать веса отдельным сервисам или выбрать другой алгоритм балансировки нагрузки.
Подробнее смотрите в разделе Балансировка нагрузки.
Операции с Rule
Через веб-консоль

- Перейдите в Container Platform.
- В левой навигационной панели нажмите Network > Load Balancing.
- Нажмите на имя балансировщика нагрузки.
- Выберите имя порта слушателя.
- Нажмите Add Rule.
- Настройте соответствующие параметры согласно описаниям ниже.
- Нажмите Add.
Каждое поле ввода в веб-интерфейсе соответствует полю CR
Через CLI
HTTPS
Если протокол frontend (ft) — HTTPS или GRPCS, правило также может быть настроено для использования HTTPS.
Вы можете указать сертификат либо в правиле, либо в ingress, чтобы сопоставить сертификат для конкретного порта.
Поддерживается termination, а также повторное шифрование, если backend-протокол HTTPS. Однако вы не можете указывать сертификат для связи с backend-сервисом.
Аннотация сертификата в Ingress
Сертификаты могут ссылаться на ресурсы в других пространствах имен через аннотацию.
Сертификат в Rule
В .spec.certificate_name формат: $secret_namespace/$secret_name
Режим TLS
Edge Mode
В режиме edge клиент общается с ALB по HTTPS, а ALB общается с backend-сервисами по HTTP. Для этого:
- создайте frontend с протоколом https
- создайте rule с backend-протоколом http и укажите сертификат через
.spec.certificate_name
Re-encrypt Mode
В режиме re-encrypt клиент общается с ALB по HTTPS, а ALB общается с backend-сервисами по HTTPS. Для этого:
- создайте frontend с протоколом https
- создайте rule с backend-протоколом https и укажите сертификат через
.spec.certificate_name
Ingress
Синхронизация Ingress
Каждый ALB создает IngressClass с таким же именем и обрабатывает ingress в рамках одного проекта.
Если в пространстве имен ingress есть метка cpaas.io/project: demo, это означает, что ingress принадлежит проекту demo.
ALB, у которых в конфигурации .spec.config.projects указан проект demo, автоматически преобразуют эти ingress в правила.
ALB слушает ingress и автоматически создает Frontend или Rule. Поле source определяется следующим образом:
spec.source.typeв настоящее время поддерживает толькоingress.spec.source.name— имя ingress.spec.source.namespace— пространство имен ingress.
SSL стратегия
Для ingress без настроенных сертификатов ALB предоставляет стратегию использования сертификата по умолчанию.
Вы можете настроить кастомный ресурс ALB следующими параметрами:
.spec.config.defaultSSLStrategy: определяет SSL стратегию для ingress без сертификатов.spec.config.defaultSSLCert: задает сертификат по умолчанию в формате$secret_ns/$secret_name
Доступные SSL стратегии:
- Never: не создавать правила на HTTPS портах (поведение по умолчанию)
- Always: создавать правила на HTTPS портах с использованием сертификата по умолчанию
Логи и мониторинг
Комбинируя логи и данные мониторинга, вы можете быстро выявлять и устранять проблемы с балансировщиком нагрузки.
Просмотр логов
-
Перейдите в Administrator.
-
В левой навигационной панели нажмите Network Management > Load Balancer.
-
Нажмите на Имя балансировщика нагрузки.
-
Во вкладке Logs просмотрите логи работы балансировщика нагрузки с точки зрения контейнера.
Метрики мониторинга
В кластере, где расположен балансировщик нагрузки, должны быть развернуты сервисы мониторинга.
-
Перейдите в Administrator.
-
В левой навигационной панели нажмите Network Management > Load Balancer.
-
Нажмите на Имя балансировщика нагрузки.
-
Во вкладке Monitoring просмотрите тенденции метрик балансировщика нагрузки с точки зрения узла.
-
Usage Rate: текущая загрузка CPU и памяти балансировщика нагрузки на данном узле.
-
Throughput: общий входящий и исходящий трафик экземпляра балансировщика нагрузки.
-
Для более подробной информации о метриках мониторинга смотрите ALB Monitoring.