Настройка правил 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 re-encryption, можно настроить 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, а также re-encryption, если протокол 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-портах с использованием сертификата по умолчанию