設定跨專案參照

本文僅適用於搭配 Google Cloud服務路徑 API 使用的 Cloud Service Mesh。如果您要使用 Istio API 設定 Cloud Service Mesh,請勿使用本文。

在某些情況下,服務網格設定包含不同專案中的服務。舉例來說,在共用虛擬私有雲或對等互連虛擬私有雲部署作業中,每個專案擁有者都可以定義自己的服務組合,讓所有其他專案都能使用這些服務。

使用 Mesh 資源進行跨專案設定
使用 Mesh 資源的跨專案設定 (按一下即可放大)

這項設定稱為「跨專案」設定,因為不同專案中定義的多項資源會合併為單一設定,可提供給 Envoy Proxy 或無 Proxy 的 gRPC 用戶端。

下列操作說明使用 MeshHTTPRoute 資源,但這些說明也適用於 Gateway 資源,以及 GRPCRouteTCPRoute 資源。

設定 Mesh 資源

將專案指定為管理 Mesh 資源的主專案。只要服務帳戶有權在這個專案中建立、更新或刪除 Mesh 資源,就能控管附加至這個專案 Mesh 資源的路由設定。

  1. shared-mesh.yaml 檔案中,建立 Mesh 規格。

    name: shared-mesh
    interceptionPort: 15001
    
  2. 在這個專案中定義 Mesh 資源。

    gcloud network-services meshes import shared-mesh \
      --source=shared-mesh.yaml \
      --location=global
    
  3. 請記下 Mesh 資源的完整 URI,因為服務擁有者需要這個 URI,才能將路徑附加至這個 Mesh

    /projects/HOST_PROJECT_NUMBER/locations/global/meshes/shared-mesh
    
  4. 將這個 Meshnetworkservices.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.useMesh

在服務專案中設定路由

每個服務擁有者都需要在專案中建立一或多個後端服務和 Route 資源,類似於「補充 Proxy 設定指南」中的範例。唯一不同的是,每個 HTTPRouteGRPCRouteTCPRoute 資源的 meshes 欄位都必須包含主專案 Mesh 資源的 URI。

  1. 請使用下列內容填入 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 選項。

後續步驟

  • 如要瞭解如何列出與 MeshGateway 資源相關聯的路徑資源,請參閱「列出 Route 資源」。