Cloud Service Mesh 與 Service Directory 的整合
本文件將概略說明如何在 Cloud Service Mesh 中使用 Service Directory 的服務註冊功能,讓 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,讓 Service Directory 整合內部傳送 Network Load Balancer、內部應用程式負載平衡器和 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 是服務登錄檔。服務目錄可讓您註冊各種服務,包括以 Google Cloud 或其他環境 (例如內部部署資料中心) 為基礎的服務。每項服務都包含專屬名稱和零個或多個服務端點。服務端點由位址、通訊埠、屬性和中繼資料組成。如果端點為零,您就無法將流量轉送至服務。
服務繫結
服務繫結是包含 Service Directory 服務完整網域名稱 (FQDN) 的資源。例如 projects/test-proj/locations/us-east1/namespaces/test-namespace/services/test-service
是服務目錄服務的 FQDN。
後端服務
後端服務是設定資源,可將資訊提供給 Cloud Service Mesh,包括後端 (例如受管理的執行個體群組),後端服務會將流量路由至這些後端。參照服務繫結的後端服務無法擁有後端。如要將 Cloud Service Mesh 與 Service Directory 整合,您必須建立新的後端服務,以便參照服務繫結。
後端服務可以有多個服務繫結。這項設定適用於您在不同區域部署相同應用程式的情況。您可以將各個區域部署作業註冊至 Service Directory 的區域例項,例如區域服務 1 和區域服務 2。然後,這些區域服務目錄服務每個都可以使用兩個服務繫結與相同的後端服務建立關聯。全球服務繫結 1 會與區域 A 中的區域服務 1 建立關聯,而全球服務繫結 2 會與區域 B 中的區域服務 2 建立關聯。
用途
將 Cloud Service Mesh 部署作業與服務目錄整合後,就能支援新的用途,在您需要依賴其他團隊或機構擁有或發布的服務時,這項功能就會派上用場。
讓現有服務可供 Cloud Service Mesh 使用
服務目錄可與 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 同步服務端點,自動解析服務端點。如果服務目錄服務的端點已更新,Cloud Service Mesh 會自動同步處理這些變更。
- 您可以在 Cloud Service Mesh 中設定各種路由和流量管理政策,例如逾時。這些政策可讓您微調應用程式向服務目錄服務發出要求的方式。如要瞭解 Cloud Service Mesh 中的路由和流量管理,請參閱「進階流量管理」。
- Cloud Service Mesh 會使用流量管理功能 (例如以距離為依據的負載平衡),以最佳方式將流量從應用程式導向端點,例如盡量縮短往返時間。
當您 (使用者) 使用 Cloud Service Mesh,並將後端服務附加至 Service Directory 服務時,跨團隊協調的額外負擔就會減少。
- 您可以依名稱連結服務
Payments
。 Cloud Service Mesh 會與其用戶端共用
Payments
服務的相關資訊。- 舉例來說,在服務網格中執行的附加程式 Proxy 會知道可存取服務的端點 (例如
10.0.0.1:80
)。
- 舉例來說,在服務網格中執行的附加程式 Proxy 會知道可存取服務的端點 (例如
應用程式可以依名稱呼叫這項服務,而您或應用程式不必瞭解外部服務的端點。在圖表中,服務為
Payments
服務。當服務供應商更新外部服務 (例如變更端點) 時,Cloud Service Mesh 會接收更新內容,並與客戶無縫共用。
使用輸入點存取範圍內的服務
團隊可能會將一組服務歸入 VPC Service Controls 範圍,並透過單一入口點公開這些服務。這個入口點可註冊至 Service Directory,並提供給想在邊界內存取服務的使用者。如要進一步瞭解 VPC Service Controls 範圍,請參閱「服務範圍詳細資料和設定」。
舉例來說,團隊可以使用內部應用程式負載平衡器建立入口網關,將要求分散至叢集中的一系列 Kubernetes 服務。這個入口網關會自動註冊為 Service Directory 的服務。如要存取 Kubernetes 服務,消費者可以在服務目錄中查詢這個入口閘道。接著,消費者可以設定 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 部署作業中使用多個 VPC 網路。在這種情況下,一個 VPC 網路中的服務可能需要存取其他 VPC 網路中的服務。您可以設定虛擬私有雲對等互連,以便存取其他虛擬私有雲網路中的服務,但如果對等互連網路之間的 IP 位址範圍重疊,這類設定就會造成複雜情況。
Private Service Connect 可使用單一 IP:port
端點,安全地讓一個虛擬私有雲網路中的服務可供另一個虛擬私有雲網路中的服務存取。
其他跨網域範例
前述兩個範例說明瞭您可能需要跨網域的情況,但還有許多其他範例。舉例來說,您建立的閘道位於兩個 Google Cloud 區域的交會處。位於某個區域的服務可透過這個閘道連結至其他區域的服務。您可以在服務目錄中將閘道註冊為服務,然後按照本文件所述,將閘道與 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 中查詢及使用服務資訊。
限制
Cloud Service Mesh 不支援 Service Directory 整合中的 FQDN NEG (INTERNET_FQDN_PORT
NEG)。
後續步驟
- 瞭解如何設定整合。
- 如要瞭解這項整合功能的可觀察性,請參閱「使用 Service Directory 進行可觀察性和偵錯」。