Cloud Service Mesh 的轉送規則

本文件僅適用於搭配負載平衡 API 使用的 Cloud Service Mesh。我們強烈建議您使用服務路由 API 部署 Cloud Service Mesh。

Cloud Service Mesh 會使用轉送規則,判斷要將網格中的流量轉送至哪個目標 Proxy。

每個轉送規則都會為服務提供單一全域 IPv4 位址。您可以使用該位址為服務建立內部 DNS 記錄 (例如,使用 Cloud DNS 代管的私人區域)。轉送規則中的中繼資料篩選器會指定符合 xDS 標準的補充 Proxy 接收設定的條件。

針對 Cloud Service Mesh 控制層,內部、自行管理和全域轉送規則會依據 IP 位址、通訊埠和通訊協定,將流量轉送至目標 Proxy。目標 Proxy 會指向網址對應,其中包含用於決定流量目的地的規則。網址對應也會指定預設後端服務。這個後端服務會指定健康狀態檢查,並判斷適當的後端,例如包含虛擬機器 (VM) 執行個體的代管執行個體群組 (MIG),或是包含 Google Kubernetes Engine (GKE) 後端 Pod 的網路端點群組 (NEG)

下圖顯示轉送規則在 Cloud Service Mesh 架構中的位置。

醒目顯示 Cloud Service Mesh 轉送規則。
醒目的 Cloud Service Mesh 轉送規則 (按一下可放大)

轉送規則屬性

轉送規則資源包含下列適用於 Cloud Service Mesh 的屬性。轉送規則會處理與目的地 IP 位址、通訊協定和埠號相符的流量。

使用 Cloud Service Mesh 時,轉送規則中的 0.0.0.0 IP 位址是其中一個選項。0.0.0.0 IP 位址代表任何 IP 位址。

  • 在 Proxy 部署中,如果找不到其他特定比對項目,0.0.0.0 IP 位址可讓 Proxy 比對任何傳入的流量。

  • 在無 Proxy 部署作業中,0.0.0.0 IP 位址可用於指定不需要 IP 位址。以下將進一步說明如何使用 0.0.0.0 IP 位址搭配目標 gRPC Proxy。

下表詳細說明轉送規則的屬性。

屬性 必填 說明
name

轉送規則的名稱。

名稱必須在這個專案中不重複,長度介於 1 至 63 個字元,且符合規則運算式:[a-z]([-a-z0-9]*[a-z0-9])?

也就是說,第一個字元必須是小寫字母,後續的所有字元則須由連字號、小寫英文字母或數字組成,但最後一個字元不得為連字號。

IPAddress

下列任一項:0.0.0.0127.0.0.1,或任何 RFC 1918 位址。

Cloud Service Mesh 轉送規則的 IP 位址不需要與虛擬私有雲 (VPC) 網路中子網路的 IP 位址範圍相符。對於指定的 VPC 網路、IP 位址和連接埠,您只能擁有一個內部、自行管理的轉送規則。

舉例來說,在同一個 VPC 網路中,您無法建立兩個使用 0.0.0.0 IP 位址和 80 通訊埠的轉送規則。

IPAddress 與目標 gRPC Proxy

轉送規則會參照目標 gRPC Proxy,其中 validateForProxyless 欄位設為 TRUE,其 IP 位址設為 0.0.0.0

使用 xds 配置的 gRPC 用戶端不會執行 DNS 查詢,以解析管道 URI 中的主機名稱。相反地,這類用戶端會傳送 Listener Discovery Service (LDS) 要求至 Cloud Service Mesh,藉此解析目標 URI 中的 hostname[:port]。不涉及 DNS 查詢,也不需要主機名稱的 DNS 項目。

因此,Cloud Service Mesh 會使用 URI 中指定的 0.0.0.0 IP 位址和通訊埠 (預設為 80) 來查詢轉送規則。接著,Cloud Service Mesh 會在轉寄規則參照的目標 Proxy 網址對應中,尋找相符的主機規則。

target

這項轉送規則將流量導向的目標 Proxy。Cloud Service Mesh 支援 target-http-proxytarget-https-proxytarget-grpc-proxy

使用 Google Cloud 控制台設定轉送規則時,系統會自動設定目標 Proxy。使用 Google Cloud CLI 或 API 時,必須先建立目標 Proxy,才能建立轉送規則。您可以為特定 Proxy 使用多個轉送規則。

IPProtocol 這個轉送規則相符的通訊協定類型。唯一支援的值為 TCP
loadBalancingScheme 指定轉送規則的使用方式。Cloud Service Mesh 的有效值為 INTERNAL_SELF_MANAGED
portRange

以連字號分隔的通訊埠或通訊埠範圍。

傳送至這些通訊埠的指定通訊協定封包會轉送至適當的後端。您可以指定範圍的單一數字,例如 8080-8080

對於指定的 VPC 網路、IP 位址和連接埠,您只能擁有一個內部、自行管理的轉送規則。舉例來說,在同一個 VPC 網路中,您無法建立兩個使用 0.0.0.0 IP 位址和 80 通訊埠的轉送規則。

在無 Proxy gRPC 服務的情況下,轉送規則中的通訊埠會與 gRPC 應用程式用於連線至服務的 URI 中指定的通訊埠相符。如果 URI 中未指定通訊埠,則預設通訊埠為 80

network

指定執行 Envoy 代理程式的 Google CloudVM 所在的 VPC 網路。

Envoy Proxy 會讀取您為 Proxy 部署所在網路定義的 Cloud Service Mesh 設定。您可以使用名為 default 的 VPC 網路或自訂網路。

Cloud Service Mesh 僅限於在 Google Cloud 網路中支援用戶端的負載平衡。您可以在轉送規則中指定網路名稱。不支援 VPC 網路對等互連。

新增通用轉送規則

如要瞭解如何在整體 Cloud Service Mesh 設定中,使用負載平衡 API 設定轉送規則,請參閱以下內容:

後續步驟