Настройка правил ALB
Содержание
ВведениеЧто такое правило?Предварительные требованияБыстрая демонстрация правиласопоставление запроса с dslx и приоритетомdslxприоритетДействияBackendпротокол backendГруппа сервисов и политика сессионной аффинностиСоздание правилаИспользование веб-консолиИспользование CLIHTTPSАннотация сертификата в IngressСертификат в правилеРежим TLSEdge ModeRe-encrypt ModeIngressсинхронизация ingressстратегия sslВведение
Что такое правило?
Правило — это Custom Resource (CR), который определяет, как входящие запросы сопоставляются и обрабатываются ALB.
Ingress, обрабатываемые ALB, могут быть автоматически преобразованы в правила.
Предварительные требования
Быстрая демонстрация правила
Ниже приведено демонстрационное правило, чтобы вы могли быстро получить представление о том, как использовать правила.
правило должно быть привязано к 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
По умолчанию протокол backend установлен в HTTP. Если требуется использовать TLS повторное шифрование, можно настроить HTTPS.
Группа сервисов и политика сессионной аффинности
В правиле можно настроить один или несколько сервисов.
По умолчанию ALB использует алгоритм round-robin (RR) для распределения запросов между backend-сервисами. Однако можно назначать веса отдельным сервисам или выбрать другой алгоритм балансировки нагрузки.
Подробнее смотрите в разделе Balance Algorithm.
Создание правила
Использование веб-консоли

- Перейдите в Container Platform.
- В левой навигационной панели выберите Network > Load Balancing.
- Кликните по имени балансировщика нагрузки.
- Кликните по имени порта слушателя.
- Нажмите Add Rule.
- Используйте описания ниже для настройки соответствующих параметров.
- Нажмите Add.
Каждое поле в веб-интерфейсе соответствует полю CR.
Использование CLI
HTTPS
Если протокол frontend (ft) — HTTPS или GRPCS, правило также может быть настроено на использование HTTPS. Сертификат можно указать либо в правиле, либо в ingress, чтобы сопоставить сертификат для конкретного порта.
Поддерживается termination, а также повторное шифрование, если протокол backend — HTTPS. Однако вы не можете указывать сертификат для связи с backend-сервисом.
Аннотация сертификата в Ingress
Сертификаты могут ссылаться на секреты из других namespace через аннотацию.
Сертификат в правиле
В .spec.certificate_name формат: $secret_namespace/$secret_name
Режим TLS
Edge Mode
В режиме edge клиент общается с ALB по HTTPS, а ALB общается с backend-сервисами по HTTP. Для этого:
- создайте ft с протоколом https
- создайте правило с backendProtocol http и укажите сертификат через
.spec.certificate_name
Re-encrypt Mode
В режиме re-encrypt клиент общается с ALB по HTTPS, а ALB общается с backend-сервисами по HTTPS. Для этого:
- создайте ft с протоколом https
- создайте правило с backendProtocol 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 предоставляет стратегию использования сертификата по умолчанию.
Вы можете настроить Custom Resource ALB следующими параметрами:
.spec.config.defaultSSLStrategy: определяет SSL-стратегию для ingress без сертификатов.spec.config.defaultSSLCert: задаёт сертификат по умолчанию в формате$secret_ns/$secret_name
Доступные SSL-стратегии:
- Never: не создавать правила на HTTPS-портах (поведение по умолчанию)
- Always: создавать правила на HTTPS-портах с использованием сертификата по умолчанию