設定跨專案參照
本文件僅適用於搭配 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.use
IAM 權限授予跨專案服務帳戶,這樣這些帳戶就能將服務資訊附加至此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
資源」。