Маршруты Gateway API
Маршрутизация трафика через HTTPRoute и GRPCRoute.
На этой странице
Маршруты Gateway API описывают логику маршрутизации: привязку к Gateway, правила совпадения запросов и backend-сервисы. Управление доступно в неймспейсе кластера.
Поддерживаемые типы маршрутов:
| Тип | API | Назначение |
|---|---|---|
| HTTPRoute | gateway.networking.k8s.io/v1 |
HTTP/HTTPS-маршрутизация |
| GRPCRoute | gateway.networking.k8s.io/v1 |
gRPC-маршрутизация |
Где настраивать:
- неймспейс - раздел Сети → Маршруты.
- Через кастомные ресурсы: неймспейс → раздел Администрирование → Кастомные ресурсы → API-группа gateway.networking.k8s.io → HTTPRoute или GRPCRoute.
Общий обзор Gateway API см. Gateway API. Для классической публикации через Ingress см. Как опубликовать приложение.
На странице Маршруты отображается список созданных маршрутов (HTTPRoute, GRPCRoute) в неймспейсе.
Скриншот: список маршрутов

Создание маршрута
На странице Маршруты нажмите + Добавить Маршрут и выберите тип маршрута: HTTP, GRPC. На открывшейся странице заполните:
- Имя — обязательное, уникальное в пределах неймспейса; при редактировании не изменяется.
- Лейблы и Аннотации — необязательно.
Скриншот: выбор типа маршрута

Спецификация объекта
Маршрут должен быть привязан минимум к одному Gateway. Нажмите +, чтобы выбрать Gateway из списка доступных. При необходимости выберите имя обработчика.
- Список доступных Gateways зависит от неймспейса маршрута и настроек Разрешенные маршруты из неймспейсов в обработчиках Gateway:
- Неймспейс маршрута и Gateway совпадает — выберите имя Gateway и имя обработчика;
Скриншот: добавление Gateway из того же неймспейса

- Gateway из другого неймспейса — список доступных Gateway для выбора определяется, если обработчик Gateway разрешает привязку маршрутов из всех неймспейсов (ALL) и/или лейблы неймспейса маршрута соответствуют селектору (Selector) неймспейсов в обработчике.
Скриншот: добавление Gateway из другого неймспейса

- Hosts (необязательно) - имена хостов (hostnames), которые должны совпадать с заголовком запроса для выбора этого маршрута. Если hostname указан и в обработчике, и в маршруте, должно быть как минимум одно пересекающееся имя для прикрепления к обработчику.
Пример соответствия hostnames
| hostname в Listener | host в маршруте | Прикрепление |
|---|---|---|
test.example.com |
(не указан) | да |
test.example.com |
test.example.com |
да |
test.example.com |
foo.example.com |
нет |
*.example.com |
(не указан) | да |
*.example.com |
*.example.com |
да |
*.example.com |
foo.test.example.com |
да |
*.example.com |
example.com |
нет |
Rules
В блоке Rules могут быть заданы правила маршрута: сопоставления запросов на основе совпадений (Matches) и их переадресация на Backend Services. Можно задать несколько правил (rules). Нажмите +, чтобы сконфигурировать правило. В открывшемся окне настройте:
- Имя rule (необязательно) — имя правила маршрута, должно быть уникальным в маршруте. Когда добавлено, отображается в списке правил блока Rules.
- Matches — при необходимости настройки условия сопоставления с входящим запросом.
| Принцип Matches | Описание |
|---|---|
| Логика “И” внутри одного правила | Указано несколько условий (matches) в одном rule, запрос должен соответствовать всем этим условиям одновременно |
| Логика “ИЛИ” между разными правилами | Если запрос соответствует условиям (matches) хотя бы одного из rule, он будет направлен на указанные в этом правиле бэкенды |
Нажмите + в разделе Matches, чтобы добавить условие сопоставления. В боковом окне доступны настройки:
| Поле | Описание |
|---|---|
| Path | Путь HTTP-запроса для сопоставления |
| Path type | Определяет, как интерпретировать значение пути запроса, заданное в поле Path. Поддерживаются три типа:
|
| Метод | HTTP-метод, которому должен соответствовать запрос. Возможные значения: GET, HEAD, POST, PUT, DELETE, CONNECT, OPTIONS, TRACE, PATCH |
| Заголовки HTTP запроса | Условия для сопоставления с HTTP-заголовками запроса. В одном Match можно указать несколько условий для заголовков HTTP запроса и все они должны быть выполнены. Каждый заголовок определяется тремя параметрами:
|
| Параметры HTTP запроса | Условия для сопоставления с query-параметрами запроса. В одном Match можно указать несколько условий для параметров и все они должны быть выполнены. Для параметра доступно:
|
| Поле | Описание | |
|---|---|---|
| Метод GRPC | Имя gRPC-метода, которому должен соответствовать запрос. Если указано имя метода, то поле Сервис также должно быть заполнено. Если оба поля (Сервис и Метод) не указаны, правило будет совпадать с любыми gRPC-запросами. | |
| Сервис | Имя gRPC-сервиса, которому должен соответствовать запрос. | |
| Тип | Определяет, как интерпретировать значения полей Сервис и Метод GRPC. Поддерживаются два типа:
|
|
| Заголовки GRPC | Условия для сопоставления с заголовками gRPC-запроса. Каждый заголовок определяется тремя параметрами:
|
Скриншот: создание HTTPRoute
Скриншот: настройка Rules и Backend Services
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
name: my-app-route
namespace: my-namespace
spec:
parentRefs:
- name: example-gateway
namespace: infra
sectionName: http
hostnames:
- app.example.com
rules:
- name: default
matches:
- path:
type: PathPrefix
value: /
backendRefs:
- name: my-service
port: 80
apiVersion: gateway.networking.k8s.io/v1
kind: GRPCRoute
metadata:
name: grpc-app
namespace: my-namespace
spec:
parentRefs:
- name: my-gateway
hostnames:
- "example.com"
rules:
- matches:
- method:
service: com.example.user
method: Login
backendRefs:
- name: my-service
port: 50051