- リソース: GrpcRoute
- RouteRule
- RouteMatch
- MethodMatch
- タイプ
- HeaderMatch
- タイプ
- RouteAction
- 宛先
- FaultInjectionPolicy
- Delay
- Abort
- RetryPolicy
- StatefulSessionAffinityPolicy
- メソッド
リソース: GrpcRoute
GrpcRoute は、Mesh リソースまたは Gateway リソースによって転送される gRPC トラフィックの転送方法を定義するリソースです。
JSON 表現 |
---|
{
"name": string,
"selfLink": string,
"createTime": string,
"updateTime": string,
"labels": {
string: string,
...
},
"description": string,
"hostnames": [
string
],
"meshes": [
string
],
"gateways": [
string
],
"rules": [
{
object ( |
フィールド | |
---|---|
name |
必須。GrpcRoute リソースの名前。パターン |
selfLink |
出力専用。このリソースのサーバー定義 URL |
createTime |
出力専用。リソース作成時のタイムスタンプ。 RFC3339 UTC「Zulu」形式のタイムスタンプ。精度はナノ秒まで、小数点以下は最大 9 桁。例: |
updateTime |
出力専用。リソース最終更新時のタイムスタンプ。 RFC3339 UTC「Zulu」形式のタイムスタンプ。精度はナノ秒まで、小数点以下は最大 9 桁。例: |
labels |
省略可。GrpcRoute リソースに関連付けられたラベルタグのセット。
|
description |
省略可。リソースのフリーテキストの説明。最大長は 1,024 文字です。 |
hostnames[] |
必須。このルートがトラフィックを記述するオプションのポートを持つサービス ホスト名。 係数: ホスト名は、ネットワーク ホストの完全修飾ドメイン名です。これはホスト名の RFC 1123 定義と一致しますが、2 つの注意すべき例外があります。- IP は許可されていません。 - ホスト名にワイルドカード ラベル( ホスト名は、ネットワーク ホストの末尾のドットのないドメイン名( なお、RFC1035 と RFC1123 に従い、ラベルは小文字の英数字または「-」で構成し、先頭と末尾には英数字を使用する必要があります。その他の句読点は使用できません。 メッシュまたはゲートウェイに関連付けられたルートには一意のホスト名が必要です。競合するホスト名を持つ複数のルートを接続しようとすると、構成は拒否されます。 たとえば、ホスト名 ポートが指定されている場合、gRPC クライアントはこのルールに一致するポートとチャネル URI を使用する必要があります(「xds:///service:123」など)。それ以外の場合は、ポートを指定せずに URI(「xds:/」など)を指定する必要があります(「xds:///service」など)。 |
meshes[] |
省略可。メッシュでは、メッシュによって提供されるリクエストをルーティングするルーティング ルールの 1 つとして、この GrpcRoute が接続されているメッシュのリストを定義します。 各メッシュ参照は、パターン |
gateways[] |
省略可。ゲートウェイは、この GrpcRoute が接続されているゲートウェイのリストを定義します。これは、ゲートウェイによって処理されるリクエストをルーティングするルーティング ルールの 1 つです。 各ゲートウェイの参照は、パターン |
rules[] |
必須。トラフィックのルーティング方法を定義する詳細なルールのリスト。 1 つの GrpcRoute 内で、最初に一致した GrpcRoute.RouteRule に関連付けられた GrpcRoute.RouteAction が実行されます。少なくとも 1 つのルールを用意する必要があります |
RouteRule
トラフィックのルーティング方法について説明します。
JSON 表現 |
---|
{ "matches": [ { object ( |
フィールド | |
---|---|
matches[] |
省略可。Matches は、受信 gRPC リクエストとルールを照合するために使用する条件を定義します。それぞれの一致は独立しています。つまり、一致のいずれかが満たされると、このルールが一致します。 一致フィールドが指定されていない場合、このルールは無条件にトラフィックをマッチングします。 |
action |
必須。トラフィックのルーティング方法を定義する詳細なルール。このフィールドは必須です。 |
RouteMatch
トラフィックを照合する条件。指定されたすべてのフィールドが一致する場合、RouteMatch は一致したと見なされます。
JSON 表現 |
---|
{ "headers": [ { object ( |
フィールド | |
---|---|
headers[] |
省略可。照合するヘッダーのコレクションを指定します。 |
method |
省略可。照合する gRPC メソッド。このフィールドを空にするか省略すると、すべてのメソッドと一致します。 |
MethodMatch
メソッドとの一致を指定します。
JSON 表現 |
---|
{
"type": enum ( |
フィールド | |
---|---|
type |
省略可。名前を照合する方法を指定します。指定しない場合は、デフォルト値の「EXACT」が使用されます。 |
grpcService |
必須。照合するサービスの名前。指定しない場合は、すべてのサービスに一致します。 |
grpcMethod |
必須。照合するメソッドの名前。指定しない場合は、すべてのメソッドと一致します。 |
caseSensitive |
省略可。一致の際に大文字と小文字が区別されるように指定します。デフォルト値は true です。caseSensitive は、REGULAR_EXPRESSION のタイプと一緒に使用できません。 |
タイプ
一致のタイプ。
列挙型 | |
---|---|
TYPE_UNSPECIFIED |
未設定。 |
EXACT |
指定した名前と完全に一致します。 |
REGULAR_EXPRESSION |
grpcMethod と grpcService を正規表現として解釈します。RE2 構文がサポートされています。 |
HeaderMatch
ヘッダーのコレクションとの一致。
JSON 表現 |
---|
{
"type": enum ( |
フィールド | |
---|---|
type |
省略可。ヘッダーの値と照合する方法を指定します。指定しない場合は、デフォルト値の EXACT が使用されます。 |
key |
必須。ヘッダーのキー。 |
value |
必須。 - ヘッダーの値。 |
タイプ
一致のタイプ。
列挙型 | |
---|---|
TYPE_UNSPECIFIED |
未設定。 |
EXACT |
指定された正確な値にのみ一致します。 |
REGULAR_EXPRESSION |
値で指定された接頭辞に準拠するパスと一致します。RE2 構文がサポートされています。 |
RouteAction
一致したトラフィックをルーティングする方法を指定します。
JSON 表現 |
---|
{ "destinations": [ { object ( |
フィールド | |
---|---|
destinations[] |
省略可。トラフィックの宛先のサービス。複数の宛先が指定されている場合、トラフィックは、これらの宛先の weight フィールドに従ってバックエンド サービス間で分割されます。 |
faultInjectionPolicy |
省略可。宛先サービスの障害に対するクライアントの復元性をテストするために、トラフィックに導入されたフォールト インジェクションの仕様。フォールト インジェクションの一環として、クライアントが宛先にリクエストを送信すると、それらのリクエストを宛先サービスに送信する前に、一定の割合のリクエストに遅延が生じる可能性があります。同様に、クライアントからのリクエストも、一定の割合で中止できます。 timeout と retryPolicy は、faultInjectionPolicy で構成されているクライアントで無視されます |
timeout |
省略可。選択したルートのタイムアウトを指定します。リクエストが完全に処理されてから(つまりストリームの終了)、レスポンスが完全に処理されるまでのタイムアウトが計算されます。タイムアウトにはすべての再試行が含まれます。
|
retryPolicy |
省略可。このルートに関連付けられた再試行ポリシーを指定します。 |
statefulSessionAffinity |
省略可。Cookie ベースのステートフル セッション アフィニティを指定します。 |
idleTimeout |
省略可。選択したルートのタイムアウトを指定します。アイドル タイムアウトは、アップストリーム接続またはダウンストリーム接続で送受信されたバイトがない期間として定義されます。設定しない場合、デフォルトのアイドル タイムアウトは 1 時間です。0 秒に設定すると、タイムアウトは無効になります。
|
目的地
トラフィックのルーティング先となる宛先。
JSON 表現 |
---|
{ // Union field |
フィールド | |
---|---|
共用体フィールド destination_type 。トラフィックを転送する宛先の種類を指定します。destination_type は次のいずれかになります。 |
|
serviceName |
必須。トラフィックのルーティング先となる宛先サービスの URL。BackendService または ServiceDirectoryService のいずれかを参照する必要があります。 |
weight |
省略可。serviceName フィールドで参照されるバックエンドに転送されるリクエストの割合を指定します。これは、- weight/Sum(この宛先リストの重み)として計算されます。ゼロ以外の値の場合、実装がサポートする精度に応じて、ここで定義された正確な割合のイプシロンがある場合があります。 serviceName が 1 つだけ指定されていて、その重みが 0 より大きい場合、トラフィックの 100% がそのバックエンドに転送されます。 いずれかのサービス名に重みが指定される場合、すべてのサービス名に重みを指定する必要があります。 すべてのサービスに重み付けを指定しない場合は、トラフィックがすべてのサービスに均等に分散されます。 |
FaultInjectionPolicy
宛先サービスの障害に対するクライアントの復元性をテストするために、トラフィックに導入されたフォールト インジェクションの仕様。フォールト インジェクションの一環として、クライアントが宛先にリクエストを送信する際、リクエストを宛先サービスに送信する前に、一定の割合のリクエストに遅延が生じる可能性があります。同様に、クライアントからのリクエストも、一定の割合で中止できます。
JSON 表現 |
---|
{ "delay": { object ( |
フィールド | |
---|---|
delay |
クライアント リクエストに遅延を挿入するための仕様。 |
abort |
クライアント リクエストを中止するための仕様。 |
Delay
宛先に送信される前にクライアント リクエストをフォールト インジェクションの一環として遅延させる方法の仕様。
JSON 表現 |
---|
{ "fixedDelay": string, "percentage": integer } |
フィールド | |
---|---|
fixedDelay |
リクエストを転送する前に固定の遅延を指定します。
|
percentage |
遅延を挿入するトラフィックの割合。 値は [0, 100] の範囲にする必要があります。 |
中止
宛先に送信される前にクライアント リクエストをフォールト インジェクションの一環として中止する方法の仕様。
JSON 表現 |
---|
{ "httpStatus": integer, "percentage": integer } |
フィールド | |
---|---|
httpStatus |
リクエストの中止に使用される HTTP ステータス コード。 値は 200 以上 599 以下である必要があります。 |
percentage |
中止されるトラフィックの割合。 値は [0, 100] の範囲にする必要があります。 |
RetryPolicy
再試行の仕様。
JSON 表現 |
---|
{ "retryConditions": [ string ], "numRetries": integer } |
フィールド | |
---|---|
retryConditions[] |
|
numRetries |
許可される再試行回数を指定します。0 より大きい値である必要があります。指定しない場合、デフォルトで 1 になります。 |
StatefulSessionAffinityPolicy
Cookie ベースのステートフル セッション アフィニティの仕様。日付プレーンは「GSSA」という名前の「セッション Cookie」を提供し、特定の宛先ホストをエンコードします。その Cookie を含む各リクエストは、宛先ホストが残っていて正常に機能している限り、そのホストに転送されます。
gRPC プロキシレス メッシュ ライブラリまたはサイドカー プロキシがセッション Cookie を管理しますが、クライアント アプリケーション コードは、セッション内の各 RPC から次の RPC に Cookie をコピーします。
JSON 表現 |
---|
{ "cookieTtl": string } |
フィールド | |
---|---|
cookieTtl |
必須。データプレーンで生成された Set-Cookie ヘッダーの Cookie TTL 値。Cookie の有効期間は、1 秒以上 86,400 秒(24 時間)以下の値に設定できます。
|
メソッド |
|
---|---|
|
指定されたプロジェクトとロケーションで新しい GrpcRoute を作成します。 |
|
1 つの GrpcRoute を削除します。 |
|
1 つの GrpcRoute の詳細を取得します。 |
|
指定されたプロジェクトとロケーションの GrpcRoute を一覧表示します。 |
|
単一の GrpcRoute のパラメータを更新します。 |