設定跨專案參照

本文僅適用於搭配 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 資源」。