Настройка политики GatewayAPI
Содержание
ОбзорТребованияОсновы прикрепления политикиСводка прикрепления политикиСоздание политик в Web ConsoleSecurityPolicyНастройка через Web ConsoleАутентификация по API KeyКонфигурация CORSНастройка через YAMLСправкаВозможностиКак это работаетПримечанияОфициальная документацияBackendTLSPolicyНастройка через Web ConsoleНастройка через YAMLСправкаВозможностиПримечанияОфициальная документацияClientTrafficPolicyНастройка через Web ConsoleНастройка через YAMLСправкаВозможностиПримечанияОфициальная документацияBackendTrafficPolicyНастройка через Web ConsoleНастройка через YAMLСправкаВозможностиПримечанияОфициальная документацияСвязанные задачиОбзор
В этом документе объясняется, как настроить ресурсы политики после того, как ресурсы Gateway и Route готовы. Политики используют
паттерн прикрепления политики через .spec.targetRefs для добавления дополнительного поведения трафика, безопасности и бэкенда
к поддерживаемым ресурсам.
В рекомендуемом рабочем процессе этот документ следует после Настройка маршрута GatewayAPI.
Envoy Gateway в настоящее время предоставляет четыре типа политик: SecurityPolicy, BackendTLSPolicy, ClientTrafficPolicy и
BackendTrafficPolicy.
Требования
Пожалуйста, убедитесь, что вы выполнили следующие шаги перед продолжением:
- Ознакомились с Настройкой GatewayAPI Gateway и Настройкой маршрута GatewayAPI
- Создали целевой ресурс, к которому будет прикреплена политика, например
Gateway,RouteилиService
Основы прикрепления политики
Политики прикрепляются к другим ресурсам через .spec.targetRefs.
По умолчанию политика может быть прикреплена только к ресурсам в том же namespace.
Для целей Gateway можно использовать sectionName для указания конкретного слушателя, если тип политики это поддерживает. Для целей Service sectionName относится к имени порта Service.
Сводка прикрепления политики
sectionName используется для указания конкретного слушателя на Gateway или конкретного порта на Service. Если опущено или установлено в ALL, политика применяется ко всем слушателям или портам.
Создание политик в Web Console
Все типы политик создаются из одного пункта:
- Перейдите в
Alauda Container Platform -> Networking -> Gateway -> Policies - Выберите нужное значение в выпадающем списке
Policy Type - Нажмите кнопку
Create Policy
В следующих разделах рассматриваются только поля, специфичные для каждого типа политики.
SecurityPolicy
Настройка через Web Console
Общие поля (общие для всех политик):
Специфичные поля SecurityPolicy:
Аутентификация по API Key
Конфигурация CORS
Настройка через YAML
Справка
SecurityPolicy используется для настройки аутентификации, авторизации и других функций безопасности для вашего Gateway и маршрутов. Она предоставляет декларативный способ защиты сервисов путём проверки входящих запросов до того, как они достигнут ваших бэкенд-приложений.
Возможности
- Аутентификация: Проверка идентичности клиентов с помощью различных методов (API Key, JWT, OIDC, Basic Auth)
- Авторизация: Контроль доступа к ресурсам на основе проверенных учётных данных
- Конфигурация CORS: Управление политиками Cross-Origin Resource Sharing
Как это работает
- Создайте SecurityPolicy с нужными правилами аутентификации/авторизации
- Прикрепите её к конкретному Gateway, HTTPRoute или GRPCRoute
- Envoy Gateway проверяет входящие запросы согласно политике
- Валидные запросы перенаправляются к бэкенд-сервисам; невалидные отклоняются с соответствующими HTTP статусами
Примечания
- В веб-консоли в настоящее время поддерживается настройка API Key Authentication и CORS. Для других методов аутентификации и расширенных функций безопасности необходимо использовать YAML-конфигурацию.
- Каждый маршрут может быть связан только с одной SecurityPolicy.
- Если SecurityPolicy ссылается на секрет без значений, все запросы к прикреплённому маршруту будут отклонены с кодом
401 Unauthorized. - В веб-консоли по умолчанию поле
Extract Fromустановлено вheader, а полеHeader Name— вauthorization. - Вы можете просмотреть, какие политики прикреплены к маршруту, перейдя на вкладку топологии маршрута в веб-консоли.
Официальная документация
BackendTLSPolicy
Настройка через Web Console
Общие поля:
Специфичные поля BackendTLSPolicy:
Конфигурация CACertificateRefs:
При создании или выборе секрета с CA-сертификатом:
- Тип секрета должен подходить для CA-сертификатов
- Ключ должен быть
ca.crt - Можно импортировать файл сертификата, который должен начинаться с
-----BEGIN CERTIFICATE-----и заканчиваться-----END CERTIFICATE----- - При импорте некорректного формата сертификата будет показано сообщение об ошибке "must contain PEM-encoded TLS certificates"
- При выборе существующего секрета без ключа
ca.crtбудет показано сообщение об ошибке "must have ca.crt key"
Настройка через YAML
Справка
BackendTLSPolicy управляет настройками TLS между Envoy Gateway и бэкенд-сервисами. Она позволяет настроить:
- SNI (Server Name Indication): имя хоста, используемое при установлении TLS-соединений с бэкендами
- Валидация сертификатов: способ проверки сертификатов серверов бэкенда
- CA-сертификаты: пользовательские CA-сертификаты для проверки сертификатов бэкенда
Возможности
- Настройка TLS для соединений с бэкенд-сервисами
- Поддержка пользовательских CA-сертификатов или системных известных CA-сертификатов
- Конфигурация SNI для корректного TLS-рукопожатия
Примечания
sectionNameвtargetRefsсоответствует имени порта Service.- При использовании
WellKnownCACertificatesдля валидации используются системные CA-сертификаты по умолчанию. - Поле hostname обязательно и используется как значение SNI при подключении Envoy к бэкенду.
Официальная документация
ClientTrafficPolicy
Настройка через Web Console
Общие поля:
Настройка таймаутов (опции):
Настройка через YAML
Справка
ClientTrafficPolicy управляет поведением соединений от клиентов к Envoy Gateway. Она предоставляет тонкую настройку:
- Настройки TCP: таймауты и параметры keepalive на уровне соединения
- Настройки HTTP: таймауты запросов/ответов и поведение HTTP-протокола
Возможности
- Настройка таймаутов простоя TCP-соединений
- Контроль таймаутов получения HTTP-запросов
- Установка таймаутов простоя HTTP-соединений
- Настройка таймаутов простоя HTTP-потоков
Примечания
- Значения таймаутов задаются в виде строк с длительностью (например, "30s", "5m", "1h").
Официальная документация
BackendTrafficPolicy
Настройка через Web Console
Общие поля:
Настройка таймаутов (опции):
Настройка через YAML
Справка
BackendTrafficPolicy управляет поведением соединений от Envoy Gateway к бэкенд-сервисам. Она предоставляет тонкую настройку:
- Настройки TCP: таймауты установления соединений
- Настройки HTTP: длительности соединений, таймауты простоя и таймауты запросов
Возможности
- Настройка таймаутов установления TCP-соединений
- Контроль таймаутов простоя HTTP-соединений
- Установка максимальной длительности HTTP-соединений
- Настройка таймаутов HTTP-запросов
Примечания
- Значения таймаутов задаются в виде строк с длительностью (например, "30s", "5m", "1h").
- Поле
requestTimeoutподдерживает установку значения "unlimited" для отключения таймаута.
Официальная документация
Связанные задачи
После прикрепления политик продолжайте с Задачами для Envoy Gateway для получения дополнительных примеров эксплуатации и задач по расширенной настройке.