Правило — это Custom Resource (CR), который определяет, как входящие запросы сопоставляются и обрабатываются ALB.
Ingress, обрабатываемые ALB, могут быть автоматически преобразованы в правила.
Ниже приведено демонстрационное правило, чтобы вы могли быстро получить представление о том, как использовать правила.
правило должно быть привязано к frontend и alb через метки.
Frontend
, к которому принадлежит это правило.DSLX — это предметно-ориентированный язык, используемый для описания критериев сопоставления. Например, правило ниже сопоставляет запрос, который удовлетворяет всем следующим условиям:
Приоритет — это целое число от 0 до 10, где меньшие значения означают более высокий приоритет. Чтобы настроить приоритет правила в ingress, можно использовать следующий формат аннотации:
Для правил достаточно задать приоритет напрямую в .spec.priority
целочисленным значением.
После того, как запрос сопоставлен с правилом, к запросу можно применить следующие действия
Функция | Описание | Ссылка |
---|---|---|
Timeout | Настройка параметров таймаута для запросов. | timeout |
Redirect | Перенаправление входящих запросов на указанный URL. | redirect |
CORS | Включение Cross-Origin Resource Sharing (CORS) для приложения. | cors |
Header Modification | Позволяет изменять заголовки запроса или ответа. | header modification |
URL Rewrite | Перезаписывает URL входящих запросов перед их пересылкой. | url-rewrite |
WAF | Интеграция Web Application Firewall (WAF) для повышения безопасности. | waf |
OTEL | Включение OpenTelemetry (OTEL) для распределённого трассирования и мониторинга. | otel |
Keepalive | Включение или отключение функции keepalive для приложения. | keepalive |
По умолчанию протокол backend установлен в HTTP. Если требуется использовать TLS повторное шифрование, можно настроить HTTPS.
В правиле можно настроить один или несколько сервисов.
По умолчанию ALB использует алгоритм round-robin (RR) для распределения запросов между backend-сервисами. Однако можно назначать веса отдельным сервисам или выбрать другой алгоритм балансировки нагрузки.
Подробнее смотрите в разделе Balance Algorithm.
Каждое поле в веб-интерфейсе соответствует полю CR.
Если протокол frontend (ft) — HTTPS или GRPCS, правило также может быть настроено на использование HTTPS. Сертификат можно указать либо в правиле, либо в ingress, чтобы сопоставить сертификат для конкретного порта.
Поддерживается termination, а также повторное шифрование, если протокол backend — HTTPS. Однако вы не можете указывать сертификат для связи с backend-сервисом.
Сертификаты могут ссылаться на секреты из других namespace через аннотацию.
В .spec.certificate_name
формат: $secret_namespace/$secret_name
В режиме edge клиент общается с ALB по HTTPS, а ALB общается с backend-сервисами по HTTP. Для этого:
.spec.certificate_name
В режиме re-encrypt клиент общается с ALB по HTTPS, а ALB общается с backend-сервисами по HTTPS. Для этого:
.spec.certificate_name
Каждый 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.Для ingress без настроенных сертификатов ALB предоставляет стратегию использования сертификата по умолчанию.
Вы можете настроить Custom Resource ALB следующими параметрами:
.spec.config.defaultSSLStrategy
: определяет SSL-стратегию для ingress без сертификатов.spec.config.defaultSSLCert
: задаёт сертификат по умолчанию в формате $secret_ns/$secret_name
Доступные SSL-стратегии: