配置 GatewayAPI Route
目录
概述前提条件配置通过 Web Console 配置创建 HTTPRoute创建 TCP/UDP Route创建 GRPCRoute创建 TLSRoute通过 YAML 配置Route 字段参考发布到侦听器后端HostnamesRulesHTTPRoute 参考GRPCRoute 匹配和过滤器参考TLSRoute 参考视图拓扑下一步相关任务商标声明概述
本文介绍如何在 Gateway 就绪后配置 Route 资源。Route 会附加到一个或多个网关侦听器,并定义如何将匹配的流量转发到后端服务。
在推荐的工作流中,本文位于配置 GatewayAPI Gateway之后,以及配置 GatewayAPI Policy之前。
除了创建和更新操作外,本文还介绍 ACP Web Console 提供的其他 Route 查看功能。
前提条件
请确保在继续操作前已完成以下事项:
- 阅读配置 GatewayAPI Gateway以了解侦听器、附加规则和
EnvoyProxy - 创建一个
Gateway,以供Route附加到该对象
本文首先分别介绍每种 Route 类型,然后提供 YAML 示例,最后在共享参考部分说明通用的 Route 概念。
配置
Route 会附加到 Gateway 上的一个或多个侦听器。可选择的侦听器取决于 Route 类型、侦听器协议以及侦听器允许的 Route 命名空间设置。
Route 也可以附加到外部 ListenerSet 侦听器。请参阅配置 Gateway API ListenerSet。
通过 Web Console 配置
- 导航到
Alauda Container Platform -> Networking -> Gateway -> Routes - 点击
Create Route按钮 - 选择 Route 类型(HTTPRoute、TCPRoute、UDPRoute、GRPCRoute 或 TLSRoute)
创建 HTTPRoute
Options 配置
Options 字段用于配置高级流量管理设置:
创建 TCP/UDP Route
创建 GRPCRoute
创建 TLSRoute
通过 YAML 配置
以下最小示例创建一个 HTTPRoute,将其附加到 demo Gateway 的 https 侦听器,并将匹配的流量转发到后端 Service。
如果需要更多 Route 类型和高级 HTTPRoute 选项,请使用以下完整示例:
Route 字段参考
每个 Route 都是由 GatewayAPI 规范定义的 CR。有关每种 Route 类型的字段和配置选项的详细信息,请参阅官方文档:
发布到侦听器
在 Web Console 中
在 Web Console 中,可以选择多个侦听器来发布 Route。可用的侦听器候选项会根据以下条件进行筛选:
- 用户权限:您必须有权访问网关的命名空间(项目必须包含此命名空间)。
- Route 命名空间允许列表:网关侦听器允许的 Route 命名空间必须包含 Route 的命名空间。
- Route 类型匹配:Route 的类型(HTTPRoute、GRPCRoute 等)必须与侦听器允许的 Route 类型匹配。
对于更复杂的跨命名空间场景,请参阅附加到在其他命名空间中创建的网关。
附加到 ListenerSet
Web Console 还会列出已接受的 ListenerSet 侦听器。发布 Route 时,选择 ListenerSet 和侦听器名称。ListenerSet 命名空间、父 Gateway 许可、侦听器协议以及侦听器 allowedRoutes 必须允许此次附加。
在 YAML 中
sectionName是侦听器名称。- Route 只能附加到支持其特定类型的侦听器。
- 默认情况下,Route 只能附加到
Gateway与其位于同一命名空间的侦听器。
对于跨命名空间附加,请参阅附加到在其他命名空间中创建的网关。
要在 YAML 中附加到 ListenerSet,请将 parentRefs[].kind 设置为 ListenerSet,将 name 和 namespace 设置为 ListenerSet,并将 sectionName 设置为侦听器名称:
有关更多信息,请参阅配置 GatewayAPI ListenerSet。
后端
定义应将匹配请求转发到的目标服务。
每个服务都可以包含 weight 字段,用于指定应路由到该服务的流量比例。
Hostnames
hostnames 字段受 HTTPRoute、GRPCRoute 和 TLSRoute 支持。TCPRoute 和 UDPRoute 不使用此字段。
hostnames 是字符串数组,遵循Hostname 交集规则。
Rules
每个 Route 可以包含多个规则。每条规则由以下组件组成:
Matches
定义请求必须满足的条件,满足这些条件后请求才会由此规则进行路由。
一条规则可以包含多个 Match:
- 每个 Match 由多个条件组成(例如路径、标头、查询参数和方法)
- 单个 Match 内部的条件使用 AND 逻辑(必须全部满足)
- 各个 Match 之间使用 OR 逻辑(满足任意一个 Match 即可)
示例:如果 Match-1 要求 path=/api AND header=v1,而 Match-2 要求 query=test,则当请求匹配 (path=/api AND header=v1) OR (query=test) 中的任意一个时,该请求就会被路由。
不同 Route 类型使用通用的 Match 结构,但支持的 Match 条件取决于 Route 类型。例如,HTTPRoute 和 GRPCRoute 支持不同的 Match 条件集合。
Filters
指定要应用于请求或响应的转换或修改。
不同 Route 类型使用通用的 Filter 概念,但支持的 Filter 类型取决于 Route 类型。
HTTPRoute 参考
以下 Match 条件、Filter 类型和高级选项用于 HTTPRoute。
Match 条件类型
匹配条件参考
过滤器类型
注意:
RequestRedirect和URLRewrite不能在同一规则中同时使用ReplacePrefixMatch仅与PathPrefixHTTPRouteMatch 兼容- 根据 RFC 7230,标头名称不区分大小写
- 同一标头的多个值必须使用 RFC 7230 逗号分隔格式
过滤器参考
选项
选项部分为 HTTPRoute 提供高级流量管理功能,包括超时、重试和会话持久性设置。
超时
- 请求超时在接收完整客户端请求后开始计时,并涵盖整个事务;如果发生重试,该事务可能包括多次后端调用。
- 指定后端请求超时时,该值必须 ≤ 请求超时。
- 选择“默认”时,该字段设置为 nil(使用实现默认值)。
- 选择“无限制”时,该字段设置为“0s”(最大可能值)。
重试
- 默认情况下,重试已禁用。如果未配置重试字段或该字段为空,网关将不会重试任何失败的请求。
- 必须明确配置重试次数和重试条件,才能启用重试功能。
- 在 Web 控制台中配置重试时,如果移除所有重试配置项,该字段将设置为 nil。
会话持久性
配置会话亲和性设置,以确保来自同一客户端的请求路由到同一后端。
GRPCRoute 匹配和过滤器参考
以下匹配条件和过滤器类型由 GRPCRoute 使用。
GRPCRoute 匹配
GRPCRoute 支持以下匹配类型:
GRPCRoute 过滤器
GRPCRoute 仅支持 RequestHeaderModifier 过滤器:
GRPCRoute 不支持超时、重试或会话持久性等选项。
TLSRoute 参考
以下行为特定于 TLSRoute。
TLSRoute主机名是可选的。如果监听器具有主机名,但TLSRoute没有,则TLSRoute会自动继承监听器的主机名。TLSRoute只能附加到Passthrough模式下使用TLS协议的监听器。
视图
拓扑
以下功能是 ACP Web Console 提供的其他查看功能。
拓扑选项卡以可视化方式呈现路由及其关联资源。它会显示附加到路由的所有策略,以及其依赖资源,例如 SecurityPolicy 引用的 secret。
此功能目前仅适用于 HTTPRoute。
下一步
将路由附加到监听器后,如果需要高级流量或安全策略,请继续配置 GatewayAPI 策略。如需了解更多操作示例,请参阅Envoy Gateway 任务。
相关任务
商标声明
Envoy® 是 Linux Foundation 的注册商标。
Alauda 是独立供应商。本产品与 Linux Foundation 无关,也未获得其认可或赞助。所有商标均为其各自所有者的财产,此处仅用于标识目的。