Настройка 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 для настройки портов слушателя, а для настройки backend-сервиса используйте rule.
Если необходимо добавить HTTPS-порт слушателя, следует также обратиться к администратору для назначения TLS-сертификата текущему проекту для шифрования.
Предварительные требования
Сначала создайте ALB.
Настройка Frontend
-
Метка alb: обязательна, указывает экземпляр ALB, к которому принадлежит этот
Frontend. -
Имя frontend: формат
$alb_name-$port. -
port: порт, на котором слушает.
-
protocol: протокол, используемый этим портом.
- L7 протоколы https|http|grpcs|grpc и L4 протоколы tcp|udp.
- При выборе HTTPS необходимо добавить сертификат; для протокола gRPC добавление сертификата необязательно.
- При выборе протокола gRPC backendProtocol по умолчанию 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 сначала сопоставляет правила на этом 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 для сопоставления сертификата с конкретным портом.
Поддерживается терминaция, а также повторное шифрование, если backend протокол HTTPS. Однако нельзя указывать сертификат для связи с backend-сервисом.
Аннотация сертификата в Ingress
Сертификаты могут ссылаться на секреты в разных пространствах имен через аннотацию.
Сертификат в Rule
В .spec.certificate_name формат $secret_namespace/$secret_name
Режим TLS
Edge Mode
В режиме edge клиент общается с ALB по HTTPS, а ALB общается с backend-сервисами по HTTP. Для этого:
- создайте ft с протоколом https
- создайте rule с backend протоколом http и укажите сертификат через
.spec.certificate_name
Re-encrypt Mode
В режиме re-encrypt клиент общается с ALB по HTTPS, а ALB общается с backend-сервисами по HTTPS. Для этого:
- создайте ft с протоколом https
- создайте rule с backend протоколом https и укажите сертификат через
.spec.certificate_name
Ingress
Синхронизация Ingress
Каждый ALB создает IngressClass с таким же именем и обрабатывает ingress в пределах одного проекта.
Если у ingress namespace есть метка вида 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— 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.