Настройка маршрута GatewayAPI
Содержание
ОбзорПредварительные требованияКонфигурацияКонфигурация через Web ConsoleСоздание HTTPRouteСоздание TCP/UDP RouteСоздание GRPCRouteСоздание TLSRouteКонфигурация через YAMLСправочник по полям маршрутаPublish to ListenerBackendHostnamesRulesСправочник HTTPRouteСправочник совпадений и фильтров GRPCRouteСправочник TLSRouteПросмотрТопологияСледующий шагСвязанные задачиОбзор
В этом документе объясняется, как настроить ресурсы Route после того, как Gateway готов. Route прикрепляется к одному или нескольким слушателям gateway и определяет, как совпадающий трафик перенаправляется на backend-сервисы.
В рекомендуемом рабочем процессе этот документ следует после Настройка GatewayAPI Gateway и перед Настройка GatewayAPI Policy.
Помимо операций создания и обновления, в этом документе также представлены дополнительные возможности просмотра маршрутов, предоставляемые ACP Web Console.
Предварительные требования
Пожалуйста, убедитесь, что вы выполнили следующие шаги перед продолжением:
- Ознакомились с Настройка GatewayAPI Gateway для понимания слушателей, правил прикрепления и
EnvoyProxy - Создали
Gateway, к которому будет прикреплен вашRoute
В этом документе сначала отдельно представлены каждый тип маршрута, затем приведены примеры YAML, и, наконец, объяснены общие концепции маршрутов в общей справочной секции.
Конфигурация
Route прикрепляется к одному или нескольким слушателям на Gateway. Выбор слушателя зависит от типа маршрута, протокола слушателя и настроек разрешённых пространств имён маршрутов слушателя.
Конфигурация через Web Console
- Перейдите в
Alauda Container Platform -> Networking -> Gateway -> Routes - Нажмите кнопку
Create Route - Выберите тип маршрута (HTTPRoute, TCPRoute, UDPRoute, GRPCRoute или TLSRoute)
Создание HTTPRoute
Конфигурация опций
Поле Options позволяет настроить расширенные параметры управления трафиком:
Создание TCP/UDP Route
Создание GRPCRoute
Создание TLSRoute
Конфигурация через YAML
Следующий минимальный пример создаёт HTTPRoute, который прикрепляется к слушателю https в Gateway с именем demo и перенаправляет совпадающий трафик на backend Service.
Если вам нужны другие типы маршрутов и расширенные опции HTTPRoute, используйте следующий полный пример:
Справочник по полям маршрута
Каждый маршрут — это CR, определённый спецификацией GatewayAPI. Для подробной информации о полях и параметрах конфигурации каждого типа маршрута, пожалуйста, обратитесь к официальной документации:
- Спецификация HTTPRoute
- Спецификация TCPRoute
- Спецификация UDPRoute
- Спецификация GRPCRoute
- Спецификация TLSRoute
Publish to Listener
В Web Console
В веб-консоли вы можете выбрать несколько слушателей для публикации маршрута. Доступные кандидаты на слушателей фильтруются по следующим критериям:
- Права пользователя: у вас должен быть доступ к пространству имён gateway (проект должен включать это пространство имён).
- Белый список пространств имён маршрутов: разрешённые пространства имён маршрутов слушателя gateway должны включать пространство имён маршрута.
- Совпадение типа маршрута: тип маршрута (HTTPRoute, GRPCRoute и т.д.) должен соответствовать разрешённым типам маршрутов слушателя.
Для более сложных сценариев с кросс-пространствами имён смотрите прикрепление к gateway, созданному в другом пространстве имён.
В YAML
sectionName— это имя слушателя.- Маршруты могут быть прикреплены только к слушателям, поддерживающим их конкретный тип.
- По умолчанию маршруты могут быть прикреплены только к слушателям, где
Gatewayнаходится в том же пространстве имён.
Для прикрепления к gateway в другом пространстве имён смотрите прикрепление к gateway, созданному в другом пространстве имён.
Backend
Определяет целевой сервис(ы), куда должны перенаправляться совпадающие запросы.
Каждый сервис может иметь поле weight для указания доли трафика, направляемого на этот сервис.
Hostnames
Поле hostnames поддерживается HTTPRoute, GRPCRoute и TLSRoute. TCPRoute и UDPRoute это поле не используют.
hostnames — массив строк. Он следует правилам пересечения hostnames.
Rules
Каждый маршрут может содержать несколько правил. Каждое правило состоит из следующих компонентов:
Matches
Определяет условия, которые должны быть выполнены, чтобы запрос маршрутизировался этим правилом.
Правило может иметь несколько совпадений:
- Каждое совпадение состоит из нескольких условий (например, путь, заголовки, параметры запроса, метод)
- Условия внутри одного совпадения связаны логикой И (все должны быть выполнены)
- Совпадения между собой связаны логикой ИЛИ (достаточно, чтобы выполнилось любое совпадение)
Пример: Если Match-1 требует path=/api И header=v1, а Match-2 требует query=test, то запрос маршрутизируется, если он соответствует либо (path=/api И header=v1), либо (query=test).
Структура совпадения общая для всех типов маршрутов, но поддерживаемые условия совпадения зависят от типа маршрута. Например, HTTPRoute и GRPCRoute поддерживают разные наборы условий.
Filters
Определяет преобразования или модификации, применяемые к запросам или ответам.
Концепция фильтров общая для всех типов маршрутов, но поддерживаемые типы фильтров зависят от типа маршрута.
Справочник HTTPRoute
Для HTTPRoute используются следующие типы условий совпадения, фильтров и расширенных опций.
Типы условий совпадения
Ссылки на условия совпадения
Типы фильтров
Примечания:
RequestRedirectиURLRewriteнельзя использовать одновременно в одном правилеReplacePrefixMatchсовместим только сPathPrefixHTTPRouteMatch- Имена заголовков нечувствительны к регистру согласно RFC 7230
- Несколько значений одного заголовка должны использовать формат с запятыми согласно RFC 7230
Ссылки на фильтры
Options
Раздел Options предоставляет расширенные возможности управления трафиком для HTTPRoute, включая настройки таймаута, повторных попыток и сохранения сессии.
Таймауты
- Таймаут Request Timeout начинает отсчёт после полного получения запроса от клиента и охватывает всю транзакцию, которая может включать несколько вызовов backend при повторных попытках.
- Backend Request Timeout должен быть ≤ Request Timeout, если задан.
- При выборе "Default" поле устанавливается в nil (используется таймаут по умолчанию реализации).
- При выборе "Unlimited" поле устанавливается в "0s" (максимально возможное значение).
Retry
- По умолчанию повторные попытки отключены. Если поле retry не настроено или пустое, gateway не будет повторять неудачные запросы.
- Для включения повторных попыток необходимо явно настроить и количество попыток, и условия повторов.
- При настройке retry в веб-консоли, если удалить все элементы конфигурации retry, поле устанавливается в nil.
Сохранение сессии
Настраивает параметры сохранения сессии, чтобы запросы от одного клиента направлялись на один и тот же backend.
Справочник совпадений и фильтров GRPCRoute
Для GRPCRoute используются следующие типы совпадений и фильтров.
Совпадения GRPCRoute
GRPCRoute поддерживает следующие типы совпадений:
Фильтры GRPCRoute
GRPCRoute поддерживает только фильтр RequestHeaderModifier:
GRPCRoute не поддерживает опции, такие как таймаут, повторные попытки или сохранение сессии.
Справочник TLSRoute
Следующее поведение характерно для TLSRoute.
- Для
TLSRoutehostnames необязательны. Если у слушателя есть hostname, а уTLSRouteнет,TLSRouteавтоматически наследует hostname слушателя. TLSRouteможет быть прикреплен только к слушателям с протоколомTLSв режимеPassthrough.
Просмотр
Топология
Следующие функции предоставляют дополнительные возможности просмотра, доступные в ACP Web Console.
Вкладка топологии предоставляет визуальное представление маршрута и связанных с ним ресурсов. Она отображает все политики, прикреплённые к маршруту, а также их зависимые ресурсы, такие как секреты, на которые ссылается SecurityPolicy.
Эта функция в настоящее время доступна только для HTTPRoute.
Следующий шаг
После прикрепления маршрутов к слушателям продолжайте с Настройка GatewayAPI Policy, если вам нужны расширенные политики трафика или безопасности. Для дополнительных примеров эксплуатации смотрите Задачи для Envoy Gateway.