設定跨專案參照

本文件僅適用於搭配 Google Cloud服務路由 API 使用的 Cloud Service Mesh。如果您要使用 Istio API 設定 Cloud Service 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.use服務擁有者,都可以將其路由規則新增至此Mesh資源。

在服務專案中設定路由

每位服務擁有者都需要在專案中建立一或多個後端服務和 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 資源」。