設定跨專案參照
本文件僅適用於搭配 Google Cloud服務路由 API 使用的 Cloud Service Mesh。如果您要使用 Istio API 設定 Cloud Service Mesh,請勿使用這份文件。
在某些情況下,服務網狀結構設定會納入不同專案中的服務。舉例來說,在共用虛擬私有雲或對等互連虛擬私有雲部署作業中,每個專案擁有者都可以定義自己的服務組合,讓其他所有專案都能使用這些服務。
Mesh 資源的跨專案設定 (按一下可放大)這項設定稱為跨專案設定,因為在不同專案中定義的多個資源會結合成單一設定,可提供給 Envoy Proxy 或無 Proxy gRPC 用戶端。
以下操作說明使用 Mesh 和 HTTPRoute 資源,但也可以套用至 Gateway 資源,以及 GRPCRoute 和 TCPRoute 資源。
設定 Mesh 資源
請指定專案做為管理 Mesh 資源的主機專案。任何服務帳戶只要具備在這個專案中建立、更新或刪除 Mesh 資源的權限,就能控制附加至這個專案中 Mesh 資源的路由設定。
在
shared-mesh.yaml檔案中建立Mesh規格。name: shared-mesh interceptionPort: 15001
在這個專案中定義
Mesh資源。gcloud network-services meshes import shared-mesh \ --source=shared-mesh.yaml \ --location=global
請記下
Mesh資源的完整 URI,因為服務擁有者需要 URI 才能將路徑附加至這個Mesh。/projects/HOST_PROJECT_NUMBER/locations/global/meshes/shared-mesh
將此
Mesh的networkservices.meshes.useIAM 權限授予跨專案服務帳戶,這樣這些帳戶就能將服務資訊附加至此Mesh。gcloud projects add-iam-policy-binding HOST_PROJECT_NUMBER --member='HTTP_ROUTE_SERVICE_OWNER_ACCOUNT' --role='roles/compute.networkAdmin'
所有已獲授權的networkservices.meshes.use服務擁有者,都可以將其路由規則新增至此Mesh資源。
在服務專案中設定路由
每位服務擁有者都需要在專案中建立一或多個後端服務和 Route 資源,類似於補充 Proxy 設定指南中的範例。唯一的差異在於,每個 HTTPRoute、GRPCRoute 或 TCPRoute 資源都必須在 meshes 欄位中提供主機專案 Mesh 資源的 URI。
請使用以下內容填入
meshes欄位。您可以使用專案 ID 或專案編號。echo "name: sharedvpc-http-route hostnames: - helloworld-gce meshes: - /projects/HOST_PROJECT_NUMBER/locations/global/meshes/shared-mesh rules: - action: destinations: - serviceName: \"url/of/the/service\"" | \ gcloud network-services http-routes import sharedvpc-http-route \ --source=- \ --location=global
在服務專案中建立用戶端服務
設定位於服務專案中的 Cloud Service Mesh 用戶端時,啟動設定必須指定 Mesh 資源所在的專案編號和 Mesh 名稱。這項規定同時適用於 Envoy Proxy 和無 Proxy gRPC 部署。使用 Envoy 部署項目時,請使用 --service-proxy:project-number 選項。
後續步驟
- 如要瞭解如何列出與
Mesh或Gateway資源相關聯的路線資源,請參閱「列出Route資源」。