サービス ディスカバリ

Cloud Service Mesh は、サービスとエンドポイントのディスカバリを提供しています。これらの機能を使用すると、コードをサービスのエンドポイントとして実行する仮想マシン(VM)インスタンスとコンテナ インスタンスをグループ化できます。

Cloud Service Mesh は、最新のヘルスチェック情報をクライアントと共有できるようにサービスをモニタリングしています。そのため、アプリケーションは Cloud Service Mesh クライアント(Envoy サイドカー プロキシやプロキシレス gRPC アプリケーションなど)を使用してリクエストを送信することで、サービスの最新情報を利用できます。

Cloud Service Mesh のコンテキストで、クライアントとは、VM またはコンテナ上で動作し、サーバーに送信するリクエストを作成するアプリケーション コードのことです。サーバーとは、そのリクエストを受信するアプリケーション コードのことです。Cloud Service Mesh クライアントとは、Cloud Service Mesh に接続され、データプレーンの一部として機能する Envoy や gRPC などの xDS クライアントのことです。

Envoy や gRPC はデータプレーンで次の処理を行います。

  1. リクエストを調べ、バックエンド サービス(デプロイ時に構成するリソースの一つ)と照合します。
  2. リクエストが一致すると、以前に構成されたトラフィック ポリシーまたはセキュリティ ポリシーを適用し、バックエンドまたはエンドポイントを選択した後、そのバックエンドまたはエンドポイントにリクエストを転送します。

サービス ディスカバリ

Cloud Service Mesh はサービス ディスカバリを提供しています。Cloud Service Mesh を構成するときは、バックエンド サービスを作成します。また、送信リクエスト(アプリケーション コードから送信されて Cloud Service Mesh クライアントで処理されるリクエスト)を特定のサービスと照合する方法を指定するルーティング ルールも定義します。そのため、Cloud Service Mesh クライアントは、ルールと一致するリクエストを処理するときに、そのリクエストを受信するサービスを選択できます。

例:

  • アプリケーションを VM で実行しているとします。この VM には Cloud Service Mesh に接続されている Envoy サイドカー プロキシがあり、アプリケーションに代わって送信リクエストを処理しています。
  • バックエンド サービスは、payments という名前で構成済みです。このバックエンド サービスには 2 つのネットワーク エンドポイント グループ(NEG)バックエンドがあり、payments サービスのコードを実行するさまざまなコンテナ インスタンスを指しています。
  • sidecar-mesh という名前のメッシュを定義する Mesh リソースを構成済みです。
  • バックエンド サービス payments とホスト名 helloworld-gce のトラフィック目的地を定義する Route リソースを構成済みです。

この構成では、(VM 上の)アプリケーションが HTTP リクエストを payments.example.com に送信すると、Cloud Service Mesh クライアントはこのリクエストが payments サービスに向けられたものだと認識します。

プロキシレス gRPC サービスで Cloud Service Mesh を使用する場合も、サービス ディスカバリは同じように機能します。ただし、Cloud Service Mesh クライアントとして機能する gRPC ライブラリは、xDS リゾルバが指定されているサービスに関する情報のみを取得します。Envoy はデフォルトで、Envoy ブートストラップ ファイルに指定された Virtual Private Cloud(VPC)ネットワークで構成されているすべてのサービスに関する情報を取得します。

エンドポイント ディスカバリ

サービス ディスカバリを使用すると、クライアントがサービスを認識できます。エンドポイント ディスカバリを使用すると、クライアントはコードを実行しているインスタンスを認識できます。

サービスを作成する際には、そのサービスのバックエンドも指定します。これらのバックエンドは、マネージド インスタンス グループ(MIG)の VM または NEG のコンテナです。Cloud Service Mesh は、このような MIG と NEG をモニタリングして、インスタンスとエンドポイントが作成および削除されるタイミングを認識します。

Cloud Service Mesh は、これらのサービスに関する最新情報を継続的にクライアントと共有します。この情報により、クライアントは、存在しなくなったエンドポイントに対するトラフィックの送信を避けることができます。また、新しいエンドポイントを認識し、そのエンドポイントが提供する追加の容量を利用できます。

MIG または NEG にエンドポイントを追加し、Cloud Service Mesh を設定する以外に、Cloud Service Mesh でサービス ディスカバリを有効にするための追加構成は必要ありません。

Cloud Service Mesh でのサイドカー プロキシによるトラフィック インターセプト

Cloud Service Mesh はサイドカー プロキシ モデルをサポートしています。このモデルでは、アプリケーションが宛先に送信したトラフィックはインターセプトされ、アプリケーションが実行されているホスト上のサイドカー プロキシのポートにリダイレクトされます。サイドカー プロキシはトラフィックのロード バランシング方法を決定し、トラフィックを宛先に送信します。

Cloud Service Mesh とサービス ルーティング API を使用すると、トラフィック インターセプトを自動的に管理できます。

次のステップ