ASMGrpcJsonTranscoder CRD说明

ASMGrpcJsonTranscoder用于进行JSON/HTTP-gRPC协议转码。本文介绍ASMGrpcJsonTranscoder的字段说明。

字段说明

字段

类型

是否必选

说明

workloadSelector

map<string, string>

通过一个或多个标签,指定配置生效的一组特定的Pod。标签搜索的范围限制在资源所在的配置命名空间。更多信息,请参见WorkloadSelector

isGateway

bool

配置为true,表示配置作用于网关。默认为false。

portNumber

int

对应的服务端口。若关联网关,对应该网关定义的端口值,即配置需要在网关上进行协议转码的服务端口(例如8080)。

services

string[]

指定配置在Proto文件中声明的服务。格式为{包名}.{服务名},例如:

services:
 - 'helloworld.Greeter'

protoDescriptorBin

string

生成的Proto Descriptor文件内容进行Base64编码后的结果。注意需要使用包含Base64编码内容。

transcodeFirst

bool

默认为false。如果指定为true,HTTP请求先经过转码,再进行其它处理。这可能影响一些对该请求依赖的流量处理能力。例如,对于自定义外部授权服务来说,如果先对请求进行转码,则外部授权服务会收到gRPC请求,否则会收到HTTP请求。

convertGrpcStatus

bool

默认为false。是否将gRPC状态头转换为JSON。如果指定为true,当上游服务产生gRPC错误且没有HTTP正文响应时,将会从gRPC状态详细信息二进制头部获取google.rpc.Status消息并将其用作JSON正文。如果没有这样的头部,则根据gRPC状态和gRPC消息头部生成google.rpc.Status消息。

例如,如果上游服务器回复以下头部:

grpc-status: 5
grpc-status-details-bin: CAUaMwoqdHlwZS5nb29nbGVhcGlzLmNvbS9nb29nbGUucnBjLlJlcXVlc3RJbmZvEgUKA3ItMQ

gRPC状态详细信息二进制头部包含一个base64编码的protobuf消息google.rpc.Status。它将被转换为:

HTTP/1.1 404 Not Found
content-type: application/json
{
"code": 5,
"details": [
        {
        "@type": "type.googleapis.com/google.rpc.RequestInfo",
        "requestId": "r-1"
        }
    ]
}

ignoredQueryParameters

[]string

转码方法映射时要忽略的查询参数列表。默认情况下,如果存在任何未知或无效的查询参数,转码过滤器将不会对请求进行转码。在ignoredQueryParameters中声明忽略的HTTP请求查询参数后,可以在这些参数出现在请求中时忽略这些参数并仍然进行转码。

ignoreUnknownQueryParameters

bool

是否忽略无法映射到相应protobuf字段的HTTP请求查询参数。如果您无法预知查询参数,则使用此选项。否则,使用ignoredQueryParameters。

重要

同时配置了ignoredQueryParametersignoreUnknownQueryParameters时,ignoredQueryParameters声明的内容将失效,请谨慎操作。

相关文档

基于ASMGrpcJsonTranscoder实现以HTTP/JSON方式请求网格内gRPC服务