配置 GatewayAPI Route
目录
概述前提条件配置通过 Web Console 配置创建 HTTPRoute创建 TCP/UDP Route创建 GRPCRoute创建 TLSRoute通过 YAML 配置Route 字段参考发布到监听器BackendHostnamesRulesHTTPRoute 参考GRPCRoute Match 和 Filter 参考TLSRoute 参考视图Topology下一步相关任务概述
本文档说明在 Gateway 准备就绪后如何配置 Route 资源。Route 会附加到一个或多个 gateway 监听器,并定义匹配流量如何转发到后端服务。
在推荐的工作流程中,本文档位于 Configure GatewayAPI Gateway 之后、Configure GatewayAPI Policy 之前。
除创建和更新操作外,本文档还介绍了 ACP Web Console 提供的额外 route 查看能力。
前提条件
在继续之前,请确保已完成以下步骤:
- 阅读 Configure GatewayAPI Gateway,了解监听器、附加规则和
EnvoyProxy - 创建一个
Route要附加到的Gateway
本文档先分别介绍每种 route 类型,然后提供 YAML 示例,最后在共享参考部分解释通用的 route 概念。
配置
Route 会附加到 Gateway 上的一个或多个监听器。可选择的监听器取决于 route 类型、监听器协议以及监听器允许的 route 命名空间设置。
通过 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 类型的字段和配置选项的详细信息,请参阅官方文档:
- HTTPRoute specification
- TCPRoute specification
- UDPRoute specification
- GRPCRoute specification
- TLSRoute specification
发布到监听器
在 Web Console 中
在 Web Console 中,你可以选择多个监听器来发布 route。可用的监听器候选项会根据以下条件进行过滤:
- 用户权限:你必须有权访问 gateway 的命名空间(项目必须包含该命名空间)。
- Route 命名空间 allowlist:gateway 监听器允许的 route 命名空间必须包含 route 的命名空间。
- Route kind 匹配:route 的 kind(HTTPRoute、GRPCRoute 等)必须与监听器允许的 route kinds 匹配。
对于更复杂的跨命名空间场景,请参阅附加到在其他命名空间中创建的 gateway。
在 YAML 中
sectionName是监听器名称。- Route 只能附加到支持其特定 kind 的监听器。
- 默认情况下,route 只能附加到
Gateway位于同一命名空间的监听器。
对于跨命名空间附加,请参阅附加到在其他命名空间中创建的 gateway。
Backend
定义应将匹配请求转发到的目标服务。
每个 service 都可以有一个 weight 字段,用于指定路由到该 service 的流量比例。
Hostnames
hostnames 字段受 HTTPRoute、GRPCRoute 和 TLSRoute 支持。TCPRoute 和 UDPRoute 不使用此字段。
hostnames 是一个字符串数组。它遵循 Hostname Intersection Rules。
Rules
每个 route 可以包含多个规则。每个规则由以下组件组成:
Matches
定义请求必须满足的条件,才能由该规则路由。
一个规则可以有多个 match:
- 每个 match 由多个条件组成(例如 path、headers、query parameters、method)
- match 内部 的条件使用 AND 逻辑(必须全部满足)
- match 之间 使用 OR 逻辑(任意一个 match 即可满足规则)
示例:如果 Match-1 要求 path=/api AND header=v1,而 Match-2 要求 query=test,那么当请求满足 (path=/api AND header=v1) OR (query=test) 时会被路由。
match 结构在不同 route 类型之间是通用的,但支持的 match 条件取决于 route 类型。例如,HTTPRoute 和 GRPCRoute 支持不同的 match 条件集合。
Filters
指定要应用于请求或响应的转换或修改。
filter 概念在不同 route 类型之间是通用的,但支持的 filter 类型取决于 route 类型。
HTTPRoute 参考
以下 match 条件、filter 类型和高级选项用于 HTTPRoute。
Match Condition Types
Match Condition References
Filter Types
注意:
RequestRedirect和URLRewrite不能在同一个 rule 中一起使用ReplacePrefixMatch仅与PathPrefixHTTPRouteMatch 兼容- 根据 RFC 7230,header 名称不区分大小写
- 同一 header 的多个值必须使用 RFC 7230 以逗号分隔的格式
Filter References
Options
Options 部分为 HTTPRoute 提供高级流量管理能力,包括超时、重试和会话保持设置。
Timeouts
- Request Timeout 在收到完整 client request 后开始计时,并覆盖完整事务;如果发生重试,可能包含多次 backend 调用。
- 在指定时,Backend Request Timeout 必须小于或等于 Request Timeout。
- 选择 “Default” 时,该字段会被设置为 nil(使用实现默认值)。
- 选择 “Unlimited” 时,该字段会被设置为 "0s"(可达到的最大值)。
Retry
- 默认情况下,重试是禁用的。如果未配置 retry 字段或其为空,gateway 将不会重试任何失败的请求。
- 必须显式配置重试次数和重试条件,才能启用重试功能。
- 在 Web Console 中配置重试时,如果你移除了所有重试配置项,该字段会被设置为 nil。
Session Persistence
配置会话亲和性设置,以确保来自同一客户端的请求路由到同一个后端。
GRPCRoute Match 和 Filter 参考
以下 match 条件和 filter 类型用于 GRPCRoute。
GRPCRoute Matches
GRPCRoute 支持以下 match 类型:
GRPCRoute Filters
GRPCRoute 仅支持 RequestHeaderModifier filter:
GRPCRoute 不支持超时、重试或会话保持等 Options。
TLSRoute 参考
以下行为是 TLSRoute 特有的。
TLSRoute的 hostnames 是可选的。如果监听器有 hostname,但TLSRoute没有,则TLSRoute会自动继承监听器的 hostname。TLSRoute只能附加到处于Passthrough模式的TLS协议监听器。
视图
Topology
以下功能是 ACP Web Console 提供的额外查看能力。
Topology 选项卡以可视化方式展示 route 及其关联资源。它会显示附加到该 route 的所有 policy,以及它们的依赖资源,例如被 SecurityPolicy 引用的 secrets。
此功能当前仅适用于 HTTPRoute。
下一步
在 route 已附加到监听器后,如果你需要高级流量或安全策略,请继续阅读 Configure GatewayAPI Policy。更多操作示例请参阅 Tasks for Envoy Gateway。