プロジェクト間の参照を設定する
このドキュメントは、 Google Cloudサービス ルーティング API を使用する Cloud Service Mesh にのみ適用されます。Istio API を使用する Cloud Service Mesh を構成する場合は、このドキュメントを使用しないでください。
一部のシナリオでは、サービス メッシュ構成に異なるプロジェクトのサービスが含まれています。たとえば、共有 VPC デプロイやピアリング VPC デプロイでは、各プロジェクト オーナーが独自のサービスセットを定義して、これらのサービスを他のすべてのプロジェクトで利用できるようにすることができます。
Mesh リソースを使用したクロス プロジェクト構成(クリックして拡大)この構成はクロス プロジェクト構成と呼ばれています。この構成では、異なるプロジェクトで定義されている複数のリソースが結合されて 1 つの構成を形成し、Envoy プロキシまたはプロキシレス 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にルートを接続する際に必要になるため、Meshリソースの完全な URI をメモしておきます。/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 リソースにルーティング ルールを追加できます。
サービス プロジェクトでルーティングを設定する
各サービス オーナーは、サイドカー プロキシ構成ガイドの例と同様に、プロジェクトに 1 つ以上のバックエンド サービスと Route リソースを作成する必要があります。唯一の違いは、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 プロキシとプロキシレス gRPC デプロイの両方に適用されます。Envoy のデプロイでは、--service-proxy:project-number オプションを使用します。
次のステップ
MeshリソースまたはGatewayリソースに関連付けられたルートリソースを一覧表示する方法については、Routeリソースを一覧表示するをご覧ください。