- 資源:HttpRoute
- RouteRule
- RouteMatch
- HeaderMatch
- IntegerRange
- QueryParameterMatch
- RouteAction
- 目的地
- HeaderModifier
- 重新導向
- ResponseCode
- FaultInjectionPolicy
- 延遲
- Abort
- URLRewrite
- RetryPolicy
- RequestMirrorPolicy
- CorsPolicy
- StatefulSessionAffinityPolicy
- HttpDirectResponse
- 方法
資源:HttpRoute
HttpRoute 資源定義 Mesh 或閘道資源應如何轉送 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,標籤只能使用小寫英數字元或「-」,開頭和結尾須為英數字元。不得使用其他標點符號。 與網格或閘道相關聯的路徑必須具有不重複的主機名稱。如果嘗試附加多個主機名稱衝突的路徑,系統會拒絕設定。 舉例來說,主機名稱 |
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 欄位所參照後端的要求比例。計算方式如下:權重/總和(這份目的地清單中的權重)。對於非零值,根據實作支援的精確度,與此處定義的確切比例可能會有誤差。 如果只指定一個 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。 reset:如果目的地服務完全沒有回應 (中斷連線/重設/讀取逾時),Proxy 會嘗試重試 connect-failure:如果連線至目的地失敗 (例如連線逾時),Proxy 會重試。 retriable-4xx:Proxy 會在傳回可重試的 4xx 回應代碼時重試。目前僅支援 409 錯誤。 refused-stream:如果目的地以 REFUSED_STREAM 錯誤代碼重設串流,Proxy 會重試。這類重設表示可以安全重試。 |
numRetries |
指定允許的重試次數。這個數字必須大於 0。如未指定,預設值為 1。 |
perTryTimeout |
指定每次重試的逾時時間 (非零)。 以秒為單位的時間長度,最多 9 個小數位數,結尾為「 |
RequestMirrorPolicy
指定政策,說明如何將要求鏡像至獨立的鏡像目的地服務。Proxy 不會等待影子服務的回應。將流量傳送至影子服務前,主機/授權標頭會加上 -shadow 後置字串。Cloud Run 目的地目前不支援鏡像功能。
| 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 無 Proxy 網格程式庫或 Sidecar Proxy 會管理工作階段 Cookie,但用戶端應用程式程式碼負責將 Cookie 從工作階段中的每個 RPC 複製到下一個 RPC。
| JSON 表示法 |
|---|
{ "cookieTtl": string } |
| 欄位 | |
|---|---|
cookieTtl |
這是必要旗標,資料層產生的 Set-Cookie 標頭 Cookie 存留時間值。Cookie 的生命週期可設為 0 到 86400 秒 (24 小時) 之間的值 (含 0 和 86400)。 如要使用工作階段 Cookie 並停用 Cookie 效期,請將這個值設為 0s。 以秒為單位的時間長度,最多 9 個小數位數,結尾為「 |
HttpDirectResponse
要傳回的靜態 HTTP 回應物件。
| JSON 表示法 |
|---|
{ "status": integer, // Union field |
| 欄位 | |
|---|---|
status |
這是必要旗標,要以 HTTP 回應傳回的狀態。必須是正整數。 |
聯集欄位 HttpBody。做為 HTTP 回應一部分傳回的主體。HttpBody 只能是下列其中一個設定: |
|
stringBody |
選用。回應主體為字串。內文長度上限為 1024 個半形字元。 |
bytesBody |
選用。回應主體 (以位元組為單位)。主體大小上限為 4096B。 Base64 編碼字串。 |
方法 |
|
|---|---|
|
在指定專案和位置建立新的 HttpRoute。 |
|
刪除單一 HttpRoute。 |
|
取得單一 HttpRoute 的詳細資料。 |
|
列出指定專案和位置中的 HttpRoute。 |
|
更新單一 HttpRoute 的參數。 |
|
設定指定資源的存取控管政策。 |
|
傳回呼叫端對指定資源所擁有的權限。 |