- 资源:GrpcRoute
- RouteRule
- RouteMatch
- MethodMatch
- 类型
- HeaderMatch
- 类型
- RouteAction
- 目标
- FaultInjectionPolicy
- 延迟
- Abort
- RetryPolicy
- StatefulSessionAffinityPolicy
- 方法
资源:GrpcRoute
GrpcRoute 是用于定义由 Mesh 或网关资源路由的 gRPC 流量的路由方式的资源。
JSON 表示法 |
---|
{
"name": string,
"selfLink": string,
"createTime": string,
"updateTime": string,
"labels": {
string: string,
...
},
"description": string,
"hostnames": [
string
],
"meshes": [
string
],
"gateways": [
string
],
"rules": [
{
object ( |
字段 | |
---|---|
name |
必需。GrpcRoute 资源的名称。它与 |
selfLink |
仅限输出。此资源的服务器定义网址 |
createTime |
仅限输出。创建资源时的时间戳。 时间戳采用 RFC3339 世界协调时间(UTC,即“祖鲁时”)格式,精确到纳秒,最多九个小数位。示例: |
updateTime |
仅限输出。资源更新的时间戳。 时间戳采用 RFC3339 世界协调时间(UTC,即“祖鲁时”)格式,精确到纳秒,最多九个小数位。示例: |
labels |
可选。与 GrpcRoute 资源关联的标签标记集。 包含一系列 |
description |
可选。资源的自由文本说明。长度上限为 1024 个字符。 |
hostnames[] |
必需。服务主机名,以及此路由描述流量的可选端口。 格式: 主机名是网络主机的完全限定域名。这与 RFC 1123 中对主机名的定义一致,但有 2 个值得注意的例外情况:- 不允许使用 IP 地址。- 主机名可以带有通配符标签 ( 主机名可以是“精确”即不含网络主机终止点的域名(例如 请注意,根据 RFC1035 和 RFC1123,标签必须由小写字母数字字符或“-”组成,并以字母数字字符开头和结尾。不允许使用其他标点符号。 与网格或网关关联的路由必须具有唯一的主机名。如果您尝试附加多个具有冲突主机名的路由,则配置将被拒绝。 例如,虽然可以将主机名 如果指定了端口,则 gRPC 客户端必须使用带有端口的通道 URI(即“xds:///service:123”)才能匹配此规则,否则必须提供不带端口的 URI(即“xds:///service”)。 |
meshes[] |
可选。Meshes 定义了此 GrpcRoute 附加到的网格列表,作为路由规则之一来路由网格提供的请求。 每个网格引用都应与模式匹配: |
gateways[] |
可选。网关定义了一个与此 GrpcRoute 相连的网关的列表,将其作为路由规则之一,用于路由由该网关处理的请求。 每个网关引用都应与以下模式匹配: |
rules[] |
必需。用于定义如何路由流量的详细规则列表。 在单个 GrpcRoute 中,系统会执行与第一个匹配的 GrpcRoute.RouteRule 关联的 GrpcRoute.RouteAction。必须提供至少一条规则。 |
RouteRule
描述如何路由流量。
JSON 表示法 |
---|
{ "matches": [ { object ( |
字段 | |
---|---|
matches[] |
可选。匹配定义用于将规则与传入的 gRPC 请求进行匹配的条件。每项匹配都是独立的,也就是说,只要满足其中任一匹配条件,系统就会匹配此规则。如果未指定任何匹配字段,此规则将无条件匹配流量。 |
action |
必需。定义如何路由流量的详细规则。此字段为必填字段。 |
RouteMatch
匹配流量的条件。如果所有提供的字段都匹配,系统会将 RouteMatch 视为匹配。
JSON 表示法 |
---|
{ "headers": [ { object ( |
字段 | |
---|---|
headers[] |
可选。指定要匹配的标头集合。 |
method |
可选。要匹配的 gRPC 方法。如果此字段为空或被省略,则与所有方法匹配。 |
MethodMatch
指定方法的匹配项。
JSON 表示法 |
---|
{
"type": enum ( |
字段 | |
---|---|
type |
可选。指定如何匹配名称。如果未指定,则默认值为“EXACT”。 |
grpcService |
必需。要匹配的服务的名称。如果未指定,则匹配所有服务。 |
grpcMethod |
必需。要匹配的方法的名称。如果未指定,则匹配所有方法。 |
caseSensitive |
可选。指定匹配时区分大小写。默认值为 true。caseSensitive 不得与 REGULAR_EXPRESSION 类型一起使用。 |
类型
匹配的类型。
枚举 | |
---|---|
TYPE_UNSPECIFIED |
未指定。 |
EXACT |
仅与提供的确切名称匹配。 |
REGULAR_EXPRESSION |
将 grpcMethod 和 grpcService 解读为正则表达式。支持 RE2 语法。 |
HeaderMatch
与标头集合的匹配。
JSON 表示法 |
---|
{
"type": enum ( |
字段 | |
---|---|
type |
可选。指定如何与标头的值匹配。如果未指定,则系统会使用默认值 EXACT。 |
key |
必需。标头的键。 |
value |
必需。标头的值。 |
类型
匹配类型。
枚举 | |
---|---|
TYPE_UNSPECIFIED |
未指定。 |
EXACT |
将仅与提供的值完全匹配。 |
REGULAR_EXPRESSION |
将与值指定的前缀相符的路径进行匹配。支持 RE2 语法。 |
RouteAction
指定如何路由匹配的流量。
JSON 表示法 |
---|
{ "destinations": [ { object ( |
字段 | |
---|---|
destinations[] |
可选。流量应转发到的目标服务。如果指定了多个目的地,流量将根据这些目的地的权重字段在后端服务之间拆分。 |
faultInjectionPolicy |
可选。用于向流量注入故障的规范,以测试客户端对目标服务故障的弹性。在故障注入过程中,当客户端向目的地发送请求时,在将这些请求发送到目标服务之前,一定比例的请求可能会出现延迟。同样,系统也可以根据请求百分比来终止来自客户端的请求。 配置了 faultInjectionPolicy 的客户端将忽略超时和重试政策 |
timeout |
可选。指定选定路由的超时时长。超时的计算时间为:从请求已完全处理(即视频流结束)开始,直到响应完全处理为止。超时包括所有重试。 该时长以秒为单位,最多包含九个小数位,以“ |
retryPolicy |
可选。指定与此路由关联的重试政策。 |
statefulSessionAffinity |
可选。指定基于 Cookie 的有状态会话亲和性。 |
idleTimeout |
可选。指定所选路由的空闲超时时间。空闲超时是指没有在上行或下行连接上发送或接收字节的时间段。如果未设置,默认空闲超时时间为 1 小时。如果设置为 0 秒,则会停用超时。 该时长以秒为单位,最多包含九个小数位,以“ |
目标
流量将路由到的目标。
JSON 表示法 |
---|
{ // Union field |
字段 | |
---|---|
联合字段 destination_type 。指定流量将路由到的目标类型。destination_type 只能是下列其中一项: |
|
serviceName |
必需。流量要路由到的目标服务的网址。必须引用 BackendService 或 ServiceDirectoryService。 |
weight |
可选。指定转发到 serviceName 字段所引用的后端的请求比例。计算方式如下:- 权重/总和(此目的地列表中的权重)。对于非零值,此处定义的确切比例可能会与实际比例存在一些误差,具体取决于实现支持的精度。 如果只指定了 1 个 serviceName,并且其权重大于 0,则系统会将 100% 的流量转发到该后端。 如果为任何服务名称指定了权重,则需要为所有服务名称指定权重。 如果未为所有服务指定权重,则流量会按相等的比例分配给所有服务。 |
FaultInjectionPolicy
引入到流量中的故障注入规范,用于测试客户端对目标服务故障的弹性。在故障注入过程中,当客户端向目的地发送请求时,在将这些请求发送到目标服务之前,一定比例的请求可能会出现延迟。同样,可以对一定比例的请求取消来自客户端的请求。
JSON 表示法 |
---|
{ "delay": { object ( |
字段 | |
---|---|
delay |
向客户端请求注入延迟的规范。 |
abort |
取消客户端请求的规范。 |
延迟
指定在将客户端请求发送到目标位置之前如何作为故障注入的一部分延迟客户端请求。
JSON 表示法 |
---|
{ "fixedDelay": string, "percentage": integer } |
字段 | |
---|---|
fixedDelay |
在转发请求之前指定固定延迟时间。 该时长以秒为单位,最多包含九个小数位,以“ |
percentage |
将注入延迟时间的流量百分比。 值必须介于 [0, 100] 之间 |
取消
指定如何在将客户端请求发送到目标位置之前作为故障注入的一部分取消客户端请求。
JSON 表示法 |
---|
{ "httpStatus": integer, "percentage": integer } |
字段 | |
---|---|
httpStatus |
用于终止请求的 HTTP 状态代码。 该值必须介于 200 到 599 之间(包括这两个数值)。 |
percentage |
将取消的流量百分比。 该值必须介于 [0, 100] 之间 |
RetryPolicy
重试的规范。
JSON 表示法 |
---|
{ "retryConditions": [ string ], "numRetries": integer } |
字段 | |
---|---|
retryConditions[] |
|
numRetries |
指定允许的重试次数。此数字必须 >0.如果未指定,则默认为 1。 |
StatefulSessionAffinityPolicy
基于 Cookie 的有状态会话亲和性规范,其中日期平面提供“会话 Cookie”名为“GSSA”该方法会对特定目标主机进行编码,只要目标主机保持正常运行且健康状况良好,包含该 Cookie 的每个请求就会定向到该主机。
gRPC 无代理网格库或 Sidecar 代理将管理会话 Cookie,但客户端应用代码负责将 Cookie 从会话中的每个 RPC 复制到下一个 RPC。
JSON 表示法 |
---|
{ "cookieTtl": string } |
字段 | |
---|---|
cookieTtl |
必需。数据平面生成的 Set-Cookie 标头的 Cookie TTL 值。Cookie 的生命周期可以设置为 1 到 86400 秒(24 小时,含)之间的值。 该时长以秒为单位,最多包含九个小数位,以“ |
方法 |
|
---|---|
|
在给定的项目和位置中创建新的 GrpcRoute。 |
|
删除单个 GrpcRoute。 |
|
获取单个 GrpcRoute 的详细信息。 |
|
列出给定项目和位置中的 GrpcRoute。 |
|
更新单个 GrpcRoute 的参数。 |
|
针对指定资源设置访问权限控制政策。 |
|
返回调用者对指定资源拥有的权限。 |