ルーティング ルール マップの概要

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

ルーティング ルール マップは、次の要素から構成されます。

これらのリソースを Cloud Service Mesh 用に作成および構成すると、Cloud Service Mesh は、その値を使用してデータプレーンに送信する構成を作成します。この構成には、Envoy プロキシやプロキシレス gRPC アプリケーションなどの xDS クライアントが含まれます。データプレーンは、この構成に従ってトラフィックを処理します。

転送ルールはターゲット プロキシを参照します。ルールには、IP アドレスとポートがあります。Cloud Service Mesh のデプロイでは、転送ルールのロード バランシング スキームを INTERNAL_SELF_MANAGED に設定する必要があります。ターゲット プロキシは、URL マップを参照します。これら 3 つのリソースを組み合わせてルーティング ルール マップを作成します。

転送ルールで、validateForProxyless フィールドが TRUE に設定されているターゲット gRPC プロキシを参照する場合は、IP アドレスを 0.0.0.0 に設定する必要があります。 validateForProxylessTRUE に設定されている場合、0.0.0.0 以外の IP アドレスを指定する構成は拒否されます。

ルーティング ルール マップは、サービス メッシュ内でクライアントからサーバーにトラフィックを転送する方法を定義します。

サポートされているターゲット プロキシのタイプ

Cloud Service Mesh は、次のターゲット プロキシ タイプをサポートしています。

  • ターゲット HTTP プロキシ。クライアントとサーバーが HTTP または HTTP/2 の送受信を行うときに構成します。
  • ターゲット HTTPS プロキシ。クライアントとサーバーが HTTPS トラフィックの送受信を行うときに構成します。これは、Envoy プロキシでサービスのセキュリティを設定するときに必要です。
  • ターゲット TCP プロキシ。クライアントとサーバーが TCP トラフィックを送受信する場合に構成します。
  • ターゲット gRPC プロキシ。クライアントとサーバーが gRPC トラフィックの送受信を行うときに構成します。ターゲット gRPC プロキシには、プロキシレス gRPC サービスをデプロイする場合に TRUE に設定されるフィールド validateForProxyless が含まれます。

Envoy サイドカー プロキシを使用したトラフィック ルーティング

Envoy サイドカー プロキシで Cloud Service Mesh を使用すると、クライアント リクエストは次のようにルーティングされます。

  • ネットワーク スタックがリクエストをインターセプトして、Envoy サイドカー プロキシにリダイレクトします。
  • Envoy サイドカー プロキシは、リクエストの IP アドレスとポートを探します。
  • IP アドレスとポートのペアは、負荷分散スキームが INTERNAL_SELF_MANAGED に設定されている転送ルールで指定された IP とポートに対してチェックされます。
  • 一致する IP アドレスとポートの転送ルールが見つかった場合、Envoy は転送ルールが参照しているターゲット HTTP プロキシまたはターゲット gRPC プロキシを探します。
  • Envoy は、ターゲット プロキシが参照する URL マップを確認します。
  • Envoy は、URL マップで指定されたルールに従ってリクエストをルーティングします。

ターゲット TCP プロキシを使用したトラフィックのルーティング方法については、Cloud Service Mesh を使用した TCP トラフィックのルーティングをご覧ください。

プロキシレス gRPC アプリケーションを使用したトラフィック ルーティング

プロキシレス gRPC アプリケーションの場合、この動作は異なります。gRPC クライアントを構成するときは、クライアントが接続するサービスのターゲット URI を指定します。この URI では、xds 名前解決スキームと hostname:port 形式(例: xds:///example.hostname:8080)を使用します。

プロキシレス gRPC クライアントが Cloud Service Mesh に接続すると、Cloud Service Mesh はそのサービスに対応する情報を次のように送信します。

  • Cloud Service Mesh は、ロード バランシング スキームが INTERNAL_SELF_MANAGED に設定された転送ルールを探して、ターゲット URI で指定されたポートと一致するポートの転送ルールを見つけます。
  • Cloud Service Mesh は、各転送ルールのターゲット gRPC プロキシまたはターゲット HTTP プロキシを探します。
  • Cloud Service Mesh は、これらのターゲット gRPC プロキシまたはターゲット HTTP プロキシによって参照される URL マップを見つけます。
  • Cloud Service Mesh は、hostname[:port] 形式の URL マップにあるホストルールをチェックし、一致を探します。
  • 一致するものが見つかると、Cloud Service Mesh はルーティング ルールとサービス情報を gRPC クライアントに返します。

複数の一致が見つかった場合、動作は定義されておらず、予期しない動作が発生する可能性があります。通常、これは、次の両方の条件が満たされている場合に行われます。

  • 同じホスト名が複数の URL マップで使用されている。
  • ロード バランシング スキーム INTERNAL_SELF_MANAGED の複数の転送ルールで同じポートを指定している。

そのため、同じポートを指定する転送ルールで参照される複数の URL マップでは、同じホスト名を再利用しないことをおすすめします。

次のステップ