ルーティング ルール マップの概要
このドキュメントは、ロード バランシング API を使用する Cloud Service Mesh にのみ適用されます。サービス ルーティング API を使用することを強くおすすめします。
ルーティング ルール マップは、次の要素から構成されます。
- ターゲット プロキシを参照する転送ルール
- URL マップを参照するターゲット プロキシ
- さまざまなルーティング ルールを含む URL マップ
これらのリソースを 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
に設定する必要があります。 validateForProxyless
が TRUE
に設定されている場合、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 マップでは、同じホスト名を再利用しないことをおすすめします。
次のステップ
トラフィックの処理方法をきめ細かく制御するには、高度なトラフィック管理の概要をご覧ください。
Cloud Service Mesh の詳細については、Cloud Service Mesh の概要をご覧ください。