- 資源:GrpcRoute
- RouteRule
- RouteMatch
- MethodMatch
- 類型
- HeaderMatch
- 類型
- RouteAction
- 目的地
- FaultInjectionPolicy
- 延遲
- 中止
- RetryPolicy
- StatefulSessionAffinityPolicy
- 方法
資源:GrpcRoute
GrpcRoute 資源會定義 Mesh 或 Gateway 資源轉送的 gRPC 流量路徑。
JSON 表示法 |
---|
{
"name": string,
"selfLink": string,
"createTime": string,
"updateTime": string,
"labels": {
string: string,
...
},
"description": string,
"hostnames": [
string
],
"meshes": [
string
],
"gateways": [
string
],
"rules": [
{
object ( |
欄位 | |
---|---|
name |
ID。GrpcRoute 資源的名稱。符合模式 |
selfLink |
僅供輸出。這項資源的伺服器定義網址 |
createTime |
僅供輸出。資源的建立時間戳記。 使用 RFC 3339,產生的輸出內容一律會經過 Z 標準化,並使用 0、3、6 或 9 個小數位數。系統也接受「Z」以外的偏移量。例如: |
updateTime |
僅供輸出。資源更新時間的時間戳記。 使用 RFC 3339,產生的輸出內容一律會經過 Z 標準化,並使用 0、3、6 或 9 個小數位數。系統也接受「Z」以外的偏移量。例如: |
labels |
(選用步驟) 與 GrpcRoute 資源相關聯的標籤集。 包含 |
description |
(選用步驟) 資源的自由格式文字說明。長度上限為 1024 個字元。 |
hostnames[] |
這是必要旗標,服務主機名稱,以及這個路徑說明流量的選用通訊埠。 格式: 主機名稱是網路主機的完整網域名稱。這符合 RFC 1123 對主機名稱的定義,但有 2 個明顯例外:- 不允許使用 IP。- 主機名稱可加上萬用字元標籤 ( 主機名稱可以是「精確」名稱,也就是沒有網路主機結尾點的網域名稱 (例如 請注意,根據 RFC1035 和 RFC1123,標籤只能使用小寫英數字元或「-」,開頭和結尾須為英數字元。不得使用其他標點符號。 與 Mesh 或閘道相關聯的路徑必須有不重複的主機名稱。如果嘗試附加多個主機名稱衝突的路徑,系統會拒絕設定。 舉例來說,主機名稱 如果指定通訊埠,gRPC 用戶端就必須使用含有通訊埠的管道 URI 來比對這項規則 (即「xds:///service:123」),否則必須提供不含通訊埠的 URI (即「xds:///service」)。 |
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 |
timeout |
(選用步驟) 指定所選路徑的逾時時間。逾時時間的計算方式為:從要求完全處理完畢 (即串流結束) 到回應完全處理完畢之間的時間。逾時包括所有重試。 時間長度以秒為單位,最多可有 9 個小數位數,並應以「 |
retryPolicy |
(選用步驟) 指定與這條路徑相關聯的重試政策。 |
statefulSessionAffinity |
(選用步驟) 指定以 Cookie 為基礎的有狀態工作階段相依性。 |
idleTimeout |
(選用步驟) 指定所選路徑的閒置逾時時間。閒置逾時是指上游或下游連線沒有傳送或接收任何位元組的期間。如未設定,預設閒置逾時時間為 1 小時。如果設為 0 秒,系統會停用逾時。 時間長度以秒為單位,最多可有 9 個小數位數,並應以「 |
目的地
流量的轉送目的地。
JSON 表示法 |
---|
{ // Union field |
欄位 | |
---|---|
聯集欄位 destination_type 。指定要將流量轉送至哪種目的地。destination_type 只能是下列其中一項: |
|
serviceName |
這是必要旗標,要將流量轉送至的目的地服務網址。必須參照 BackendService 或 ServiceDirectoryService。 |
weight |
(選用步驟) 指定轉送至 serviceName 欄位所參照後端的請求比例。計算方式為:- weight/Sum(weights in this destination list)。如果值不為零,則可能與這裡定義的確切比例有些許差異,視實作支援的精確度而定。 如果只指定一個 serviceName,且權重大於 0,則 100% 的流量會轉送至該後端。 如果為任一服務名稱指定權重,則必須為所有服務名稱指定權重。 如果所有服務都未指定權重,系統會將流量平均分配給所有服務。 |
FaultInjectionPolicy
導入流量的錯誤植入規格,用於測試用戶端對目的地服務故障的彈性。在錯誤植入期間,當用戶端將要求傳送至目的地時,系統可能會先針對一定比例的要求導入延遲,再將這些要求傳送至目的地服務。同樣地,您也可以針對一定比例的要求,中止來自用戶端的要求。
JSON 表示法 |
---|
{ "delay": { object ( |
欄位 | |
---|---|
delay |
將延遲時間插入用戶端要求的規格。 |
abort |
中止用戶端要求的規格。 |
延遲時間
指定用戶端要求在傳送至目的地前,如何因故障注入而延遲。
JSON 表示法 |
---|
{ "fixedDelay": string, "percentage": integer } |
欄位 | |
---|---|
fixedDelay |
指定固定延遲時間,然後轉送要求。 時間長度以秒為單位,最多可有 9 個小數位數,並應以「 |
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 為基礎的有狀態工作階段相依性規格,其中資料平面會提供名為「GSSA」的「工作階段 Cookie」,該 Cookie 會編碼特定目的地主機,只要目的地主機保持運作且健康狀態良好,包含該 Cookie 的每個要求都會導向該主機。
gRPC 無代理程式網格程式庫或 Sidecar 代理程式會管理工作階段 Cookie,但用戶端應用程式碼必須負責將工作階段中每個 RPC 的 Cookie 複製到下一個 RPC。
JSON 表示法 |
---|
{ "cookieTtl": string } |
欄位 | |
---|---|
cookieTtl |
這是必要旗標,資料層產生的 Set-Cookie 標頭的 Cookie 存留時間值。Cookie 的效期可設為介於 1 到 86400 秒 (24 小時) 之間,含首尾值。 時間長度以秒為單位,最多可有 9 個小數位數,並應以「 |
方法 |
|
---|---|
|
在指定專案和位置中建立新的 GrpcRoute。 |
|
刪除單一 GrpcRoute。 |
|
取得單一 GrpcRoute 的詳細資料。 |
|
列出指定專案和位置中的 GrpcRoute。 |
|
更新單一 GrpcRoute 的參數。 |
|
設定指定資源的存取權控管政策。 |
|
傳回呼叫者在指定資源上擁有的權限。 |