Настройка ALB
ALB устарел. Пожалуйста, используйте вместо него ingress-nginx-operator или envoy-gateway.
Содержание
ALBПредварительные требованияНастройка ALBКонфигурация, связанная с ресурсамиКонфигурация сетиКонфигурация проектаНастройка tweakОперации с 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.
Если вы включите порт-проект и назначите диапазон портов проекту, это означает:
- Вы не сможете создавать порты, не входящие в назначенный проекту диапазон портов.
Настройка tweak
В 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 сначала сопоставляет правила (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 protocol установлен в 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 protocol — HTTPS. Однако вы не можете указывать сертификат для связи с backend-сервисом.
Аннотация сертификата в Ingress
Сертификаты могут ссылаться на секреты из других неймспейсов через аннотацию.
Сертификат в Rule
В .spec.certificate_name формат $secret_namespace/$secret_name
Режим TLS
Edge Mode
В режиме edge клиент общается с ALB по HTTPS, а ALB с backend-сервисами по HTTP. Для этого:
- создайте ft с протоколом https
- создайте rule с backend protocol http и укажите сертификат через
.spec.certificate_name
Re-encrypt Mode
В режиме re-encrypt клиент общается с ALB по HTTPS, а ALB с backend-сервисами по HTTPS. Для этого:
- создайте ft с протоколом https
- создайте rule с backend protocol https и укажите сертификат через
.spec.certificate_name
Ingress
Синхронизация Ingress
Каждый ALB создает IngressClass с тем же именем и обрабатывает ingress в рамках одного проекта.
Если namespace 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— 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.