全部產品
Search
文件中心

Alibaba Cloud Service Mesh:ASMGrpcJsonTranscoder CRD說明

更新時間:Mar 13, 2025

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服務