Cloud Service Mesh 與 Service Directory 整合
本文將概略說明如何搭配使用 Service Directory 的服務登錄檔與 Cloud Service Mesh,讓 Cloud Service Mesh 將流量轉送至 Service Directory 中登錄的服務,並套用流量政策。本文適用於想將應用程式與 Google Cloud中的其他服務整合的 Cloud Service Mesh 開發人員。
Service Directory 是服務登錄,可儲存向其註冊的網路服務相關資訊,包括名稱、位置和屬性。您可以自動註冊服務,擷取所有詳細資料,而且無論基礎架構為何,所有服務都能註冊。
登錄檔不僅可包含 Google Cloud 服務,還可包含地端或其他公用雲端執行的混合式服務。為充分瞭解本文內容,建議您先熟悉服務目錄作業的基本概念。
將 Service Directory 的服務登錄檔與 Cloud Service Mesh 搭配使用時,整合功能會讓服務登錄檔中的服務,可供網格中的應用程式和 Cloud Service Mesh 設定的閘道使用。Cloud Service Mesh 支援與 Service Directory 整合,包括 Envoy 和無 Proxy 的 gRPC,可與內部直通網路負載平衡器、內部應用程式負載平衡器和 L4 Private Service Connect 整合。
如要整合服務,請向 Service Directory 註冊服務,然後將服務繫結至 Cloud Service Mesh 後端服務。建立繫結後,Cloud Service Mesh 會查詢 Service Directory,取得已註冊服務的相關資訊,以及該服務的連線方式。Cloud Service Mesh 也會追蹤服務的任何變更。整合後,服務網格和自行管理的閘道就能將流量傳送至這些服務。您也可以透過這項功能強制執行政策,例如在 Cloud Service Mesh 中設定進階流量管理政策。
使用這項整合功能時,無論服務本身使用的後端類型為何,服務繫結都會做為後端。這項整合功能可簡化 Cloud Service Mesh 部署作業,因為 Cloud Service Mesh 可將流量傳送至服務,不必考慮後端類型。
向服務目錄註冊服務後,您不需要設定執行個體群組或不同類型的網路端點群組 (NEG),即可存取所需服務。您可以將 Google Kubernetes Engine、內部負載平衡器和 Private Service Connect 自動註冊至 Service Directory,進一步簡化 Cloud Service Mesh 對這些服務的存取。
整合功能使用的資源
Cloud Service Mesh 與 Service Directory 整合時,會使用下列資源。
Service Directory 服務
Service Directory 是服務登錄檔。您可以使用 Service Directory 註冊各種類型的服務,包括位於 Google Cloud 或其他環境的服務 (例如內部部署資料中心)。每項服務都有專屬名稱,以及零或多個服務端點。服務端點包含位址、通訊埠、屬性和中繼資料。如果端點數量為零,您就無法將流量轉送至服務。
服務繫結
服務繫結是一種資源,包含 Service Directory 服務的完整網域名稱 (FQDN)。舉例來說,
projects/test-proj/locations/us-east1/namespaces/test-namespace/services/test-service
是 Service Directory 服務的 FQDN。
後端服務
後端服務是設定資源,可為 Cloud Service Mesh 提供資訊,包括後端 (例如受管理執行個體群組),後端服務會將流量轉送至這些後端。參照服務綁定的後端服務不得有後端。如要搭配 Service Directory 使用 Cloud Service Mesh 整合功能,請建立新的後端服務來參照服務繫結。
後端服務可以有多個服務繫結。如果您在不同區域部署相同應用程式,這項設定就非常實用。您可以將每個區域部署作業註冊到 Service Directory 的區域執行個體,例如區域服務 1 和區域服務 2。然後,使用兩個服務繫結,將每個區域性服務目錄服務與同一個後端服務建立關聯。全域服務繫結 1 會與區域 A 中的區域服務 1 建立關聯,全域服務繫結 2 則會與區域 B 中的區域服務 2 建立關聯。
用途
將 Cloud Service Mesh 部署作業與 Service Directory 整合,可啟用新的用途,當您依賴其他團隊或機構擁有或發布的服務時,這項整合功能就非常實用。
讓現有服務可供 Cloud Service Mesh 使用
Service Directory 可與 GKE、內部直通式網路負載平衡器和內部應用程式負載平衡器等產品整合。 Google Cloud 服務生產者建立 GKE 服務或負載平衡器時,可以向 Service Directory 註冊。
向 Service Directory 註冊服務後,即可設定 Cloud Service Mesh 與該服務通訊。Cloud Service Mesh 用戶端隨後即可與內部直通式網路負載平衡器和內部應用程式負載平衡器後方執行的服務通訊。
提升服務生產者和消費者之間的協調性
大型企業有許多獨立的開發人員團隊。這些團隊會向其他團隊提供服務,讓更多團隊使用共用服務提供的功能。這會建立跨團隊的依附元件。雖然這些依附元件可讓團隊分享工作成果,但也會造成協調負擔。
使用服務目錄時,一個團隊 (生產者) 會註冊要提供給其他團隊或機構 (消費者) 的服務。生產者會與消費者分享這項服務的參照。消費者可使用這個參照,在服務目錄中查詢生產者的服務,並探索服務的端點。舉例來說,端點可能是虛擬 IP 位址 (VIP),供應商的服務預期會透過該位址接收流量。
Cloud Service Mesh 與 Service Directory 整合後,您就能將 Service Directory 服務繫結至 Cloud Service Mesh 後端服務,自動執行程序,並享有下列優點:
- Cloud Service Mesh 會從 Service Directory 同步處理服務端點,如果更新 Service Directory 服務的端點,Cloud Service Mesh 會自動同步處理這些變更。
- 您可以在 Cloud Service Mesh 中設定各種路由和流量管理政策,例如逾時。您可以透過這些政策,微調應用程式向 Service Directory 服務發出要求的方式。如要瞭解 Cloud Service Mesh 中的路由和流量管理,請參閱「進階流量管理」。
- Cloud Service Mesh 會使用流量管理功能 (例如以鄰近程度為準的負載平衡),將應用程式的流量導向端點,例如盡量縮短往返時間。
當您 (消費者) 使用 Cloud Service Mesh,並將後端服務附加至 Service Directory 服務時,跨團隊協調作業的負擔就會減少。
- 您會依名稱附加服務
Payments
。 Cloud Service Mesh 會與用戶端分享有關
Payments
服務的資訊。- 舉例來說,服務網格中執行的 Sidecar Proxy 現在知道服務可連線的端點 (例如
10.0.0.1:80
)。
- 舉例來說,服務網格中執行的 Sidecar Proxy 現在知道服務可連線的端點 (例如
您的應用程式可以依名稱呼叫這項服務,您或應用程式都不需要瞭解外部服務的端點。在圖中,服務是
Payments
服務。服務供應商更新外部服務時 (例如變更端點),Cloud Service Mesh 會擷取更新內容,並順暢地與用戶分享。
使用進入點存取服務範圍內的服務
團隊可能會在 VPC Service Controls perimeter 中將一系列服務分組,並透過單一進入點公開這些服務。這個進入點可以註冊至 Service Directory,並提供給想要存取周邊服務的使用者。如要進一步瞭解 VPC Service Controls 範圍,請參閱「服務範圍詳細資料和設定」。
舉例來說,團隊可使用內部應用程式負載平衡器建立 Ingress 閘道,將要求分配至叢集中的 Kubernetes 服務集合。這個 Ingress 閘道會自動註冊為 Service Directory 的服務。如要存取 Kubernetes 服務,消費者可以在服務目錄中查詢這個 Ingress 閘道。然後,消費者可以設定 Cloud Service Mesh 網格,透過閘道存取範圍內的服務。
連結跨網域的服務
您可能需要連結不同網域中的服務。
連結不同機構的服務
您可能需要存取其他機構擁有的服務,例如 Google API (例如 Cloud SQL) 或第三方代管服務。
Service Directory 支援 Private Service Connect。在網路中建立 Private Service Connect 端點時,該端點可以註冊為 Service Directory 服務。接著,您可以將這項服務附加至 Cloud Service Mesh,讓網格用戶端 (例如 Envoy 和 gRPC 用戶端) 和自我管理的閘道 (例如 Apigee) 呼叫這些服務。
上述範例使用 Cloud Storage,說明如何透過虛擬私有雲網路中的端點,使用 Private Service Connect 呼叫 Google API。
跨虛擬私有雲網路連線服務
部分公司會在Google Cloud 部署作業中使用多個虛擬私有雲網路。在這種情況下,一個虛擬私有雲網路中的服務可能需要存取另一個虛擬私有雲網路中的服務。您可以設定虛擬私有雲對等互連,存取不同虛擬私有雲網路中的服務,但如果對等互連網路之間有重疊的 IP 位址範圍,這項設定就會造成複雜情況。
Private Service Connect 可透過單一 IP:port
端點,以安全且私密的方式,讓一個虛擬私有雲網路中的服務可供另一個虛擬私有雲網路中的服務存取。
其他網域的範例
前兩個範例說明您可能需要跨網域的情況,但還有許多其他範例。舉例來說,您建立的閘道位於兩個 Google Cloud 地區的交會處。一個區域的服務可透過這個閘道連線至另一個區域的服務。您可以在 Service Directory 中將閘道註冊為服務,然後按照本文說明,將閘道與 Cloud Service Mesh 搭配使用。
在存取服務時套用政策
Cloud Service Mesh 支援進階流量管理等功能,可透過政策設定。舉例來說,您可以設定流量鏡射政策,讓用戶端每次將要求傳送至特定後端服務時,流量也會傳送至第二個後端服務。
將 Service Directory 服務繫結至 Cloud Service Mesh 後端服務時,您可以在 Cloud Service Mesh 中設定下列類型的政策。補充 Proxy、中介或邊緣 Proxy,以及無 Proxy 用戶端會瞭解並強制執行這些政策。
以下提供一些例子:
- 根據權重拆分流量,例如在兩個 Service Directory 服務之間
- 流量鏡像處理,例如傳送至稽核服務
users
服務的要求會鏡像至 audit
服務 (按一下即可放大)支援 Cloud Service Mesh 和現有用戶端
即使貴機構已部署 Cloud Service Mesh,您可能還是會有未使用 Cloud Service Mesh 的用戶端。舉例來說,您可能需要從不屬於服務網格的虛擬機器存取服務。
將 Service Directory 服務繫結至 Cloud Service Mesh 後端服務時,Cloud Service Mesh 的用戶端會自動取得該服務的最新資訊。未使用 Cloud Service Mesh 的用戶端可以查詢及使用 Service Directory 中的服務資訊。
限制
在 Service Directory 整合中,Cloud Service Mesh 不支援 FQDN NEG (INTERNET_FQDN_PORT
NEG)。
後續步驟
- 瞭解如何設定整合功能。
- 如要瞭解如何透過這項整合功能進行可觀測性作業,請參閱「透過 Service Directory 進行可觀測性作業和偵錯」。