第 17 章 HTTPRoute [gateway.networking.k8s.io/v1]
- 描述
- HTTPRoute 提供路由 HTTP 请求的方式。这包括按主机名、路径、标头或查询参数匹配请求的能力。过滤器可用于指定其他处理步骤。后端指定应该路由匹配的请求。
- 类型
-
object
- 必填
-
spec
-
17.1. 规格 复制链接链接已复制到粘贴板!
属性 | 类型 | 描述 |
---|---|---|
|
| APIVersion 定义对象的这个表示法的版本化的 schema。服务器应该将识别的模式转换为最新的内部值,并可拒绝未识别的值。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources |
|
| kind 是一个字符串值,代表此对象所代表的 REST 资源。服务器可以从客户端向其提交请求的端点推断。无法更新。采用驼峰拼写法 (CamelCase)。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds |
| 标准对象元数据。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata | |
|
| spec 定义 HTTPRoute 的所需状态。 |
|
| Status 定义 HTTPRoute 的当前状态。 |
17.1.1. .spec 复制链接链接已复制到粘贴板!
- 描述
- spec 定义 HTTPRoute 的所需状态。
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
|
| hostnames 定义一组主机名,它们应当与 HTTP 主机标头匹配,以选择用于处理请求的 HTTPRoute。实施必须忽略 HTTP 主机标头中指定的任何端口值,同时执行匹配项和(任何适用的标头修改配置的absent)必须将此标头未修改转发到后端。 主机名的有效值由带有 2 值得例外的主机名的 RFC 1123 定义决定:
1.不允许使用 IP。2.主机名可以带有通配符标签前缀(.<)。 如果主机名同时由 Listener 和 HTTPRoute 指定,则必须至少有一个交集主机名,以便 HTTPRoute 才能附加到 Listener。例如:
* 使用
带有通配符标签(MyPlaybooks)前缀的主机名被解释为后缀匹配。
如果 Listener 和 HTTPRoute 都指定了主机名,则所有与 Listener 主机名不匹配的 HTTPRoute 主机名都会被忽略。例如,如果指定了 Listener.
如果 Listener 和 HTTPRoute 都指定了主机名,并且与上述条件都不匹配,则不接受 HTTPRoute。实现必须引发 'Accepted' Condition 状态,其状态在对应的 RouteParentStatus 中。 如果多个 HTTPRoutes 指定交集主机名(例如,重叠通配符匹配和完全匹配主机名),则必须将优先级提供给 HTTPRoute 中带有最大数量的 HTTPRoute 的规则: * 在匹配非通配符主机名中的字符。* 匹配主机名中的字符。 如果在多个路由间有绑定,HTTPRouteMatches 的匹配优先级规则会接管。 支持:Core |
|
| ParentRefs 引用路由要附加到的资源(通常为 Gateway)。请注意,引用的父资源需要允许此附加完成。对于网关,这意味着网关需要允许从此类和命名空间的 Routes 进行附加。对于服务,这意味着 Service 必须位于同一命名空间中用于 "producer" 路由,或者网格实现必须支持并允许所引用服务的 "consumer" 路由。ReferenceGrant 不适用于管理对 Services 的 ParentRefs to Services - 无法在与 Route 不同的命名空间中为服务创建 "producer" 路由。 支持"Core"支持的父资源有两种: * gateway (Gateway conformance profile)* Service (Mesh conformance profile, only ClusterIP Services) 以后可能会扩展此 API,以支持其他类型的父资源。 ParentRefs 必须 不同。这意味着:
* 它们选择不同的对象。如果是这种情况,则 parentRef 条目会有所不同。就字段而言,这意味着由 一些示例:
* 如果一个 ParentRef 设置 可以单独引用多个不同的对象,这些对象可能会被实施折叠。例如,一些实现可能会选择将兼容的网关 Listeners 合并在一起。如果是这种情况,则也应合并附加到这些资源的路由列表。 请注意,对于跨命名空间边界的 ParentRefs,有特定的规则。只有跨命名空间引用被引用的命名空间中明确允许时才有效。例如,Gateway 具有 AllowedRoutes 字段,ReferenceGrant 提供了启用其他类型的跨命名空间参考的通用方法。 |
|
| ParentReference 识别一个 API 对象(通常是网关),它被视为此资源的父项(通常是路由)。支持"Core"支持的父资源有两种: * gateway (Gateway conformance profile)* Service (Mesh conformance profile, only ClusterIP Services) 以后可能会扩展此 API,以支持其他类型的父资源。 API 对象必须在集群中有效;集群中必须注册 Group 和 Kind,以便此引用有效。 |
|
| 规则是 HTTP 匹配器、过滤器和操作的列表。 |
|
| HTTPRouteRule 根据条件(matches)定义与 HTTP 请求匹配的语义,处理它(filters),并将请求转发到 API 对象(backendRefs)。 |
17.1.2. .spec.parentRefs 复制链接链接已复制到粘贴板!
- 描述
ParentRefs 引用路由要附加到的资源(通常为 Gateway)。请注意,引用的父资源需要允许此附加完成。对于网关,这意味着网关需要允许从此类和命名空间的 Routes 进行附加。对于服务,这意味着 Service 必须位于同一命名空间中用于 "producer" 路由,或者网格实现必须支持并允许所引用服务的 "consumer" 路由。ReferenceGrant 不适用于管理对 Services 的 ParentRefs to Services - 无法在与 Route 不同的命名空间中为服务创建 "producer" 路由。
支持"Core"支持的父资源有两种:
- gateway (Gateway conformance profile)
- 服务(Mesh conformance 配置集,仅限 ClusterIP 服务)
以后可能会扩展此 API,以支持其他类型的父资源。
ParentRefs 必须 不同。这意味着:
-
它们选择不同的对象。如果是这种情况,则 parentRef 条目会有所不同。就字段而言,这意味着由
组
,kind
,namespace
, 和name
定义的多部分键必须在 Route 中的所有 parentRef 条目中唯一。 - 它们没有选择不同的对象,但每个可选字段都使用的每个可选字段,每个选择同一对象的 ParentRef 都必须将相同的可选字段设置为不同的值。如果一个 ParentRef 设置可选字段的组合,则所有字段都必须设置相同的组合。
一些示例:
-
如果一个 ParentRef set
sectionName
,则引用同一对象的所有 ParentRefs 还必须设置sectionName
。 -
如果一个 ParentRef 设置
端口
,则引用同一对象的所有 ParentRefs 也必须设置端口
。 -
如果一个 ParentRef 设置
sectionName
和端口
,则引用同一对象的所有 ParentRefs 还必须设置sectionName
和端口
。
可以单独引用多个不同的对象,这些对象可能会被实施折叠。例如,一些实现可能会选择将兼容的网关 Listeners 合并在一起。如果是这种情况,则也应合并附加到这些资源的路由列表。
请注意,对于跨命名空间边界的 ParentRefs,有特定的规则。只有跨命名空间引用被引用的命名空间中明确允许时才有效。例如,Gateway 具有 AllowedRoutes 字段,ReferenceGrant 提供了启用其他类型的跨命名空间参考的通用方法。
- 类型
-
数组
17.1.3. .spec.parentRefs[] 复制链接链接已复制到粘贴板!
- 描述
ParentReference 识别一个 API 对象(通常是网关),它被视为此资源的父项(通常是路由)。支持"Core"支持的父资源有两种:
- gateway (Gateway conformance profile)
- 服务(Mesh conformance 配置集,仅限 ClusterIP 服务)
以后可能会扩展此 API,以支持其他类型的父资源。
API 对象必须在集群中有效;集群中必须注册 Group 和 Kind,以便此引用有效。
- 类型
-
object
- 必填
-
name
-
属性 | 类型 | 描述 |
---|---|---|
|
| 组是引用的组。如果未指定,"gateway.networking.k8s.io" 将推断出来。要设置核心 API 组(如 "Service" kind referent),Group 必须明确设置为 "" (空字符串)。 支持:Core |
|
| kind 是引用的类型。 支持"Core"支持的父资源有两种: * gateway (Gateway conformance profile)* Service (Mesh conformance profile, only ClusterIP Services) 对其他资源的支持是特定于实施的。 |
|
| name 是引用的名称。 支持:Core |
|
| namespace 是引用的命名空间。如果未指定,这指的是 Route 的本地命名空间。 请注意,对于跨命名空间边界的 ParentRefs 有特定的规则。只有跨命名空间引用被引用的命名空间中明确允许时才有效。例如: Gateway 具有 AllowedRoutes 字段,ReferenceGrant 提供了一种通用方法来启用其他类型的跨命名空间引用。 支持:Core |
|
| port 是此 Route 目标的网络端口。它可以根据父资源的类型进行解释。
当父资源是网关时,此目标是在支持此类 Route (并选择此路由)的指定端口上侦听所有的监听程序。不建议设置 实施 MAY 选择支持其他父资源。支持其他类型的父资源的实施必须清楚地记录/如果端口的解释方式。 对于状态,只要父资源接受部分,则附加被视为成功。例如,网关监听程序可以通过 Route kind、namespace 或 hostname 来限制哪些 Routes 可以附加到它们。如果 2 网关监听程序的 1 个接受来自引用路由的附件,则路由必须被视为成功附加。如果没有网关监听程序接受来自此 Route 的附件,则路由必须被视为与网关分离。 支持:扩展 |
|
| SectionName 是目标资源中的一个部分的名称。在以下资源中,sectionName 被解释为: * gateway: Listener 名称。当同时指定了 Port (experimental)和 SectionName 时,所选监听器的名称和端口必须与两个指定的值匹配。* service: 端口名称。当同时指定了 Port (experimental)和 SectionName 时,所选监听器的名称和端口必须与两个指定的值匹配。 实施 MAY 选择支持将路由附加到其他资源。如果是这种情况,它们必须清楚地记录 SectionName 的解释方式。 如果未指定(空字符串),这将引用整个资源。对于状态,如果父资源中的至少一个部分接受它,则附加被视为成功。例如,网关监听程序可以通过 Route kind、namespace 或 hostname 来限制哪些 Routes 可以附加到它们。如果 2 网关监听程序的 1 个接受来自引用路由的附件,则路由必须被视为成功附加。如果没有网关监听程序接受来自此 Route 的附件,则路由必须被视为与网关分离。 支持:Core |
17.1.4. .spec.rules 复制链接链接已复制到粘贴板!
- 描述
- 规则是 HTTP 匹配器、过滤器和操作的列表。
- 类型
-
array
17.1.5. .spec.rules[] 复制链接链接已复制到粘贴板!
- 描述
- HTTPRouteRule 根据条件(matches)定义与 HTTP 请求匹配的语义,处理它(filters),并将请求转发到 API 对象(backendRefs)。
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
|
| BackendRefs 定义应发送匹配的请求的后端。 此处的故障行为取决于指定的 BackendRefs 数量以及无效的后端。 如果 BackendRefs 中的所有 条目都无效,且没有在此路由规则中指定过滤器,则与这个规则匹配的所有流量都必须收到 500 状态代码。 有关使单个 HTTPBackendRef 无效的规则,请参阅 HTTPBackendRef 定义。 当 HTTPBackendRef 无效时,必须为其他路由到无效后端的请求返回 500 状态代码。如果指定了多个后端,一些后端无效,否则将路由到无效后端的请求比例接收 500 状态代码。 例如,如果指定了两个后端,且权重相等,且一个无效,则 50% 的流量必须接收 500 个。实施可能会选择 50% 的决定方式。 当 HTTPBackendRef 指的是没有就绪端点的服务时,实现 SHOULD 会改为为该后端返回 503。如果实施选择这样做,则上述所有上述规则都必须针对 500 个响应,对于返回 503 的响应也同样适用于返回 503 的响应。 支持 :Kubernetes Service 的核心 Support: Extended for Kubernetes ServiceImport 支持:特定于任何其他资源的实现 对权重的支持: Core |
|
| HTTPBackendRef 定义 HTTPRoute 如何转发 HTTP 请求。 请注意,当指定与本地命名空间不同的命名空间时,引用命名空间中需要一个 ReferenceGrant 对象,以允许该命名空间的所有者接受引用。详情请查看 ReferenceGrant 文档。 |
|
| 过滤器定义应用到与此规则匹配的请求的过滤器。 在可能的情况下,实施 SHOULD 按指定的顺序实施过滤器。 实施 MAY 选择严格实施此排序,从而拒绝不支持的任何过滤器组合或顺序。如果实现选择对过滤排序的严格解释,则它们必须清楚地记录该行为。 要拒绝无效的过滤器组合或过滤器顺序,实现 SHOULD 会考虑带有此配置的 Route 规则无效。如果路由中的所有路由规则都无效,则整个路由将被视为无效。如果只有一部分 Route 规则无效,则实现必须为 Route 设置 "PartiallyInvalid" 条件。 此级别上的一致性级别会根据过滤器类型定义: - 所有核心过滤器都必须由所有实现支持。- 鼓励实现的实现来支持扩展过滤器。- 特定于实现的自定义过滤器在实现过程中没有 API 保证。 除非在过滤器中明确指定,否则不支持多次指定同一过滤器。
除 URLRewrite 和 RequestRedirect 过滤器外,所有过滤器都应该相互兼容,但可能无法组合使用。如果实施不支持其他过滤器组合,它们必须清楚地记录那个限制。如果指定了不兼容或不支持的过滤器,并导致 支持:Core |
|
| HTTPRouteFilter 定义在请求或响应生命周期内必须完成的处理步骤。HTTPRouteFilters 充当一个扩展点,用于表达在网关实施中可能完成的处理。有些示例包括请求或响应修改、实施身份验证策略、速率限制和流量控制。API 保证/格式根据过滤器的类型定义。 |
|
| matches 定义用于与传入 HTTP 请求匹配的规则的条件。每个匹配项都独立,例如,如果 满足任何 其中一个匹配项,则此规则将匹配。 例如,使用以下内容匹配配置: matches: - path: value: "/foo" headers: - name: "version" value: "v2" - path: value: "/v2/foo" 要与此规则匹配的请求,请求必须满足两个条件的 EITHER:
- 带有 有关如何指定应同时存在的多个匹配条件的信息,请参阅 HTTPRouteMatch 文档。 如果没有指定匹配项,则默认值是前缀路径与"/"匹配,其效果与每个 HTTP 请求匹配。 根据以下条件,从 HTTPRoutes MUST 生成的代理或 Load Balancer 路由配置会按照以下条件继续匹配。在适用路由中指定的所有规则中,必须为匹配项提供优先级: * "exact" 路径匹配。* "prefix" 路径与最大字符数匹配。* 方法匹配。* 最大的标头匹配数。* 的最大查询参数数匹配。 注: RegularExpression 路径匹配的优先级是特定于实现的。 如果绑定仍存在于多个路由中,则按以下条件顺序确定匹配的优先级,继续绑定: * 基于创建时间戳的最旧的路由。* 路由以字母顺序按 "{namespace}/{name}" 开头。 如果 HTTPRoute 中仍然存在 ties,则匹配的优先级必须授予 FIRST 匹配规则(按列表顺序),符合上述条件。 如果没有与请求成功附加到父请求的规则时,将返回 HTTP 404 状态代码 MUST。 |
|
| HTTPRouteMatch 定义用于将请求与给定操作匹配的 predicate。多个匹配类型是 AND,即仅在满足所有条件时,匹配才会评估为 true。
例如,只有在其路径以 match: path: value: "/foo" headers: - name: "version" value "v1" |
|
| 超时定义可以为 HTTP 请求配置的超时。 支持:扩展 |
17.1.6. .spec.rules[].backendRefs 复制链接链接已复制到粘贴板!
- 描述
BackendRefs 定义应发送匹配的请求的后端。
此处的故障行为取决于指定的 BackendRefs 数量以及无效的后端。
如果 BackendRefs 中的所有 条目都无效,且没有在此路由规则中指定过滤器,则与这个规则匹配的所有流量都必须收到 500 状态代码。
有关使单个 HTTPBackendRef 无效的规则,请参阅 HTTPBackendRef 定义。
当 HTTPBackendRef 无效时,必须为其他路由到无效后端的请求返回 500 状态代码。如果指定了多个后端,一些后端无效,否则将路由到无效后端的请求比例接收 500 状态代码。
例如,如果指定了两个后端,且权重相等,且一个无效,则 50% 的流量必须接收 500 个。实施可能会选择 50% 的决定方式。
当 HTTPBackendRef 指的是没有就绪端点的服务时,实现 SHOULD 会改为为该后端返回 503。如果实施选择这样做,则上述所有上述规则都必须针对 500 个响应,对于返回 503 的响应也同样适用于返回 503 的响应。
支持 :Kubernetes Service 的核心
Support: Extended for Kubernetes ServiceImport
支持:特定于任何其他资源的实现
对权重的支持: Core
- 类型
-
数组
17.1.7. .spec.rules[].backendRefs[] 复制链接链接已复制到粘贴板!
- 描述
HTTPBackendRef 定义 HTTPRoute 如何转发 HTTP 请求。
请注意,当指定与本地命名空间不同的命名空间时,引用命名空间中需要一个 ReferenceGrant 对象,以允许该命名空间的所有者接受引用。详情请查看 ReferenceGrant 文档。
- 类型
-
object
- 必填
-
name
-
属性 | 类型 | 描述 |
---|---|---|
|
| 只有在请求被转发到此处定义的后端时,才应执行此级别中定义的过滤器。 支持:特定于实现的(对于更广泛的过滤器支持,请使用 HTTPRouteRule 中的 Filters 字段。) |
|
| HTTPRouteFilter 定义在请求或响应生命周期内必须完成的处理步骤。HTTPRouteFilters 充当一个扩展点,用于表达在网关实施中可能完成的处理。有些示例包括请求或响应修改、实施身份验证策略、速率限制和流量控制。API 保证/格式根据过滤器的类型定义。 |
|
| 组是引用的组。例如:"gateway.networking.k8s.io"。如果未指定或空字符串时,核心 API 组将被推断出来。 |
|
| kind 是引用的 Kubernetes 资源类型。例如 "Service"。 如果没有指定,则默认为 "Service"。 ExternalName 服务可以引用集群中可能位于的 CNAME DNS 记录,因此很难考虑一致性。它们也可能不安全(请参阅 CVE-2021-25740 了解更多信息)。实施 SHOULD 不支持 ExternalName 服务。 Support: Core (带有 ExternalName 以外的类型的服务) 支持:特定于实现的(类型为 ExternalName 的服务) |
|
| name 是引用的名称。 |
|
| namespace 是后端的命名空间。如果未指定,本地命名空间将被推断出来。 请注意,当指定与本地命名空间不同的命名空间时,引用命名空间中需要一个 ReferenceGrant 对象,以允许该命名空间的所有者接受引用。详情请查看 ReferenceGrant 文档。 支持:Core |
|
| port 指定用于此资源的目标端口号。当引用是 Kubernetes 服务时,需要端口。在本例中,端口号是服务端口号,而不是目标端口。对于其他资源,目的地端口可能源自引用资源或此字段。 |
|
| weight 指定转发到引用的后端的请求的比例。这被计算为 weight/ (这个 BackendRefs 列表中有所有权重)。对于非零值,可能会有一些来自此处定义的确切比例的 epsilon,具体取决于实施支持的精度。weight 不是一个百分比,权重的总和不需要等于 100。 如果只指定一个后端,且它的权重大于 0,则会将 100% 的流量转发到那个后端。如果 weight 设为 0,则不应为这个条目转发流量。如果未指定,则权重默认为 1。 对此字段的支持因使用的上下文而异。 |
17.1.8. .spec.rules[].backendRefs[].filters 复制链接链接已复制到粘贴板!
- 描述
只有在请求被转发到此处定义的后端时,才应执行此级别中定义的过滤器。
支持:特定于实现的(对于更广泛的过滤器支持,请使用 HTTPRouteRule 中的 Filters 字段。)
- 类型
-
数组
17.1.9. .spec.rules[].backendRefs[].filters[] 复制链接链接已复制到粘贴板!
- 描述
- HTTPRouteFilter 定义在请求或响应生命周期内必须完成的处理步骤。HTTPRouteFilters 充当一个扩展点,用于表达在网关实施中可能完成的处理。有些示例包括请求或响应修改、实施身份验证策略、速率限制和流量控制。API 保证/格式根据过滤器的类型定义。
- 类型
-
object
- 必填
-
type
-
属性 | 类型 | 描述 |
---|---|---|
|
| ExtensionRef 是 "filter" 行为的可选、特定于实现的扩展。例如,组 "networking.example.net" 中的资源 "myroutefilter"。ExtensionRef MUST 不用于核心和扩展过滤器。 此过滤器可以在同一规则内多次使用。 支持:特定于实施 |
|
| RequestHeaderModifier 定义修改请求标头的过滤器的模式。 支持:Core |
|
| RequestMirror 为镜像请求的过滤器定义一个模式。请求将发送到指定的目的地,但来自该目的地的响应将被忽略。 此过滤器可以在同一规则内多次使用。请注意,并非所有实施都能够支持镜像到多个后端。 支持:扩展 |
|
| RequestRedirect 定义通过 HTTP 重定向响应请求的过滤器的模式。 支持:Core |
|
| ResponseHeaderModifier 为修改响应标头的过滤器定义模式。 支持:扩展 |
|
| Type 标识要应用的过滤器类型。与其他 API 字段一样,类型被分为三个一致性级别: - core :过滤类型及其在这个软件包中"Support: Core"定义的相应配置,例如:"RequestHeaderModifier".所有实施都必须支持核心过滤器。 - Extended: Filter type 及其对应的配置由这个软件包中的"Support: Extended"定义,例如:"RequestMirror"。我们鼓励实施人员支持扩展过滤器。
- 特定于实现的:由特定供应商定义和支持的过滤器。未来,显示多个实施中行为的过滤器将被视为扩展或核心一致性级别。这些过滤器的特定于过滤器的配置使用 ExtensionRef 字段指定。 我们鼓励实施人员定义自定义实施类型,以使用特定于实施的行为来扩展核心 API。 如果无法解析对自定义过滤器类型的引用,则不会跳过过滤器。相反,已由该过滤器处理的请求接收 HTTP 错误响应。 请注意,值可能会添加到这个 enum 中,实现必须确保未知值不会造成崩溃。
此处的未知值必须实现将 Route 的 Accepted Condition 设置为 |
|
| URLRewrite 为过滤器定义了一个 schema,用于在转发过程中修改请求。 支持:扩展 |
- 描述
ExtensionRef 是 "filter" 行为的可选、特定于实现的扩展。例如,组 "networking.example.net" 中的资源 "myroutefilter"。ExtensionRef MUST 不用于核心和扩展过滤器。
此过滤器可以在同一规则内多次使用。
支持:特定于实施
- 类型
-
object
- 必填
-
group
-
kind
-
name
-
属性 | 类型 | 描述 |
---|---|---|
|
| 组是引用的组。例如:"gateway.networking.k8s.io"。如果未指定或空字符串时,核心 API 组将被推断出来。 |
|
| kind 是引用的类型。例如 "HTTPRoute" 或 "Service"。 |
|
| name 是引用的名称。 |
- 描述
RequestHeaderModifier 定义修改请求标头的过滤器的模式。
支持:Core
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
|
| 在操作前,将给定标头(名称、值)添加到请求。它将附加到与标头名称关联的任何现有值。 input: GET /foo HTTP/1.1 my-header: foo config: add: - name: "my-header" value: "bar,baz" 输出:GET /foo HTTP/1.1 my-header: foo,bar,baz |
|
| HTTPHeader 代表 RFC 7230 定义的 HTTP 标头名称和值。 |
|
| 在操作前,从 HTTP 请求中删除给定标头。Remove 的值是 HTTP 标头名称列表。请注意,标头名称区分大小写(请参阅 https://datatracker.ietf.org/doc/html/rfc2616#section-4.2)。 input: GET /foo HTTP/1.1 my-header1: foo my-header2: bar my-header3: baz config: remove: ["my-header1", "my-header3"] 输出:GET /foo HTTP/1.1 my-header2: bar |
|
| 在操作前,使用给定标头(名称、值)设置覆盖请求。 input: GET /foo HTTP/1.1 my-header: foo config: set: - name: "my-header" value: "bar" 输出:GET /foo HTTP/1.1 my-header: bar |
|
| HTTPHeader 代表 RFC 7230 定义的 HTTP 标头名称和值。 |
- 描述
在操作前,将给定标头(名称、值)添加到请求。它将附加到与标头名称关联的任何现有值。
input: GET /foo HTTP/1.1 my-header: foo
config: add: - name: "my-header" value: "bar,baz"
输出:GET /foo HTTP/1.1 my-header: foo,bar,baz
- 类型
-
数组
- 描述
- HTTPHeader 代表 RFC 7230 定义的 HTTP 标头名称和值。
- 类型
-
object
- 必填
-
name
-
value
-
属性 | 类型 | 描述 |
---|---|---|
|
| name 是要匹配的 HTTP 标头的名称。名称匹配必须不区分大小写。(请参阅 https://tools.ietf.org/html/rfc7230#section-3.2)。 如果多个条目指定了等同的标头名称,则第一个带有等效名称的条目必须视为匹配项。带有等同标头名称的后续条目必须忽略。由于标头名称的问题单识别,"foo"和 "Foo" 被视为等同。 |
|
| value 是要匹配的 HTTP 标头的值。 |
- 描述
在操作前,使用给定标头(名称、值)设置覆盖请求。
input: GET /foo HTTP/1.1 my-header: foo
config: set: - name: "my-header" value: "bar"
输出:GET /foo HTTP/1.1 my-header: bar
- 类型
-
数组
- 描述
- HTTPHeader 代表 RFC 7230 定义的 HTTP 标头名称和值。
- 类型
-
object
- 必填
-
name
-
value
-
属性 | 类型 | 描述 |
---|---|---|
|
| name 是要匹配的 HTTP 标头的名称。名称匹配必须不区分大小写。(请参阅 https://tools.ietf.org/html/rfc7230#section-3.2)。 如果多个条目指定了等同的标头名称,则第一个带有等效名称的条目必须视为匹配项。带有等同标头名称的后续条目必须忽略。由于标头名称的问题单识别,"foo"和 "Foo" 被视为等同。 |
|
| value 是要匹配的 HTTP 标头的值。 |
- 描述
RequestMirror 为镜像请求的过滤器定义一个模式。请求将发送到指定的目的地,但来自该目的地的响应将被忽略。
此过滤器可以在同一规则内多次使用。请注意,并非所有实施都能够支持镜像到多个后端。
支持:扩展
- 类型
-
object
- 必填
-
backendRef
-
属性 | 类型 | 描述 |
---|---|---|
|
| BackendRef 引用发送镜像请求的资源。 镜像请求必须只发送到此 BackendRef 中的单个目标端点,无论此 BackendRef 中有多少端点。
如果无法找到引用,则此 BackendRef 无效,且必须从网关中丢弃。控制器必须确保将 Route 状态上的 "ResolvedRefs" 条件设置为
如果对 ReferenceGrant 不允许 的现有 对象有一个跨命名空间引用,控制器必须确保 Route 上的 "ResolvedRefs" 条件被设置为
在任一错误情况下,应该使用 支持:为 Kubernetes Service 扩展 支持:特定于任何其他资源的实现 |
|
| fraction 代表应镜像到 BackendRef 的请求的比例。 只能指定 Fraction 或 Percent 之一。如果没有指定字段,则会镜像 100% 的请求。 |
|
| percent 代表应镜像到 BackendRef 的请求百分比。其最小值为 0 (代表请求 0%,其最大值为 100 (代表 100% 的请求)。 只能指定 Fraction 或 Percent 之一。如果没有指定字段,则会镜像 100% 的请求。 |
- 描述
BackendRef 引用发送镜像请求的资源。
镜像请求必须只发送到此 BackendRef 中的单个目标端点,无论此 BackendRef 中有多少端点。
如果无法找到引用,则此 BackendRef 无效,且必须从网关中丢弃。控制器必须确保将 Route 状态上的 "ResolvedRefs" 条件设置为
status: False
,而不是在底层实现中配置此后端。如果对 ReferenceGrant 不允许 的现有 对象有一个跨命名空间引用,控制器必须确保 Route 上的 "ResolvedRefs" 条件被设置为
status: False
,并带有 "RefNotPermitted" 原因,且不会在底层实现中配置此后端。在任一错误情况下,应该使用
ResolvedRefs
Condition 的消息来提供有关此问题的更多详情。支持:为 Kubernetes Service 扩展
支持:特定于任何其他资源的实现
- 类型
-
object
- 必填
-
name
-
属性 | 类型 | 描述 |
---|---|---|
|
| 组是引用的组。例如:"gateway.networking.k8s.io"。如果未指定或空字符串时,核心 API 组将被推断出来。 |
|
| kind 是引用的 Kubernetes 资源类型。例如 "Service"。 如果没有指定,则默认为 "Service"。 ExternalName 服务可以引用集群中可能位于的 CNAME DNS 记录,因此很难考虑一致性。它们也可能不安全(请参阅 CVE-2021-25740 了解更多信息)。实施 SHOULD 不支持 ExternalName 服务。 Support: Core (带有 ExternalName 以外的类型的服务) 支持:特定于实现的(类型为 ExternalName 的服务) |
|
| name 是引用的名称。 |
|
| namespace 是后端的命名空间。如果未指定,本地命名空间将被推断出来。 请注意,当指定与本地命名空间不同的命名空间时,引用命名空间中需要一个 ReferenceGrant 对象,以允许该命名空间的所有者接受引用。详情请查看 ReferenceGrant 文档。 支持:Core |
|
| port 指定用于此资源的目标端口号。当引用是 Kubernetes 服务时,需要端口。在本例中,端口号是服务端口号,而不是目标端口。对于其他资源,目的地端口可能源自引用资源或此字段。 |
- 描述
fraction 代表应镜像到 BackendRef 的请求的比例。
只能指定 Fraction 或 Percent 之一。如果没有指定字段,则会镜像 100% 的请求。
- 类型
-
object
- 必填
-
numerator
-
属性 | 类型 | 描述 |
---|---|---|
|
| |
|
|
- 描述
RequestRedirect 定义通过 HTTP 重定向响应请求的过滤器的模式。
支持:Core
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
|
|
hostname 是响应中 支持:Core |
|
|
path 定义用于修改传入请求路径的参数。然后,使用修改后的路径来构建 支持:扩展 |
|
|
port 是响应中 如果没有指定端口,则使用以下规则派生重定向端口 MUST: * 如果重定向方案不是空的,则重定向端口 MUST 是与重定向方案关联的已知端口。特别是"http"到端口 80 和 "https" 到端口 443。如果重定向方案没有已知的端口,则使用网关 SHOULD 的监听程序端口。* 如果重定向方案为空,则重定向端口需要是网关 Listener 端口。 在以下情况下,实现 SHOULD 不会在 'Location' 标头中添加端口号: :将使用 HTTP 的 Location 标头(无论是通过 Listener 协议或 Scheme 字段决定),并使用 端口 80。:将使用 HTTPS 的 Location 标头(无论是通过 Listener 协议或 Scheme 字段决定),并使用 端口 443。 支持:扩展 |
|
|
scheme 是响应中 方案重定向可能会影响重定向的端口,如需更多信息,请参阅此过滤器的 port 字段的文档。 请注意,值可能会添加到这个 enum 中,实现必须确保未知值不会造成崩溃。
此处的未知值必须实现将 Route 的 Accepted Condition 设置为 支持:扩展 |
|
| statusCode 是要响应的 HTTP 状态代码。 请注意,值可能会添加到这个 enum 中,实现必须确保未知值不会造成崩溃。
此处的未知值必须实现将 Route 的 Accepted Condition 设置为 支持:Core |
- 描述
path 定义用于修改传入请求路径的参数。然后,使用修改后的路径来构建
Location
标头。如果为空,请求路径将按原样使用。支持:扩展
- 类型
-
object
- 必填
-
type
-
属性 | 类型 | 描述 |
---|---|---|
|
| ReplaceFullPath 指定在重写或重定向期间替换请求的完整路径的值。 |
|
| replacePrefixMatch 指定在重写或重定向期间替换请求的前缀匹配的值。例如,对 "/foo/bar" 的请求具有与 "/foo" 匹配的前缀,而 替换PrefixMatch 为 "/xyz" 将会被修改为 "/xyz/bar"。
请注意,这与 PathPrefix 匹配类型的行为匹配。这与完整 path 元素匹配。path 元素引用由
replacePrefixMatch 仅与 请求路径 | 前缀匹配 | 替换前缀 | 修改路径 |
|
| type 定义路径修饰符的类型。以后的 API 发行版本中可能会添加额外的类型。 请注意,值可能会添加到这个 enum 中,实现必须确保未知值不会造成崩溃。
此处的未知值必须实现将 Route 的 Accepted Condition 设置为 |
- 描述
ResponseHeaderModifier 为修改响应标头的过滤器定义模式。
支持:扩展
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
|
| 在操作前,将给定标头(名称、值)添加到请求。它将附加到与标头名称关联的任何现有值。 input: GET /foo HTTP/1.1 my-header: foo config: add: - name: "my-header" value: "bar,baz" 输出:GET /foo HTTP/1.1 my-header: foo,bar,baz |
|
| HTTPHeader 代表 RFC 7230 定义的 HTTP 标头名称和值。 |
|
| 在操作前,从 HTTP 请求中删除给定标头。Remove 的值是 HTTP 标头名称列表。请注意,标头名称区分大小写(请参阅 https://datatracker.ietf.org/doc/html/rfc2616#section-4.2)。 input: GET /foo HTTP/1.1 my-header1: foo my-header2: bar my-header3: baz config: remove: ["my-header1", "my-header3"] 输出:GET /foo HTTP/1.1 my-header2: bar |
|
| 在操作前,使用给定标头(名称、值)设置覆盖请求。 input: GET /foo HTTP/1.1 my-header: foo config: set: - name: "my-header" value: "bar" 输出:GET /foo HTTP/1.1 my-header: bar |
|
| HTTPHeader 代表 RFC 7230 定义的 HTTP 标头名称和值。 |
- 描述
在操作前,将给定标头(名称、值)添加到请求。它将附加到与标头名称关联的任何现有值。
input: GET /foo HTTP/1.1 my-header: foo
config: add: - name: "my-header" value: "bar,baz"
输出:GET /foo HTTP/1.1 my-header: foo,bar,baz
- 类型
-
数组
- 描述
- HTTPHeader 代表 RFC 7230 定义的 HTTP 标头名称和值。
- 类型
-
object
- 必填
-
name
-
value
-
属性 | 类型 | 描述 |
---|---|---|
|
| name 是要匹配的 HTTP 标头的名称。名称匹配必须不区分大小写。(请参阅 https://tools.ietf.org/html/rfc7230#section-3.2)。 如果多个条目指定了等同的标头名称,则第一个带有等效名称的条目必须视为匹配项。带有等同标头名称的后续条目必须忽略。由于标头名称的问题单识别,"foo"和 "Foo" 被视为等同。 |
|
| value 是要匹配的 HTTP 标头的值。 |
- 描述
在操作前,使用给定标头(名称、值)设置覆盖请求。
input: GET /foo HTTP/1.1 my-header: foo
config: set: - name: "my-header" value: "bar"
输出:GET /foo HTTP/1.1 my-header: bar
- 类型
-
数组
- 描述
- HTTPHeader 代表 RFC 7230 定义的 HTTP 标头名称和值。
- 类型
-
object
- 必填
-
name
-
value
-
属性 | 类型 | 描述 |
---|---|---|
|
| name 是要匹配的 HTTP 标头的名称。名称匹配必须不区分大小写。(请参阅 https://tools.ietf.org/html/rfc7230#section-3.2)。 如果多个条目指定了等同的标头名称,则第一个带有等效名称的条目必须视为匹配项。带有等同标头名称的后续条目必须忽略。由于标头名称的问题单识别,"foo"和 "Foo" 被视为等同。 |
|
| value 是要匹配的 HTTP 标头的值。 |
- 描述
URLRewrite 为过滤器定义了一个 schema,用于在转发过程中修改请求。
支持:扩展
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
|
| hostname 是转发过程中用于替换 Host 标头值的值。 支持:扩展 |
|
| path 定义路径重写。 支持:扩展 |
- 描述
path 定义路径重写。
支持:扩展
- 类型
-
object
- 必填
-
type
-
属性 | 类型 | 描述 |
---|---|---|
|
| ReplaceFullPath 指定在重写或重定向期间替换请求的完整路径的值。 |
|
| replacePrefixMatch 指定在重写或重定向期间替换请求的前缀匹配的值。例如,对 "/foo/bar" 的请求具有与 "/foo" 匹配的前缀,而 替换PrefixMatch 为 "/xyz" 将会被修改为 "/xyz/bar"。
请注意,这与 PathPrefix 匹配类型的行为匹配。这与完整 path 元素匹配。path 元素引用由
replacePrefixMatch 仅与 请求路径 | 前缀匹配 | 替换前缀 | 修改路径 |
|
| type 定义路径修饰符的类型。以后的 API 发行版本中可能会添加额外的类型。 请注意,值可能会添加到这个 enum 中,实现必须确保未知值不会造成崩溃。
此处的未知值必须实现将 Route 的 Accepted Condition 设置为 |
17.1.28. .spec.rules[].filters 复制链接链接已复制到粘贴板!
- 描述
过滤器定义应用到与此规则匹配的请求的过滤器。
在可能的情况下,实施 SHOULD 按指定的顺序实施过滤器。
实施 MAY 选择严格实施此排序,从而拒绝不支持的任何过滤器组合或顺序。如果实现选择对过滤排序的严格解释,则它们必须清楚地记录该行为。
要拒绝无效的过滤器组合或过滤器顺序,实现 SHOULD 会考虑带有此配置的 Route 规则无效。如果路由中的所有路由规则都无效,则整个路由将被视为无效。如果只有一部分 Route 规则无效,则实现必须为 Route 设置 "PartiallyInvalid" 条件。
此级别上的一致性级别会根据过滤器类型定义:
- 所有核心过滤器都必须被所有实施支持。
- 我们鼓励实施人员支持扩展过滤器。
- 特定于实现的自定义过滤器在实现过程中没有 API 保证。
除非在过滤器中明确指定,否则不支持多次指定同一过滤器。
除 URLRewrite 和 RequestRedirect 过滤器外,所有过滤器都应该相互兼容,但可能无法组合使用。如果实施不支持其他过滤器组合,它们必须清楚地记录那个限制。如果指定了不兼容或不支持的过滤器,并导致
Accepted
条件被设置为False
状态,则实现可能会使用IncompatibleFilters
reason 来指定此配置错误。支持:Core
- 类型
-
数组
17.1.29. .spec.rules[].filters[] 复制链接链接已复制到粘贴板!
- 描述
- HTTPRouteFilter 定义在请求或响应生命周期内必须完成的处理步骤。HTTPRouteFilters 充当一个扩展点,用于表达在网关实施中可能完成的处理。有些示例包括请求或响应修改、实施身份验证策略、速率限制和流量控制。API 保证/格式根据过滤器的类型定义。
- 类型
-
object
- 必填
-
type
-
属性 | 类型 | 描述 |
---|---|---|
|
| ExtensionRef 是 "filter" 行为的可选、特定于实现的扩展。例如,组 "networking.example.net" 中的资源 "myroutefilter"。ExtensionRef MUST 不用于核心和扩展过滤器。 此过滤器可以在同一规则内多次使用。 支持:特定于实施 |
|
| RequestHeaderModifier 定义修改请求标头的过滤器的模式。 支持:Core |
|
| RequestMirror 为镜像请求的过滤器定义一个模式。请求将发送到指定的目的地,但来自该目的地的响应将被忽略。 此过滤器可以在同一规则内多次使用。请注意,并非所有实施都能够支持镜像到多个后端。 支持:扩展 |
|
| RequestRedirect 定义通过 HTTP 重定向响应请求的过滤器的模式。 支持:Core |
|
| ResponseHeaderModifier 为修改响应标头的过滤器定义模式。 支持:扩展 |
|
| Type 标识要应用的过滤器类型。与其他 API 字段一样,类型被分为三个一致性级别: - core :过滤类型及其在这个软件包中"Support: Core"定义的相应配置,例如:"RequestHeaderModifier".所有实施都必须支持核心过滤器。 - Extended: Filter type 及其对应的配置由这个软件包中的"Support: Extended"定义,例如:"RequestMirror"。我们鼓励实施人员支持扩展过滤器。
- 特定于实现的:由特定供应商定义和支持的过滤器。未来,显示多个实施中行为的过滤器将被视为扩展或核心一致性级别。这些过滤器的特定于过滤器的配置使用 ExtensionRef 字段指定。 我们鼓励实施人员定义自定义实施类型,以使用特定于实施的行为来扩展核心 API。 如果无法解析对自定义过滤器类型的引用,则不会跳过过滤器。相反,已由该过滤器处理的请求接收 HTTP 错误响应。 请注意,值可能会添加到这个 enum 中,实现必须确保未知值不会造成崩溃。
此处的未知值必须实现将 Route 的 Accepted Condition 设置为 |
|
| URLRewrite 为过滤器定义了一个 schema,用于在转发过程中修改请求。 支持:扩展 |
17.1.30. .spec.rules[].filters[].extensionRef 复制链接链接已复制到粘贴板!
- 描述
ExtensionRef 是 "filter" 行为的可选、特定于实现的扩展。例如,组 "networking.example.net" 中的资源 "myroutefilter"。ExtensionRef MUST 不用于核心和扩展过滤器。
此过滤器可以在同一规则内多次使用。
支持:特定于实施
- 类型
-
object
- 必填
-
group
-
kind
-
name
-
属性 | 类型 | 描述 |
---|---|---|
|
| 组是引用的组。例如:"gateway.networking.k8s.io"。如果未指定或空字符串时,核心 API 组将被推断出来。 |
|
| kind 是引用的类型。例如 "HTTPRoute" 或 "Service"。 |
|
| name 是引用的名称。 |
17.1.31. .spec.rules[].filters[].requestHeaderModifier 复制链接链接已复制到粘贴板!
- 描述
RequestHeaderModifier 定义修改请求标头的过滤器的模式。
支持:Core
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
|
| 在操作前,将给定标头(名称、值)添加到请求。它将附加到与标头名称关联的任何现有值。 input: GET /foo HTTP/1.1 my-header: foo config: add: - name: "my-header" value: "bar,baz" 输出:GET /foo HTTP/1.1 my-header: foo,bar,baz |
|
| HTTPHeader 代表 RFC 7230 定义的 HTTP 标头名称和值。 |
|
| 在操作前,从 HTTP 请求中删除给定标头。Remove 的值是 HTTP 标头名称列表。请注意,标头名称区分大小写(请参阅 https://datatracker.ietf.org/doc/html/rfc2616#section-4.2)。 input: GET /foo HTTP/1.1 my-header1: foo my-header2: bar my-header3: baz config: remove: ["my-header1", "my-header3"] 输出:GET /foo HTTP/1.1 my-header2: bar |
|
| 在操作前,使用给定标头(名称、值)设置覆盖请求。 input: GET /foo HTTP/1.1 my-header: foo config: set: - name: "my-header" value: "bar" 输出:GET /foo HTTP/1.1 my-header: bar |
|
| HTTPHeader 代表 RFC 7230 定义的 HTTP 标头名称和值。 |
- 描述
在操作前,将给定标头(名称、值)添加到请求。它将附加到与标头名称关联的任何现有值。
input: GET /foo HTTP/1.1 my-header: foo
config: add: - name: "my-header" value: "bar,baz"
输出:GET /foo HTTP/1.1 my-header: foo,bar,baz
- 类型
-
数组
- 描述
- HTTPHeader 代表 RFC 7230 定义的 HTTP 标头名称和值。
- 类型
-
object
- 必填
-
name
-
value
-
属性 | 类型 | 描述 |
---|---|---|
|
| name 是要匹配的 HTTP 标头的名称。名称匹配必须不区分大小写。(请参阅 https://tools.ietf.org/html/rfc7230#section-3.2)。 如果多个条目指定了等同的标头名称,则第一个带有等效名称的条目必须视为匹配项。带有等同标头名称的后续条目必须忽略。由于标头名称的问题单识别,"foo"和 "Foo" 被视为等同。 |
|
| value 是要匹配的 HTTP 标头的值。 |
- 描述
在操作前,使用给定标头(名称、值)设置覆盖请求。
input: GET /foo HTTP/1.1 my-header: foo
config: set: - name: "my-header" value: "bar"
输出:GET /foo HTTP/1.1 my-header: bar
- 类型
-
数组
- 描述
- HTTPHeader 代表 RFC 7230 定义的 HTTP 标头名称和值。
- 类型
-
object
- 必填
-
name
-
value
-
属性 | 类型 | 描述 |
---|---|---|
|
| name 是要匹配的 HTTP 标头的名称。名称匹配必须不区分大小写。(请参阅 https://tools.ietf.org/html/rfc7230#section-3.2)。 如果多个条目指定了等同的标头名称,则第一个带有等效名称的条目必须视为匹配项。带有等同标头名称的后续条目必须忽略。由于标头名称的问题单识别,"foo"和 "Foo" 被视为等同。 |
|
| value 是要匹配的 HTTP 标头的值。 |
17.1.36. .spec.rules[].filters[].requestMirror 复制链接链接已复制到粘贴板!
- 描述
RequestMirror 为镜像请求的过滤器定义一个模式。请求将发送到指定的目的地,但来自该目的地的响应将被忽略。
此过滤器可以在同一规则内多次使用。请注意,并非所有实施都能够支持镜像到多个后端。
支持:扩展
- 类型
-
object
- 必填
-
backendRef
-
属性 | 类型 | 描述 |
---|---|---|
|
| BackendRef 引用发送镜像请求的资源。 镜像请求必须只发送到此 BackendRef 中的单个目标端点,无论此 BackendRef 中有多少端点。
如果无法找到引用,则此 BackendRef 无效,且必须从网关中丢弃。控制器必须确保将 Route 状态上的 "ResolvedRefs" 条件设置为
如果对 ReferenceGrant 不允许 的现有 对象有一个跨命名空间引用,控制器必须确保 Route 上的 "ResolvedRefs" 条件被设置为
在任一错误情况下,应该使用 支持:为 Kubernetes Service 扩展 支持:特定于任何其他资源的实现 |
|
| fraction 代表应镜像到 BackendRef 的请求的比例。 只能指定 Fraction 或 Percent 之一。如果没有指定字段,则会镜像 100% 的请求。 |
|
| percent 代表应镜像到 BackendRef 的请求百分比。其最小值为 0 (代表请求 0%,其最大值为 100 (代表 100% 的请求)。 只能指定 Fraction 或 Percent 之一。如果没有指定字段,则会镜像 100% 的请求。 |
- 描述
BackendRef 引用发送镜像请求的资源。
镜像请求必须只发送到此 BackendRef 中的单个目标端点,无论此 BackendRef 中有多少端点。
如果无法找到引用,则此 BackendRef 无效,且必须从网关中丢弃。控制器必须确保将 Route 状态上的 "ResolvedRefs" 条件设置为
status: False
,而不是在底层实现中配置此后端。如果对 ReferenceGrant 不允许 的现有 对象有一个跨命名空间引用,控制器必须确保 Route 上的 "ResolvedRefs" 条件被设置为
status: False
,并带有 "RefNotPermitted" 原因,且不会在底层实现中配置此后端。在任一错误情况下,应该使用
ResolvedRefs
Condition 的消息来提供有关此问题的更多详情。支持:为 Kubernetes Service 扩展
支持:特定于任何其他资源的实现
- 类型
-
object
- 必填
-
name
-
属性 | 类型 | 描述 |
---|---|---|
|
| 组是引用的组。例如:"gateway.networking.k8s.io"。如果未指定或空字符串时,核心 API 组将被推断出来。 |
|
| kind 是引用的 Kubernetes 资源类型。例如 "Service"。 如果没有指定,则默认为 "Service"。 ExternalName 服务可以引用集群中可能位于的 CNAME DNS 记录,因此很难考虑一致性。它们也可能不安全(请参阅 CVE-2021-25740 了解更多信息)。实施 SHOULD 不支持 ExternalName 服务。 Support: Core (带有 ExternalName 以外的类型的服务) 支持:特定于实现的(类型为 ExternalName 的服务) |
|
| name 是引用的名称。 |
|
| namespace 是后端的命名空间。如果未指定,本地命名空间将被推断出来。 请注意,当指定与本地命名空间不同的命名空间时,引用命名空间中需要一个 ReferenceGrant 对象,以允许该命名空间的所有者接受引用。详情请查看 ReferenceGrant 文档。 支持:Core |
|
| port 指定用于此资源的目标端口号。当引用是 Kubernetes 服务时,需要端口。在本例中,端口号是服务端口号,而不是目标端口。对于其他资源,目的地端口可能源自引用资源或此字段。 |
17.1.38. .spec.rules[].filters[].requestMirror.fraction 复制链接链接已复制到粘贴板!
- 描述
fraction 代表应镜像到 BackendRef 的请求的比例。
只能指定 Fraction 或 Percent 之一。如果没有指定字段,则会镜像 100% 的请求。
- 类型
-
object
- 必填
-
numerator
-
属性 | 类型 | 描述 |
---|---|---|
|
| |
|
|
17.1.39. .spec.rules[].filters[].requestRedirect 复制链接链接已复制到粘贴板!
- 描述
RequestRedirect 定义通过 HTTP 重定向响应请求的过滤器的模式。
支持:Core
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
|
|
hostname 是响应中 支持:Core |
|
|
path 定义用于修改传入请求路径的参数。然后,使用修改后的路径来构建 支持:扩展 |
|
|
port 是响应中 如果没有指定端口,则使用以下规则派生重定向端口 MUST: * 如果重定向方案不是空的,则重定向端口 MUST 是与重定向方案关联的已知端口。特别是"http"到端口 80 和 "https" 到端口 443。如果重定向方案没有已知的端口,则使用网关 SHOULD 的监听程序端口。* 如果重定向方案为空,则重定向端口需要是网关 Listener 端口。 在以下情况下,实现 SHOULD 不会在 'Location' 标头中添加端口号: :将使用 HTTP 的 Location 标头(无论是通过 Listener 协议或 Scheme 字段决定),并使用 端口 80。:将使用 HTTPS 的 Location 标头(无论是通过 Listener 协议或 Scheme 字段决定),并使用 端口 443。 支持:扩展 |
|
|
scheme 是响应中 方案重定向可能会影响重定向的端口,如需更多信息,请参阅此过滤器的 port 字段的文档。 请注意,值可能会添加到这个 enum 中,实现必须确保未知值不会造成崩溃。
此处的未知值必须实现将 Route 的 Accepted Condition 设置为 支持:扩展 |
|
| statusCode 是要响应的 HTTP 状态代码。 请注意,值可能会添加到这个 enum 中,实现必须确保未知值不会造成崩溃。
此处的未知值必须实现将 Route 的 Accepted Condition 设置为 支持:Core |
17.1.40. .spec.rules[].filters[].requestRedirect.path 复制链接链接已复制到粘贴板!
- 描述
path 定义用于修改传入请求路径的参数。然后,使用修改后的路径来构建
Location
标头。如果为空,请求路径将按原样使用。支持:扩展
- 类型
-
object
- 必填
-
type
-
属性 | 类型 | 描述 |
---|---|---|
|
| ReplaceFullPath 指定在重写或重定向期间替换请求的完整路径的值。 |
|
| replacePrefixMatch 指定在重写或重定向期间替换请求的前缀匹配的值。例如,对 "/foo/bar" 的请求具有与 "/foo" 匹配的前缀,而 替换PrefixMatch 为 "/xyz" 将会被修改为 "/xyz/bar"。
请注意,这与 PathPrefix 匹配类型的行为匹配。这与完整 path 元素匹配。path 元素引用由
replacePrefixMatch 仅与 请求路径 | 前缀匹配 | 替换前缀 | 修改路径 |
|
| type 定义路径修饰符的类型。以后的 API 发行版本中可能会添加额外的类型。 请注意,值可能会添加到这个 enum 中,实现必须确保未知值不会造成崩溃。
此处的未知值必须实现将 Route 的 Accepted Condition 设置为 |
17.1.41. .spec.rules[].filters[].responseHeaderModifier 复制链接链接已复制到粘贴板!
- 描述
ResponseHeaderModifier 为修改响应标头的过滤器定义模式。
支持:扩展
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
|
| 在操作前,将给定标头(名称、值)添加到请求。它将附加到与标头名称关联的任何现有值。 input: GET /foo HTTP/1.1 my-header: foo config: add: - name: "my-header" value: "bar,baz" 输出:GET /foo HTTP/1.1 my-header: foo,bar,baz |
|
| HTTPHeader 代表 RFC 7230 定义的 HTTP 标头名称和值。 |
|
| 在操作前,从 HTTP 请求中删除给定标头。Remove 的值是 HTTP 标头名称列表。请注意,标头名称区分大小写(请参阅 https://datatracker.ietf.org/doc/html/rfc2616#section-4.2)。 input: GET /foo HTTP/1.1 my-header1: foo my-header2: bar my-header3: baz config: remove: ["my-header1", "my-header3"] 输出:GET /foo HTTP/1.1 my-header2: bar |
|
| 在操作前,使用给定标头(名称、值)设置覆盖请求。 input: GET /foo HTTP/1.1 my-header: foo config: set: - name: "my-header" value: "bar" 输出:GET /foo HTTP/1.1 my-header: bar |
|
| HTTPHeader 代表 RFC 7230 定义的 HTTP 标头名称和值。 |
- 描述
在操作前,将给定标头(名称、值)添加到请求。它将附加到与标头名称关联的任何现有值。
input: GET /foo HTTP/1.1 my-header: foo
config: add: - name: "my-header" value: "bar,baz"
输出:GET /foo HTTP/1.1 my-header: foo,bar,baz
- 类型
-
数组
- 描述
- HTTPHeader 代表 RFC 7230 定义的 HTTP 标头名称和值。
- 类型
-
object
- 必填
-
name
-
value
-
属性 | 类型 | 描述 |
---|---|---|
|
| name 是要匹配的 HTTP 标头的名称。名称匹配必须不区分大小写。(请参阅 https://tools.ietf.org/html/rfc7230#section-3.2)。 如果多个条目指定了等同的标头名称,则第一个带有等效名称的条目必须视为匹配项。带有等同标头名称的后续条目必须忽略。由于标头名称的问题单识别,"foo"和 "Foo" 被视为等同。 |
|
| value 是要匹配的 HTTP 标头的值。 |
- 描述
在操作前,使用给定标头(名称、值)设置覆盖请求。
input: GET /foo HTTP/1.1 my-header: foo
config: set: - name: "my-header" value: "bar"
输出:GET /foo HTTP/1.1 my-header: bar
- 类型
-
数组
- 描述
- HTTPHeader 代表 RFC 7230 定义的 HTTP 标头名称和值。
- 类型
-
object
- 必填
-
name
-
value
-
属性 | 类型 | 描述 |
---|---|---|
|
| name 是要匹配的 HTTP 标头的名称。名称匹配必须不区分大小写。(请参阅 https://tools.ietf.org/html/rfc7230#section-3.2)。 如果多个条目指定了等同的标头名称,则第一个带有等效名称的条目必须视为匹配项。带有等同标头名称的后续条目必须忽略。由于标头名称的问题单识别,"foo"和 "Foo" 被视为等同。 |
|
| value 是要匹配的 HTTP 标头的值。 |
17.1.46. .spec.rules[].filters[].urlRewrite 复制链接链接已复制到粘贴板!
- 描述
URLRewrite 为过滤器定义了一个 schema,用于在转发过程中修改请求。
支持:扩展
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
|
| hostname 是转发过程中用于替换 Host 标头值的值。 支持:扩展 |
|
| path 定义路径重写。 支持:扩展 |
17.1.47. .spec.rules[].filters[].urlRewrite.path 复制链接链接已复制到粘贴板!
- 描述
path 定义路径重写。
支持:扩展
- 类型
-
object
- 必填
-
type
-
属性 | 类型 | 描述 |
---|---|---|
|
| ReplaceFullPath 指定在重写或重定向期间替换请求的完整路径的值。 |
|
| replacePrefixMatch 指定在重写或重定向期间替换请求的前缀匹配的值。例如,对 "/foo/bar" 的请求具有与 "/foo" 匹配的前缀,而 替换PrefixMatch 为 "/xyz" 将会被修改为 "/xyz/bar"。
请注意,这与 PathPrefix 匹配类型的行为匹配。这与完整 path 元素匹配。path 元素引用由
replacePrefixMatch 仅与 请求路径 | 前缀匹配 | 替换前缀 | 修改路径 |
|
| type 定义路径修饰符的类型。以后的 API 发行版本中可能会添加额外的类型。 请注意,值可能会添加到这个 enum 中,实现必须确保未知值不会造成崩溃。
此处的未知值必须实现将 Route 的 Accepted Condition 设置为 |
17.1.48. .spec.rules[].matches 复制链接链接已复制到粘贴板!
- 描述
matches 定义用于与传入 HTTP 请求匹配的规则的条件。每个匹配项都独立,例如,如果 满足任何 其中一个匹配项,则此规则将匹配。
例如,使用以下内容匹配配置:
matches: - path: value: "/foo" headers: - name: "version" value: "v2" - path: value: "/v2/foo"
要与此规则匹配的请求,请求必须满足两个条件的 EITHER:
-
带有
/foo
AND 前缀的路径包含标头版本: v2
-
/v2/foo
的路径前缀
有关如何指定应同时存在的多个匹配条件的信息,请参阅 HTTPRouteMatch 文档。
如果没有指定匹配项,则默认值是前缀路径与"/"匹配,其效果与每个 HTTP 请求匹配。
根据以下条件,从 HTTPRoutes MUST 生成的代理或 Load Balancer 路由配置会按照以下条件继续匹配。在适用路由中指定的所有规则中,必须为匹配项提供优先级:
- "exact"路径匹配。
- "前缀"路径与最大字符数匹配。
- 方法匹配.
- 匹配的最大标头数。
- 匹配的最大查询参数数。
注: RegularExpression 路径匹配的优先级是特定于实现的。
如果绑定仍存在于多个路由中,则按以下条件顺序确定匹配的优先级,继续绑定:
- 基于创建时间戳的最旧的路由。
- 路由首先以字母顺序显示,使用 "{namespace}/{name}"。
如果 HTTPRoute 中仍然存在 ties,则匹配的优先级必须授予 FIRST 匹配规则(按列表顺序),符合上述条件。
如果没有与请求成功附加到父请求的规则时,将返回 HTTP 404 状态代码 MUST。
-
带有
- 类型
-
数组
17.1.49. .spec.rules[].matches[] 复制链接链接已复制到粘贴板!
- 描述
HTTPRouteMatch 定义用于将请求与给定操作匹配的 predicate。多个匹配类型是 AND,即仅在满足所有条件时,匹配才会评估为 true。
例如,只有在其路径以
/foo
AND 开头且包含version: v1
标头时,以下匹配才会匹配 HTTP 请求:match:
path: value: "/foo" headers: - name: "version" value "v1"
path: value: "/foo" headers: - name: "version" value "v1"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
|
| 标头指定 HTTP 请求标头匹配器。多个匹配值是 ANDed,这意味着请求必须与所有指定的标头匹配才能选择路由。 |
|
| HTTPHeaderMatch 描述了如何通过匹配 HTTP 请求标头来选择 HTTP 路由。 |
|
| method 指定 HTTP 方法匹配器。指定后,只有在请求具有指定方法时,此路由才会匹配。 支持:扩展 |
|
| path 指定 HTTP 请求路径匹配器。如果没有指定此字段,则会提供与 "/" 路径上的默认前缀匹配。 |
|
| queryParams 指定 HTTP 查询参数 matchers。多个匹配值是 ANDed,这意味着请求必须与所有指定的查询参数匹配,才能选择路由。 支持:扩展 |
|
| HTTPQueryParamMatch 描述了如何通过匹配 HTTP 查询参数来选择 HTTP 路由。 |
17.1.50. .spec.rules[].matches[].headers 复制链接链接已复制到粘贴板!
- 描述
- 标头指定 HTTP 请求标头匹配器。多个匹配值是 ANDed,这意味着请求必须与所有指定的标头匹配才能选择路由。
- 类型
-
数组
17.1.51. .spec.rules[].matches[].headers[] 复制链接链接已复制到粘贴板!
- 描述
- HTTPHeaderMatch 描述了如何通过匹配 HTTP 请求标头来选择 HTTP 路由。
- 类型
-
object
- 必填
-
name
-
value
-
属性 | 类型 | 描述 |
---|---|---|
|
| name 是要匹配的 HTTP 标头的名称。名称匹配必须不区分大小写。(请参阅 https://tools.ietf.org/html/rfc7230#section-3.2)。 如果多个条目指定了等同的标头名称,则只有具有等同名称的第一个条目才被认为是匹配的。带有等同标头名称的后续条目必须忽略。由于标头名称的问题单识别,"foo"和 "Foo" 被视为等同。 当在 HTTP 请求中重复标头时,它是特定于实现的行为,就像表示它的方式一样。通常,代理应遵循 RFC: https://www.rfc-editor.org/rfc/rfc7230.html#section-3.2.2 的有关处理重复标头的指导,带有 "Set-Cookie" 的特殊处理。 |
|
| type 指定如何与标头值匹配。 支持:Core (Exact) 支持:特定于实施(RegularExpression) 由于 RegularExpression HeaderMatchType 有特定于实现的一致性,实现可以支持 POSIX、PCRE 或正则表达式的任何其他密码。请阅读实施的文档,以确定支持的问题。 |
|
| value 是要匹配的 HTTP 标头的值。 |
17.1.52. .spec.rules[].matches[].path 复制链接链接已复制到粘贴板!
- 描述
- path 指定 HTTP 请求路径匹配器。如果没有指定此字段,则会提供与 "/" 路径上的默认前缀匹配。
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
|
| type 指定如何与路径值匹配。 支持:Core (Exact、PathPrefix) 支持:特定于实施(RegularExpression) |
|
| 要匹配的 HTTP 路径的值。 |
17.1.53. .spec.rules[].matches[].queryParams 复制链接链接已复制到粘贴板!
- 描述
queryParams 指定 HTTP 查询参数 matchers。多个匹配值是 ANDed,这意味着请求必须与所有指定的查询参数匹配,才能选择路由。
支持:扩展
- 类型
-
数组
17.1.54. .spec.rules[].matches[].queryParams[] 复制链接链接已复制到粘贴板!
- 描述
- HTTPQueryParamMatch 描述了如何通过匹配 HTTP 查询参数来选择 HTTP 路由。
- 类型
-
object
- 必填
-
name
-
value
-
属性 | 类型 | 描述 |
---|---|---|
|
| name 是要匹配的 HTTP 查询参数的名称。这必须是完全匹配。(请参阅 https://tools.ietf.org/html/rfc7230#section-2.7.3)。 如果多个条目指定了等同的查询参数名称,则只有具有等同名称的第一个条目才被认为匹配。带有等效查询参数名称的后续条目必须忽略。 如果在 HTTP 请求中重复查询参数,则行为会以未定义状态,因为不同的数据平面具有不同的功能。但是,如果数据平面支持,建议 实现与参数的第一个值匹配,因为此行为在网关 API 外的其他负载均衡上下文中预期。 用户 SHOULD 不会基于重复查询参数路由流量,以保护自身免受实施中潜在的差异。 |
|
| type 指定如何与查询参数值匹配。 支持:扩展(Exact) 支持:特定于实施(RegularExpression) 由于 RegularExpression QueryParamMatchType 有特定于实现的一致性,实现可以支持 POSIX、PCRE 或正则表达式的任何其他密码。请阅读实施的文档,以确定支持的问题。 |
|
| value 是要匹配的 HTTP 查询参数的值。 |
17.1.55. .spec.rules[].timeouts 复制链接链接已复制到粘贴板!
- 描述
超时定义可以为 HTTP 请求配置的超时。
支持:扩展
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
|
| BackendRequest 为从网关到后端的独立请求指定一个超时。这涵盖了请求从后端收到完整响应时从网关开始发送到的时间。 将超时设置为零持续时间(例如"0s")SHOULD 完全禁用超时。无法完全禁用超时的实现,而是将零持续时间解析为可以设置超时的最长时间可能的值。 一个整个客户端 HTTP 事务,其网关由 Request 超时涵盖,可能会导致从网关到目标后端的调用数,例如如果支持自动重试。 BackendRequest 的值必须是 Gateway API Duration 字符串,由 GEP-2257 定义。当未指定此字段时,其行为是特定于实现的;在指定时,BackendRequest 的值不得超过 Request 超时的值(因为 Request 超时包含 BackendRequest 超时)。 支持:扩展 |
|
| request 指定网关响应 HTTP 请求的最长持续时间。如果网关无法在达到此截止时间前响应,网关必须返回超时错误。
例如,如果客户端请求的时间超过 将超时设置为零持续时间(例如"0s")SHOULD 完全禁用超时。无法完全禁用超时的实现,而是将零持续时间解析为可以设置超时的最长时间可能的值。 此超时旨在尽可能接近整个请求响应事务,尽管实施 MAY 选择在收到整个请求流后启动超时,而不是在客户端启动事务后立即执行。 Request 的值是一个网关 API Duration 字符串,由 GEP-2257 定义。如果未指定此字段,则请求超时行为是特定于实现的。 支持:扩展 |
17.1.56. .status 复制链接链接已复制到粘贴板!
- 描述
- Status 定义 HTTPRoute 的当前状态。
- 类型
-
object
- 必填
-
parents
-
属性 | 类型 | 描述 |
---|---|---|
|
| parents 是与路由关联的父资源(通常是网关)的列表,以及每个父对象的路由的状态。当此路由附加到父路由时,管理父路由的控制器必须在控制器第一次看到路由时向这个列表添加一个条目,并在修改路由或网关时更新条目。 请注意,无法通过此 API 实现解析的父引用不会添加到此列表中。此 API 的实现只能为它们负责的网关/父资源填充 Route 状态。 此列表中最多表示 32 个网关。空列表表示路由尚未附加到任何网关。 |
|
| RouteParentStatus 描述了与相关 Parent 相关的路由的状态。 |
17.1.57. .status.parents 复制链接链接已复制到粘贴板!
- 描述
parents 是与路由关联的父资源(通常是网关)的列表,以及每个父对象的路由的状态。当此路由附加到父路由时,管理父路由的控制器必须在控制器第一次看到路由时向这个列表添加一个条目,并在修改路由或网关时更新条目。
请注意,无法通过此 API 实现解析的父引用不会添加到此列表中。此 API 的实现只能为它们负责的网关/父资源填充 Route 状态。
此列表中最多表示 32 个网关。空列表表示路由尚未附加到任何网关。
- 类型
-
数组
17.1.58. .status.parents[] 复制链接链接已复制到粘贴板!
- 描述
- RouteParentStatus 描述了与相关 Parent 相关的路由的状态。
- 类型
-
object
- 必填
-
controllerName
-
parentRef
-
属性 | 类型 | 描述 |
---|---|---|
|
| conditions 描述了与网关相关的路由状态。请注意,路由的可用性也取决于网关自己的状态条件和侦听器状态。 如果 Route 的 ParentRef 指定支持路由路由的现有网关,且网关的控制器有足够的访问权限,那么该网关的控制器必须在 Route 上设置 "Accepted" 条件,以指示网关接受或拒绝该路由,以及原因。 如果网关实施至少一个 Route 规则,则路由必须被视为"接受"。 有些情况下,因为缺少控制器可见性,可能无法设置 "Accepted" 条件,其中包括: * Route 指的是不存在的父对象。* Route 是控制器不支持的类型。* Route 位于控制器无法访问的命名空间中。 |
|
| condition 包含此 API 资源当前状态的一个方面的详细信息。 |
|
| ControllerName 是一个 domain/path 字符串,表示写入此状态的控制器的名称。这与 GatewayClass 上的 controllerName 字段对应。 示例:"example.net/gateway-controller"。 此字段的格式是 DOMAIN "/" PATH,其中 DOMAIN 和 PATH 是有效的 Kubernetes 名称(https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names)。 在编写状态时,控制器需要填充此字段。当不再需要时,控制器应确保清理填充其 ControllerName 状态的条目。 |
|
| ParentRef 与 spec 中的 ParentRef 对应,这个 RouteParentStatus struct 描述其状态。 |
17.1.59. .status.parents[].conditions 复制链接链接已复制到粘贴板!
- 描述
conditions 描述了与网关相关的路由状态。请注意,路由的可用性也取决于网关自己的状态条件和侦听器状态。
如果 Route 的 ParentRef 指定支持路由路由的现有网关,且网关的控制器有足够的访问权限,那么该网关的控制器必须在 Route 上设置 "Accepted" 条件,以指示网关接受或拒绝该路由,以及原因。
如果网关实施至少一个 Route 规则,则路由必须被视为"接受"。
有些情况下,因为缺少控制器可见性,可能无法设置 "Accepted" 条件,其中包括:
- Route 指的是不存在的父项。
- Route 是控制器不支持的类型。
- Route 位于控制器无法访问的命名空间中。
- 类型
-
数组
17.1.60. .status.parents[].conditions[] 复制链接链接已复制到粘贴板!
- 描述
- condition 包含此 API 资源当前状态的一个方面的详细信息。
- 类型
-
object
- 必填
-
lastTransitionTime
-
message
-
reason
-
status
-
type
-
属性 | 类型 | 描述 |
---|---|---|
|
| lastTransitionTime 是条件从一个状态转换到另一个状态最后一次的时间。这应该是底层条件变化的时间。如果为未知,则使用 API 字段更改的时间是可以接受的。 |
|
| Message 是人类可读的消息,指示有关转换的详细信息。这可能是一个空字符串。 |
|
| observedGeneration 代表 .metadata.generation,这是条件设置所基于的条件。例如,如果 .metadata.generation 目前为 12,但 .status.conditions[x].observedGeneration 是 9,则代表条件与实例的当前状态已不匹配。 |
|
| reason 包含程序标识符,指示条件最后一次转换的原因。特定条件类型的制作者可能会定义预期的值和此字段的含义,以及这些值是否被视为有保证的 API。该值应该是 CamelCase 字符串。此字段可能不是空的。 |
|
| 条件的状态,True, False, Unknown 之一。 |
|
| CamelCase 或 foo.example.com/CamelCase 中的条件类型。 |
17.1.61. .status.parents[].parentRef 复制链接链接已复制到粘贴板!
- 描述
- ParentRef 与 spec 中的 ParentRef 对应,这个 RouteParentStatus struct 描述其状态。
- 类型
-
object
- 必填
-
name
-
属性 | 类型 | 描述 |
---|---|---|
|
| 组是引用的组。如果未指定,"gateway.networking.k8s.io" 将推断出来。要设置核心 API 组(如 "Service" kind referent),Group 必须明确设置为 "" (空字符串)。 支持:Core |
|
| kind 是引用的类型。 支持"Core"支持的父资源有两种: * gateway (Gateway conformance profile)* Service (Mesh conformance profile, only ClusterIP Services) 对其他资源的支持是特定于实施的。 |
|
| name 是引用的名称。 支持:Core |
|
| namespace 是引用的命名空间。如果未指定,这指的是 Route 的本地命名空间。 请注意,对于跨命名空间边界的 ParentRefs 有特定的规则。只有跨命名空间引用被引用的命名空间中明确允许时才有效。例如: Gateway 具有 AllowedRoutes 字段,ReferenceGrant 提供了一种通用方法来启用其他类型的跨命名空间引用。 支持:Core |
|
| port 是此 Route 目标的网络端口。它可以根据父资源的类型进行解释。
当父资源是网关时,此目标是在支持此类 Route (并选择此路由)的指定端口上侦听所有的监听程序。不建议设置 实施 MAY 选择支持其他父资源。支持其他类型的父资源的实施必须清楚地记录/如果端口的解释方式。 对于状态,只要父资源接受部分,则附加被视为成功。例如,网关监听程序可以通过 Route kind、namespace 或 hostname 来限制哪些 Routes 可以附加到它们。如果 2 网关监听程序的 1 个接受来自引用路由的附件,则路由必须被视为成功附加。如果没有网关监听程序接受来自此 Route 的附件,则路由必须被视为与网关分离。 支持:扩展 |
|
| SectionName 是目标资源中的一个部分的名称。在以下资源中,sectionName 被解释为: * gateway: Listener 名称。当同时指定了 Port (experimental)和 SectionName 时,所选监听器的名称和端口必须与两个指定的值匹配。* service: 端口名称。当同时指定了 Port (experimental)和 SectionName 时,所选监听器的名称和端口必须与两个指定的值匹配。 实施 MAY 选择支持将路由附加到其他资源。如果是这种情况,它们必须清楚地记录 SectionName 的解释方式。 如果未指定(空字符串),这将引用整个资源。对于状态,如果父资源中的至少一个部分接受它,则附加被视为成功。例如,网关监听程序可以通过 Route kind、namespace 或 hostname 来限制哪些 Routes 可以附加到它们。如果 2 网关监听程序的 1 个接受来自引用路由的附件,则路由必须被视为成功附加。如果没有网关监听程序接受来自此 Route 的附件,则路由必须被视为与网关分离。 支持:Core |