- リソース: 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[] |
必須。このルートがトラフィックを記述する、オプションのポートを含むサービス ホスト名。 形式: Hostname は、ネットワーク ホストの完全修飾ドメイン名です。これはホスト名の RFC 1123 定義と一致しますが、2 つの注意すべき例外があります。- IP は許可されていません。- ホスト名の先頭にワイルドカード ラベル( ホスト名は、ネットワーク ホストの末尾にドットを付けない「正確」なドメイン名(例: なお、RFC1035 および RFC1123 に従い、ラベルを小文字の英数字と「-」で作成して、先頭と末尾を英数字にする必要があります。その他の句読点は使用できません。 Mesh または Gateway に関連付けられたルートには一意のホスト名が必要です。ホスト名が競合する複数のルートを接続しようとすると、構成は拒否されます。 たとえば、ホスト名 ポートが指定されている場合、gRPC クライアントはこのルールに一致するポートとチャネル URI を使用する必要があります(「xds:///service:123」など)。それ以外の場合は、ポートを指定せずに URI(「xds:/」など)を指定する必要があります。 |
meshes[] |
省略可。メッシュは、この GrpcRoute が接続されているメッシュのリストを、メッシュによって処理されるリクエストをルーティングするルーティング ルールの一つとして定義します。 各メッシュの参照は、パターン |
gateways[] |
省略可。ゲートウェイは、この GrpcRoute が接続されているゲートウェイのリストを、ゲートウェイによって処理されるリクエストをルーティングするルーティング ルールの一つとして定義します。 各ゲートウェイの参照は、パターン |
rules[] |
必須。トラフィックのルーティング方法を定義する詳細なルールのリスト。 1 つの GrpcRoute 内で、最初に一致した GrpcRoute.RouteRule に関連付けられた GrpcRoute.RouteAction が実行されます。少なくとも 1 つのルールを選択する必要があります |
RouteRule
トラフィックをルーティングする方法を説明します。
JSON 表現 |
---|
{ "matches": [ { object ( |
フィールド | |
---|---|
matches[] |
省略可。matches は、受信 gRPC リクエストとルールを照合するために使用する条件を定義します。それぞれの matches は独立しています。つまり、いずれかの matches を満たすと、このルールが一致します。matches フィールドが指定されていない場合、このルールは無条件にトラフィックと一致します。 |
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 フィールドに従って Backend Service 間で分割されます。 |
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 |
クライアント リクエストを中止するための仕様。 |
遅延
宛先に送信される前にクライアント リクエストをフォールト インジェクションの一環として遅延させる方法の仕様。
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
特定の宛先ホストをエンコードする「GSSA」という名前の「セッション Cookie」を日付プレーンが提供する Cookie ベースのステートフル セッション アフィニティの仕様、およびその Cookie を含むリクエストは、宛先ホストが正常な状態で残っている限り、そのホストに転送されます。
gRPC プロキシレス メッシュ ライブラリまたはサイドカー プロキシがセッション クッキーを管理しますが、クライアント アプリケーション コードは、セッション内の各 RPC から次の RPC に Cookie をコピーする役割を担います。
JSON 表現 |
---|
{ "cookieTtl": string } |
フィールド | |
---|---|
cookieTtl |
必須。データプレーンで生成された Set-Cookie ヘッダーの Cookie TTL 値。Cookie の有効期間は、1 秒以上 86,400 秒(24 時間)以下の値に設定できます。
|
メソッド |
|
---|---|
|
指定されたプロジェクトとロケーションで新しい GrpcRoutes を作成します。 |
|
1 つの GrpcRoute を削除します。 |
|
1 つの GrpcRoute の詳細情報を取得します。 |
|
指定されたプロジェクトとロケーションの GrpcRoutes を一覧で表示します。 |
|
単一の GrpcRoute のパラメータを更新します。 |