Cloud Service Mesh のターゲット プロキシ

このドキュメントは、ロード バランシング API を使用する Cloud Service Mesh にのみ適用されます。Cloud Service Mesh をデプロイするには、サービス ルーティング API を使用することを強くおすすめします。

Cloud Service Mesh を構成すると、構成するリソースの 1 つがターゲット プロキシになります。Cloud Service Mesh の観点では、ターゲット プロキシは主に次の 2 つの目的で使用されます。

  • サービスに関連付けられたバックエンドまたはエンドポイントへの接続を開いたときに Cloud Service Mesh クライアントが使用するプロトコルを定義する。

  • 転送ルールと URL マップを使用してルーティング ルール マップを作成する。ルーティング ルール マップは、ターゲット プロキシのタイプに応じて、追加のルーティング機能(ルーティング ルールなど)を提供します。無効な選択肢は、ユーザー インターフェースに表示されないか、API によって拒否されます。

ターゲット プロキシのタイプとリクエスト プロトコル

Cloud Service Mesh は、構成するターゲット プロキシのタイプに基づいて、クライアント向けに異なる構成を生成します。ターゲット プロキシのタイプを構成すると、Cloud Service Mesh クライアントは特定のリクエスト プロトコルを使用します。

ターゲット プロキシ リクエスト プロトコル
HTTPS クライアントが HTTPS 接続を開始する
HTTP クライアントが HTTP 接続を開始する
gRPC クライアントが gRPC 接続を開始する
TCP クライアントが TCP 接続を開始する

選択できる対象が 1 つのタイプのみに制限されることはありません。たとえば、あるサービスに対処する際にアプリケーションが HTTP を使用する一方で、他のサービスに対処する際には TCP を使用する場合があります。そのようなユースケースでは、ターゲット HTTP プロキシとターゲット TCP プロキシの両方を作成する必要があります。

ルーティング ルール マップにおける有効なリソースの組み合わせ

構成ミスを回避するため、Cloud Service Mesh では、次のようなルーティング ルール マップのみ作成できます。

  • 転送ルール > グローバル ターゲット HTTPS プロキシ > URL マップ > 1 つ以上のバックエンド サービス
  • 転送ルール > グローバル ターゲット HTTP プロキシ > URL マップ > 1 つ以上のバックエンド サービス
  • 転送ルール > グローバル ターゲット gRPC プロキシ > URL マップ > 1 つ以上のバックエンド サービス
  • 転送ルール > グローバル ターゲット TCP プロキシ > 1 つのバックエンド サービス

Google Cloud コンソールを使用してターゲット HTTP プロキシを設定する場合、ターゲット プロキシはルーティング ルール マップ構成の一部として暗黙的に設定されます。TCP プロキシの設定は、Google Cloud コンソールでは現時点でサポートされていません。

Google Cloud CLI または API を使用している場合は、ターゲット プロキシを明示的に構成する必要があります。

トラフィックの処理

以降のセクションでは、使用するターゲット プロキシのタイプに応じてトラフィックを処理する方法について説明します。

ターゲット HTTP または HTTPS プロキシの使用

HTTP または HTTPS ベースのサービスを構成すると、各サービス インスタンスとともに、Envoy プロキシがデプロイされます。Cloud Service Mesh は、この Envoy プロキシを構成します。これはサービス メッシュ データプレーンの一部として次のようにトラフィックを処理します。

Envoy プロキシが送信リクエストを受信します。次に、リクエストの宛先 IP アドレス / ポートと、ターゲット HTTP プロキシまたは HTTPS プロキシを参照する各転送ルールで構成された IP アドレス /ポートを比較します。一致するものが見つかると、Envoy プロキシは、ターゲット プロキシの対応する URL マップに従ってリクエストを評価します。

ターゲット TCP プロキシの使用

TCP ベースのサービスを構成すると、通常、各サービス インスタンスとともに Envoy プロキシがデプロイされます。Cloud Service Mesh は、この Envoy プロキシを構成します。これはサービス メッシュ データプレーンの一部として次のようにトラフィックを処理します。

Envoy プロキシが送信リクエストを受信します。次に、リクエストの宛先 IP アドレス / ポートと、ターゲット TCP プロキシを参照する各転送ルールで構成された IP アドレス / ポートを比較します。各転送ルールは、デフォルトのバックエンド サービスを参照するターゲット プロキシに TCP トラフィックをルーティングします。バックエンド サービスはヘルスチェックを指定し、適切なバックエンドを決定します。

ターゲット gRPC プロキシの使用

gRPC ベースのサービスを構成すると、通常、サービス インスタンスと一緒に Envoy プロキシはデプロイされません。代わりに、Cloud Service Mesh が gRPC ライブラリを構成します。このライブラリはサービス メッシュ データプレーンの一部であり、次のようにしてトラフィックを処理します。

gRPC ライブラリは、URI で指定された hostname[:port] と、ターゲット gRPC プロキシによって参照されるすべての URL マップのホストルールを比較します。一致するものが見つかると、gRPC ライブラリは、一致するホストルールに関連付けられたパスルールに従ってリクエストを評価します。

ターゲット プロキシのリソース

ターゲット プロキシに関する情報を追加、削除、一覧表示、取得するには、REST API または gcloud CLI を使用します。

また、ターゲット プロキシに関する情報を取得するには、次の gcloud コマンドを使用します。

gcloud compute [target-http-proxies | target-tcp-proxies | target-grpc-proxies] list
gcloud compute [target-http-proxies | target-tcp-proxies | target-grpc-proxies] describe TARGET_PROXY_NAME

API

REST API でターゲット プロキシを操作するときに使用できるプロパティとメソッドについては、Cloud Service Mesh でサポートされている次のリソースをご覧ください。

gcloud CLI

Google Cloud CLI については、次のリソースをご覧ください。

次のステップ