Поля ресурса HTTPRoute
В ресурсе HTTPRoute
определяются правила маршрутизации трафика по бэкендам — сервисам Kubernetes (ресурсам Service) или перенаправления трафика. HTTPRoute
получает входящий трафик от тех ресурсов Gateway
, требованиям которых соответствует.
HTTPRoute
предназначен для разработчиков приложений. Оператор кластера должен использовать Gateway
.
HTTPRoute
— ресурс Kubernetes, определенный проектом Kubernetes Gateway API
HTTPRoute
apiVersion: gateway.networking.k8s.io/v1alpha2
kind: HTTPRoute
metadata:
name: <string>
namespace: <string>
spec: <HTTPRouteSpec>
Где:
-
apiVersion
:gateway.networking.k8s.io/v1alpha2
-
kind
:HTTPRoute
-
metadata
(ObjectMeta
, обязательное)Метаданные ресурса.
-
name
(string
, обязательное)Имя ресурса. Подробнее о формате см. в документации Kubernetes
.Не является именем маршрута в Application Load Balancer.
-
namespace
(string
)Пространство имен, к которому относится ресурс. Значение по умолчанию —
default
.
-
-
spec
(HTTPRouteSpec
, обязательное)Спецификация ресурса. Подробнее см. ниже.
HTTPRouteSpec
parentRefs:
- group: <string>
kind: <string>
namespace: <string>
name: <string>
sectionName: <string>
- ...
hostnames:
- <string>
- ...
rules:
- matches:
- path:
type: <string>
value: <string>
method: <string>
- ...
filters:
- <HTTPRouteFilter>
- ...
backendRefs:
- group: <string>
kind: <string>
name: <string>
namespace: <string>
port: <int32>
weight: <int32>
filters:
- <HTTPRouteFilter>
- ...
- ...
- ...
Где:
-
parentRefs
([]ParentReference
, обязательное)Список ресурсов
Gateway
(или их обработчиков из поляspec.listeners
— см. справочник), к которым должен быть привязанHTTPRoute
.Также маршрут должен удовлетворять правилам, описанным в конфигурации
Gateway
(полеspec.listeners.allowedRoutes
).-
namespace
(string
)Пространство имен, к которому относится ресурс
Gateway
(указано в его метаданных — в полеmetadata.namespace
).По умолчанию совпадает с пространством имен ресурса
HTTPRoute
(полеmetadata.namespace
). -
name
(string
, обязательное)Имя ресурса
Gateway
(указано в его метаданных — в полеmetadata.name
). -
sectionName
(string
)Имя обработчика, указанного в ресурсе
Gateway
(указано в полеspec.listeners.name
).
-
-
hostnames
([]string
)Список доменных имен (значений заголовка
Host
для HTTP/1.1 или псевдозаголовка:authority
для HTTP/2), соответствующих маршруту. Для каждого доменного имени будут созданы виртуальные хосты в HTTP-роутерах.Чтобы указать на все возможные поддомены любых уровней, вместо первого уровня доменного имени используйте звездочку
*
. В этом случае значение нужно обернуть в кавычки.Например, значение
"*.example.com"
соответствует доменным именамfoo.example.com
,foo-bar.example.com
,foo.bar.example.com
,foo.bar.baz.example.com
и т. п. (но неexample.com
).Заменить звездочкой только часть первого уровня доменного имени, например
*foo.example.com
, нельзя. -
rules
([]HTTPRouteRule
)Правила маршрутизации и перенаправления запросов.
-
matches
([]HTTPRouteMatch
)Список условий, хотя бы одному из которых должен соответствовать запрос, чтобы к нему было применено правило.
Например, следующему списку условий будут удовлетворять все запросы к пути
/foo
методомPOST
и все запросы к пути/bar
любым методом:matches: - path: value: /foo method: POST - path: value: /bar
Поддерживаются только поля, перечисленные ниже. Другие поля, описанные в справочнике Gateway API
(headers
,queryParams
), не поддерживаются.-
path
(HTTPPathMatch
)Указание на путь в URI запроса.
-
type
(string
)Тип указания на путь в URI запроса:
Exact
: путь должен совпадать со значением поляrules.matches.path.value
.PathPrefix
: путь должен начинаться со значения поляrules.matches.path.value
.
Помимо распределения трафика, от типа зависит механизм замены пути при перенаправлении. Подробнее см. ниже.
-
value
(string
)Путь в URI входящего запроса (если тип —
Exact
) или его начало (если тип —PathPrefix
).
-
-
method
(HTTPMethod
)HTTP-метод запроса.
-
-
filters
([]HTTPRouteFilter
)Список фильтров, которые описывают изменение заголовков запроса при маршрутизации в любой бэкенд или перенаправление запроса. Подробнее см. ниже.
Разрешается указывать либо фильтр типа
RequestHeaderModifier
(изменение заголовков), либо фильтр типаRequestRedirect
(перенаправление), но не оба сразу. -
backendRefs
([]HTTPBackendRef
)Список сервисов Kubernetes, которые должны обрабатывать запрос в качестве бэкенда.
Ресурс
Service
, на который указывает это поле, должен быть описан по принятой конфигурации.-
name
(string
)Имя сервиса Kubernetes.
-
namespace
(string
)Пространство имен, к которому относится сервис.
-
port
(int32
)Номер порта сервиса.
Номер должен совпадать с одним из номеров портов, указанных в полях
spec.ports.port
ресурсаService
. Подробнее см. в конфигурации ресурса.Поле предназначено для работы Gateway API и не соответствует ни одному из полей ресурсов Application Load Balancer.
-
weight
(int32
)Относительный вес бэкенда. Трафик между бэкендами в группе распределяется пропорционально их весам.
Веса должны быть указаны либо у всех бэкендов в группе, либо ни у одного из них. Между бэкендами без указанных весов трафик распределяется, как если бы у них были указаны одинаковые положительные веса.
Если указан неположительный вес, бэкенд не будет получать трафик.
-
filters
([]HTTPRouteFilter
)Настройки изменения заголовков запроса при маршрутизации в бэкенд. Подробнее см. ниже.
Разрешается указывать только фильтр типа
RequestHeaderModifier
(изменение заголовков).
-
-
HTTPRouteFilter
type: <string>
requestHeaderModifier:
set:
- name: <string>
value: <string>
- ...
add:
- name: <string>
value: <string>
- ...
remove:
- <string>
- ...
requestRedirect:
scheme: <string>
hostname: <string>
path:
type: <string>
replaceFullPath: <string>
replacePrefixMatch: <string>
port: <int32>
statusCode: <int>
Где:
-
type
(string
)Тип фильтра:
RequestHeaderModifier
— изменение заголовков запроса. Настройки указываются в полеrequestHeaderModifier
.RequestRedirect
— перенаправление запроса. Настройки указываются в полеrequestRedirect
.
-
requestHeaderModifier
(HTTPRequestHeaderFilter
)Настройки изменения заголовков запроса для фильтра типа
RequestHeaderModifier
.-
set
([]HTTPHeader
)Список перезаписываемых заголовков.
-
name
(string
)Имя перезаписываемого заголовка.
-
value
(string
)Значение, записываемое в заголовок.
-
-
add
([]HTTPHeader
)Список добавляемых заголовков.
-
name
(string
)Имя добавляемого заголовка.
-
value
(string
)Значение добавляемого заголовка.
-
-
remove
([]string
)Список имен удаляемых заголовков.
-
-
requestRedirect
(HTTPRequestRedirectFilter
)Настройки перенаправления запроса для фильтра типа
RequestRedirect
.-
scheme
(string
)Новая схема в URI запроса:
http
илиhttps
. По умолчанию схема остается без изменений. -
hostname
(string
)Новое доменное имя в URI запроса. По умолчанию доменное имя остается без изменений.
-
path
(HTTPPathModifier
)Настройки замены пути в URI запроса.
-
type
(string
)Тип замены пути:
ReplaceFullPath
— замена всего пути. Новый путь указывается в полеreplaceFullPath
.ReplacePrefixMatch
— замена в зависимости от указания пути спецификацииHTTPRoute
(полеspec.rules.matches.path
): если указан типExact
, заменяется весь путь, еслиPathPrefix
— только его начало. Новый путь или его начало указывается в полеreplacePrefixMatch
.
-
replaceFullPath
(string
)Новый путь при типе замены
ReplaceFullPath
. -
replacePrefixMatch
(string
)Новый путь или его начало при типе замены
ReplacePrefixMatch
(см. описание типа выше).
-
-
port
(int32
)Новый порт в URI запроса.
-
statusCode
(int
)HTTP-код состояния, возвращаемый при перенаправлении.
-