- 資源:HttpRoute
- RouteRule
- RouteMatch
- HeaderMatch
- IntegerRange
- QueryParameterMatch
- RouteAction
- 目的地
- HeaderModifier
- 重新導向
- ResponseCode
- FaultInjectionPolicy
- 延遲
- 中止
- URLRewrite
- RetryPolicy
- RequestMirrorPolicy
- CorsPolicy
- StatefulSessionAffinityPolicy
- HttpDirectResponse
- 方法
資源:HttpRoute
HttpRoute 資源會定義 Mesh 或 Gateway 資源應如何轉送 HTTP 流量。
| JSON 表示法 | 
|---|
| {
  "name": string,
  "selfLink": string,
  "description": string,
  "createTime": string,
  "updateTime": string,
  "hostnames": [
    string
  ],
  "meshes": [
    string
  ],
  "gateways": [
    string
  ],
  "labels": {
    string: string,
    ...
  },
  "rules": [
    {
      object ( | 
| 欄位 | |
|---|---|
| name | 
 ID。HttpRoute 資源的名稱。符合模式  | 
| selfLink | 
 僅供輸出。這項資源的伺服器定義網址 | 
| description | 
 (選用步驟) 資源的自由格式文字說明。長度上限為 1024 個字元。 | 
| createTime | 
 僅供輸出。資源的建立時間戳記。 使用 RFC 3339,產生的輸出內容一律會經過 Z 標準化,並使用 0、3、6 或 9 個小數位數。系統也接受「Z」以外的偏移量。例如: | 
| updateTime | 
 僅供輸出。資源更新時間的時間戳記。 使用 RFC 3339,產生的輸出內容一律會經過 Z 標準化,並使用 0、3、6 或 9 個小數位數。系統也接受「Z」以外的偏移量。例如: | 
| hostnames[] | 
 這是必要旗標,主機名稱定義一組主機,這些主機應與 HTTP 主機標頭比對,以選取要處理要求的 HttpRoute。主機名稱是網路主機的完整網域名稱,如 RFC 1123 所定義,但有以下例外狀況:- 不允許使用 IP。- 主機名稱可加上萬用字元標籤 ( 主機名稱可以是「精確」名稱,也就是沒有網路主機結尾點的網域名稱 (例如  請注意,根據 RFC1035 和 RFC1123,標籤只能使用小寫英數字元或「-」,開頭和結尾須為英數字元。不得使用其他標點符號。 與 Mesh 或閘道相關聯的路徑必須有不重複的主機名稱。如果嘗試附加多個主機名稱衝突的路徑,系統會拒絕設定。 舉例來說,主機名稱  | 
| meshes[] | 
 (選用步驟) 網格會定義這個 HttpRoute 所附加的網格清單,做為轉送網格服務要求的轉送規則之一。 每個網格參照都應符合以下模式: 附加的網格應為 SIDECAR 類型 | 
| gateways[] | 
 (選用步驟) 閘道會定義這個 HttpRoute 所附加的閘道清單,做為轉送規則之一,用來轉送閘道服務的要求。 每個閘道參照都應符合以下模式: | 
| labels | 
 (選用步驟) 與 HttpRoute 資源相關聯的標籤標記集。 包含  | 
| rules[] | 
 這是必要旗標,定義流量轉送和處理方式的規則。系統會根據規則指定的 RouteMatch 依序比對規則。 | 
RouteRule
指定如何比對流量,以及比對流量時如何轉送流量。
| JSON 表示法 | 
|---|
| { "matches": [ { object ( | 
| 欄位 | |
|---|---|
| matches[] | 
 比對清單會定義比對規則與傳入 HTTP 要求時使用的條件。每項比對都是獨立的,也就是說,只要符合「任一」比對條件,就會套用這項規則。 如未指定相符欄位,這項規則會無條件比對流量。 如要設定預設規則,請在規則清單結尾新增未指定相符項的規則。 | 
| action | 
 詳細規則,定義如何轉送相符的流量。 | 
RouteMatch
RouteMatch 定義用於比對要求的規格。如果設定多個比對類型,只要所有比對類型都相符,這個 RouteMatch 就會相符。
| JSON 表示法 | 
|---|
| { "ignoreCase": boolean, "headers": [ { object ( | 
| 欄位 | |
|---|---|
| ignoreCase | 
 指定 prefixMatch 和 fullPathMatch 比對是否區分大小寫。預設值為 false。 | 
| headers[] | 
 指定要比對的 HTTP 要求標頭清單。必須符合所有提供的標頭。 | 
| queryParameters[] | 
 指定要比對的查詢參數清單。必須符合「所有」查詢參數。 | 
| 聯集欄位  
 | |
| fullPathMatch | 
 HTTP 要求路徑值應與這個值完全相符。 請只使用 fullPathMatch、prefixMatch 或 regexMatch 其中一個。 | 
| prefixMatch | 
 HTTP 要求路徑值開頭必須為指定的 prefixMatch。prefixMatch 開頭必須為「/」。 請只使用 fullPathMatch、prefixMatch 或 regexMatch 其中一個。 | 
| regexMatch | 
 移除原始網址提供的所有查詢參數和錨點後,HTTP 要求路徑值必須符合 regexMatch 指定的規則運算式。如要瞭解規則運算式文法,請參閱 https://github.com/google/re2/wiki/Syntax 請只使用 fullPathMatch、prefixMatch 或 regexMatch 其中一個。 | 
HeaderMatch
指定如何根據 HTTP 要求標頭選取轉送規則。
| JSON 表示法 | 
|---|
| { "header": string, "invertMatch": boolean, // Union field | 
| 欄位 | |
|---|---|
| header | 
 要比對的 HTTP 標頭名稱。 | 
| invertMatch | 
 如果指定,系統會在檢查前反轉比對結果。預設值為 false。 | 
| 聯集欄位  
 | |
| exactMatch | 
 標頭的值應與 exactMatch 的內容完全相符。 | 
| regexMatch | 
 標頭的值必須符合 regexMatch 中指定的規則運算式。如要瞭解規則運算式文法,請參閱:https://github.com/google/re2/wiki/Syntax | 
| prefixMatch | 
 標頭的值開頭必須是 prefixMatch 的內容。 | 
| presentMatch | 
 必須存在具有 headerName 的標頭。無論標頭是否有值,都會進行比對。 | 
| suffixMatch | 
 標頭值必須以 suffixMatch 的內容結尾。 | 
| rangeMatch | 
 如果指定,當要求標頭值在範圍內時,規則就會相符。 | 
IntegerRange
表示整數值範圍。
| JSON 表示法 | 
|---|
| { "start": integer, "end": integer } | 
| 欄位 | |
|---|---|
| start | 
 範圍的起始值 (含) | 
| end | 
 範圍的結尾 (不含) | 
QueryParameterMatch
規格,用於比對要求中的查詢參數。
| JSON 表示法 | 
|---|
| { "queryParameter": string, // Union field | 
| 欄位 | |
|---|---|
| queryParameter | 
 要比對的查詢參數名稱。 | 
| 聯集欄位  
 | |
| exactMatch | 
 查詢參數的值必須與 exactMatch 的內容完全相符。 只能設定 exactMatch、regexMatch 或 presentMatch 其中之一。 | 
| regexMatch | 
 查詢參數的值必須符合 regexMatch 指定的規則運算式。如要瞭解規則運算式文法,請參閱 https://github.com/google/re2/wiki/Syntax 只能設定 exactMatch、regexMatch 或 presentMatch 其中之一。 | 
| presentMatch | 
 指定如果要求包含查詢參數,QueryParameterMatcher 就會相符,無論參數是否有值。 只能設定 exactMatch、regexMatch 或 presentMatch 其中之一。 | 
RouteAction
轉送流量和套用相關政策的規格。
| JSON 表示法 | 
|---|
| { "destinations": [ { object ( | 
| 欄位 | |
|---|---|
| destinations[] | 
 流量應轉送至的目的地。 | 
| redirect | 
 如果已設定,系統會根據這個欄位設定導向要求。 | 
| faultInjectionPolicy | 
 導入流量的錯誤植入規格,用於測試用戶端對後端服務故障的彈性。在錯誤植入期間,當用戶端將要求傳送至後端服務時,系統會先針對一定比例的要求產生延遲,然後再將這些要求傳送至後端服務。同樣地,也可以針對一定比例的要求,中止來自用戶端的要求。 如果用戶端已設定 faultInjectionPolicy,系統會忽略 timeout 和 retryPolicy | 
| requestHeaderModifier | 
 這項規格用於在將相符要求傳送至目的地之前,修改要求標頭。如果 Destination 和 RouteAction 都設定了 HeaderModifiers,系統會合併這些值。系統不會解決兩者之間的衝突。 | 
| responseHeaderModifier | 
 規格:在將回應傳回用戶端前,先修改回應的標頭。如果 Destination 和 RouteAction 都設定了 HeaderModifiers,系統會合併這些值。系統不會解決兩者之間的衝突。 | 
| urlRewrite | 
 在將要求轉送至目的地前,重新編寫網址的規格。 | 
| timeout | 
 指定所選路徑的逾時時間。逾時時間的計算方式為:從要求完全處理完畢 (即串流結束) 到回應完全處理完畢之間的時間。逾時包括所有重試。 時間長度以秒為單位,最多可有 9 個小數位數,並應以「 | 
| retryPolicy | 
 指定與這條路徑相關聯的重試政策。 | 
| requestMirrorPolicy | 
 指定政策,說明如何將預定傳送至路徑目的地的要求,以陰影方式傳送至另一個鏡像目的地。Proxy 不會等待影子目的地回應,就會傳回回應。將流量傳送至影子服務前,主機/授權標頭會加上 -shadow 後置字串。 | 
| corsPolicy | 
 允許用戶端跨來源要求的規格。 | 
| statefulSessionAffinity | 
 (選用步驟) 指定以 Cookie 為基礎的有狀態工作階段相依性。 | 
| directResponse | 
 (選用步驟) 無論要求為何,都會傳回的靜態 HTTP 回應物件。 | 
| idleTimeout | 
 (選用步驟) 指定所選路徑的閒置逾時時間。閒置逾時是指上游或下游連線沒有傳送或接收任何位元組的期間。如未設定,預設閒置逾時時間為 1 小時。如果設為 0 秒,系統會停用逾時。 時間長度以秒為單位,最多可有 9 個小數位數,並應以「 | 
目的地
要求應轉送至的目的地規格。
| JSON 表示法 | 
|---|
| { "serviceName": string, "weight": integer, "requestHeaderModifier": { object ( | 
| 欄位 | |
|---|---|
| serviceName | 
 要將流量轉送至的 BackendService 網址。 | 
| weight | 
 指定轉送至 serviceName 欄位所參照後端的請求比例。計算方式為:- weight/Sum(weights in this destination list)。如果值不為零,則可能與這裡定義的確切比例有些許差異,視實作支援的精確度而定。 如果只指定一個 serviceName,且權重大於 0,則 100% 的流量會轉送至該後端。 如果為任一服務名稱指定權重,則必須為所有服務名稱指定權重。 如果所有服務都未指定權重,系統會將流量平均分配給所有服務。 | 
| requestHeaderModifier | 
 (選用步驟) 這項規格用於在將相符要求傳送至目的地之前,修改要求標頭。如果 Destination 和 RouteAction 都設定了 HeaderModifiers,系統會合併這些值。系統不會解決兩者之間的衝突。 | 
| responseHeaderModifier | 
 (選用步驟) 規格:在將回應傳回用戶端前,先修改回應的標頭。如果 Destination 和 RouteAction 都設定了 HeaderModifiers,系統會合併這些值。系統不會解決兩者之間的衝突。 | 
HeaderModifier
修改 HTTP 要求和 HTTP 回應中 HTTP 標頭的規格。
| JSON 表示法 | 
|---|
| { "set": { string: string, ... }, "add": { string: string, ... }, "remove": [ string ] } | 
| 欄位 | |
|---|---|
| set | 
 使用指定的地圖完全覆寫/取代標頭,其中鍵是標頭名稱,值是標頭值。 包含  | 
| add | 
 使用指定的地圖新增標頭,其中鍵是標頭名稱,值是標頭的值。 包含  | 
| remove[] | 
 移除清單中指定的標頭 (依標頭名稱比對)。 | 
重新導向
重新導向流量的規格。
| JSON 表示法 | 
|---|
| {
  "hostRedirect": string,
  "pathRedirect": string,
  "prefixRewrite": string,
  "responseCode": enum ( | 
| 欄位 | |
|---|---|
| hostRedirect | 
 重新導向回應中使用的主機,而非要求中提供的主機。 | 
| pathRedirect | 
 重新導向回應中使用的路徑,而非要求中提供的路徑。pathRedirect 無法與 prefixRedirect 一併提供。請提供其中一項,或兩者皆不提供。如果兩者皆未提供,系統會使用原始要求的路徑進行重新導向。 | 
| prefixRewrite | 
 表示在重新導向期間,相符前置字元 (或路徑) 應替換為這個值。這個選項可根據要求動態建立網址。 | 
| responseCode | 
 重新導向時要使用的 HTTP 狀態碼。 | 
| httpsRedirect | 
 如果設為 true,重新導向要求中的網址配置會設為 https。如果設為 false,重新導向要求會沿用要求本身的網址配置。 預設值為 false。 | 
| stripQuery | 
 如果設為 true,系統會先移除原始網址的任何隨附查詢部分,再重新導向要求。如果設為 false,系統會保留原始網址的查詢部分。 預設值為 false。 | 
| portRedirect | 
 重新導向要求中使用的連接埠,而非要求中提供的連接埠。 | 
ResponseCode
支援的 HTTP 回應代碼。
| 列舉 | |
|---|---|
| RESPONSE_CODE_UNSPECIFIED | 預設值 | 
| MOVED_PERMANENTLY_DEFAULT | 對應 301。 | 
| FOUND | 對應 302。 | 
| SEE_OTHER | 對應至 303。 | 
| TEMPORARY_REDIRECT | 對應於 307。在這種情況下,要求方法會保留。 | 
| PERMANENT_REDIRECT | 對應於 308。在這種情況下,要求方法會保留。 | 
FaultInjectionPolicy
導入流量的錯誤植入規格,用於測試用戶端對目的地服務故障的彈性。在故障注入期間,當用戶端將要求傳送至目的地時,用戶端 Proxy 會針對一定比例的要求導入延遲,然後再將這些要求傳送至目的地服務。同樣地,用戶端 Proxy 也可以針對一定比例的要求中止要求。
| 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] 之間 | 
URLRewrite
在將要求轉送至目的地之前,修改要求網址的規格。
| JSON 表示法 | 
|---|
| { "pathPrefixRewrite": string, "hostRewrite": string } | 
| 欄位 | |
|---|---|
| pathPrefixRewrite | 
 將要求轉送至所選目的地之前,系統會將要求路徑相符的部分替換成這個值。 | 
| hostRewrite | 
 將要求轉送至所選目的地之前,系統會將要求的主機標頭替換成這個值。 | 
RetryPolicy
重試的規格。
| JSON 表示法 | 
|---|
| { "retryConditions": [ string ], "numRetries": integer, "perTryTimeout": string } | 
| 欄位 | |
|---|---|
| retryConditions[] | 
 指定套用這項重試政策的一或多項條件。有效值包括:5xx:如果目的地服務傳回任何 5xx 回應碼,或完全沒有回應 (例如中斷連線、重設、讀取逾時、連線失敗和拒絕串流),Proxy 就會嘗試重試。 gateway-error:與 5xx 相似,但只適用於回應代碼 502、503、504。 重設:如果目的地服務完全沒有回應 (中斷連線/重設/讀取逾時),Proxy 會嘗試重試 connect-failure:Proxy 會在連線至目的地失敗時重試,例如連線逾時。 retriable-4xx:Proxy 會針對可重試的 4xx 回應代碼重試。目前唯一支援重試的錯誤是 409。 refused-stream:如果目的地以 REFUSED_STREAM 錯誤代碼重設串流,Proxy 會重試。這類重設表示可以安全地重試。 | 
| numRetries | 
 指定允許的重試次數。這個數字必須大於 0,如未指定,則預設為 1。 | 
| perTryTimeout | 
 指定每次重試的逾時時間 (不得為零)。 時間長度以秒為單位,最多可有 9 個小數位數,並應以「 | 
RequestMirrorPolicy
指定將要求複製到獨立鏡像目的地服務的政策。Proxy 不會等待影子服務的回應。將流量傳送至影子服務前,主機/授權標頭會加上 -shadow 後置字串。
| JSON 表示法 | 
|---|
| {
  "destination": {
    object ( | 
| 欄位 | |
|---|---|
| destination | 
 要求要鏡像複製到的目的地。系統會忽略目的地權重。 | 
| mirrorPercent | 
 (選用步驟) 要求鏡像至所需目的地的百分比。 | 
CorsPolicy
允許用戶端跨來源要求的規格。
| JSON 表示法 | 
|---|
| { "allowOrigins": [ string ], "allowOriginRegexes": [ string ], "allowMethods": [ string ], "allowHeaders": [ string ], "exposeHeaders": [ string ], "maxAge": string, "allowCredentials": boolean, "disabled": boolean } | 
| 欄位 | |
|---|---|
| allowOrigins[] | 
 指定允許執行 CORS 要求的來源清單。如果來源符合 allowOrigins 中的項目或 allowOriginRegexes 中的項目,系統就會允許該來源。 | 
| allowOriginRegexes[] | 
 指定符合允許來源的規則運算式模式。如要瞭解規則運算式文法,請參閱 https://github.com/google/re2/wiki/Syntax。 | 
| allowMethods[] | 
 指定 Access-Control-Allow-Methods 標頭的內容。 | 
| allowHeaders[] | 
 指定 Access-Control-Allow-Headers 標頭的內容。 | 
| exposeHeaders[] | 
 指定 Access-Control-Expose-Headers 標頭的內容。 | 
| maxAge | 
 指定預檢要求結果可快取的時間長度 (以秒為單位)。這會轉譯為 Access-Control-Max-Age 標頭。 | 
| allowCredentials | 
 為因應預檢要求,將此屬性設為 true 代表實際要求可以包含使用者憑證。這會轉譯成 Access-Control-Allow-Credentials 標頭。 預設值是 false。 | 
| disabled | 
 如果為 true,系統會停用 CORS 政策。預設值為 false,表示 CORS 政策有效。 | 
StatefulSessionAffinityPolicy
以 Cookie 為基礎的有狀態工作階段相依性規格,其中資料平面會提供名為「GSSA」的「工作階段 Cookie」,該 Cookie 會編碼特定目的地主機,只要目的地主機保持運作且健康狀態良好,包含該 Cookie 的每個要求都會導向該主機。
gRPC 無代理程式網格程式庫或 Sidecar 代理程式會管理工作階段 Cookie,但用戶端應用程式碼必須負責將工作階段中每個 RPC 的 Cookie 複製到下一個 RPC。
| JSON 表示法 | 
|---|
| { "cookieTtl": string } | 
| 欄位 | |
|---|---|
| cookieTtl | 
 這是必要旗標,資料層產生的 Set-Cookie 標頭的 Cookie 存留時間值。Cookie 的效期可設為介於 1 到 86400 秒 (24 小時) 之間,含首尾值。 時間長度以秒為單位,最多可有 9 個小數位數,並應以「 | 
HttpDirectResponse
要傳回的靜態 HTTP 回應物件。
| JSON 表示法 | 
|---|
| { "status": integer, // Union field | 
| 欄位 | |
|---|---|
| status | 
 這是必要旗標,要以 HTTP 回應的形式傳回的狀態。必須是正整數。 | 
| 聯集欄位 HttpBody。要以 HTTP 回應形式傳回的主體。HttpBody只能是下列其中一項: | |
| stringBody | 
 (選用步驟) 回應主體 (字串)。內文長度上限為 1024 個半形字元。 | 
| bytesBody | 
 (選用步驟) 以位元組表示的回應主體。主體大小上限為 4096B。 Base64 編碼字串。 | 
| 方法 | |
|---|---|
| 
 | 在指定專案和位置中建立新的 HttpRoute。 | 
| 
 | 刪除單一 HttpRoute。 | 
| 
 | 取得單一 HttpRoute 的詳細資料。 | 
| 
 | 列出指定專案和位置中的 HttpRoute。 | 
| 
 | 更新單一 HttpRoute 的參數。 | 
| 
 | 設定指定資源的存取權控管政策。 | 
| 
 | 傳回呼叫者在指定資源上擁有的權限。 |