- リソース: GrpcRoute
- RouteRule
- RouteMatch
- MethodMatch
- タイプ
- HeaderMatch
- タイプ
- RouteAction
- 宛先
- FaultInjectionPolicy
- Delay
- Abort
- RetryPolicy
- StatefulSessionAffinityPolicy
- メソッド
リソース: GrpcRoute
GrpcRoute は、gRPC トラフィックが Mesh リソースまたは Gateway リソースによってルーティングされる方法を定義するリソースです。
| JSON 表現 | 
|---|
| {
  "name": string,
  "selfLink": string,
  "createTime": string,
  "updateTime": string,
  "labels": {
    string: string,
    ...
  },
  "description": string,
  "hostnames": [
    string
  ],
  "meshes": [
    string
  ],
  "gateways": [
    string
  ],
  "rules": [
    {
      object ( | 
| フィールド | |
|---|---|
| name | 
 ID。GrpcRoute リソースの名前。 | 
| selfLink | 
 出力専用。このリソースのサーバー定義 URL | 
| createTime | 
 出力専用。リソース作成時のタイムスタンプ。 RFC 3339 を使用します。生成された出力は常に Z 正規化され、小数点以下は 0、3、6、または 9 桁になります。「Z」以外のオフセットも使用できます。例:  | 
| updateTime | 
 出力専用。リソース更新時のタイムスタンプ。 RFC 3339 を使用します。生成された出力は常に Z 正規化され、小数点以下は 0、3、6、または 9 桁になります。「Z」以外のオフセットも使用できます。例:  | 
| labels | 
 省略可。GrpcRoute リソースに関連付けられたラベルタグのセット。 
 | 
| description | 
 省略可。フリーテキストでのリソースの説明。最大長は 1,024 文字です。 | 
| hostnames[] | 
 必須。このルートがトラフィックを記述する、オプションのポートを含むサービスホスト名。 形式:  ホスト名は、ネットワーク ホストの完全修飾ドメイン名です。これはホスト名の RFC 1123 定義と一致しますが、2 つの注意すべき例外があります。まず、IP は許可されていません。また、ホスト名の先頭にワイルドカード ラベル( ホスト名は、ネットワーク ホストの末尾にドットを付けない「正確」なドメイン名(例:  なお、RFC1035 および RFC1123 に従い、ラベルを小文字の英数字と「-」で作成して、先頭と末尾を英数字にする必要があります。その他の句読点は使用できません。 Mesh または Gateway に関連付けられたルートには一意のホスト名が必要です。ホスト名が競合する複数のルートを接続しようとすると、構成は拒否されます。 たとえば、ホスト名  ポートが指定されている場合、gRPC クライアントはこのルールに一致するポートを含めたチャネル URI を使用する必要があります(「xds:///service:123」など)。それ以外の場合は、ポートを指定せずに URI(「xds:/」など)を指定する必要があります。 | 
| meshes[] | 
 省略可。meshes は、この GrpcRoute が接続されるメッシュのリストを、メッシュによって処理されるリクエストをルーティングするルーティング ルールの一つとして定義します。 各メッシュの参照は  | 
| gateways[] | 
 省略可。gateways は、この GrpcRoute が接続されるゲートウェイのリストを、ゲートウェイによって処理されるリクエストをルーティングするルーティング ルールの一つとして定義します。 各ゲートウェイの参照は  | 
| rules[] | 
 必須。トラフィックのルーティング方法を定義する詳細なルールのリスト。 1 つの GrpcRoute 内で、最初に一致した GrpcRoute.RouteRule に関連付けられた GrpcRoute.RouteAction が実行されます。少なくとも 1 つのルールを指定する必要があります。 | 
RouteRule
トラフィックをルーティングする方法を指定します。
| JSON 表現 | 
|---|
| { "matches": [ { object ( | 
| フィールド | |
|---|---|
| matches[] | 
 省略可。matches は、受信 gRPC リクエストとルールを照合するために使用する条件を定義します。それぞれの条件は独立しています。つまり、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 フィールドに従ってバックエンド サービス間で分割されます。 | 
| faultInjectionPolicy | 
 省略可。宛先サービスの障害に対するクライアントの復元力をテストするためにトラフィックに導入されるフォールト インジェクションの仕様。フォールト インジェクションの一環として、クライアントが宛先サービスにリクエストを送信する前に、一定の割合のリクエストに遅延を発生させることができます。同様に、クライアントからのリクエストを一定の割合で中止することもできます。 timeout と retryPolicy は、faultInjectionPolicy で構成されているクライアントで無視されます | 
| timeout | 
 省略可。選択したルートのタイムアウトを指定します。リクエストが完全に処理されてから(つまり、ストリームの終了時点)、レスポンスが完全に処理されるまでのタイムアウトが計算されます。タイムアウトにはすべての再試行が含まれます。 
 | 
| retryPolicy | 
 省略可。このルートに関連付けられた再試行ポリシーを指定します。 | 
| statefulSessionAffinity | 
 省略可。Cookie ベースのステートフル セッション アフィニティを指定します。 | 
| idleTimeout | 
 省略可。選択したルートのアイドル タイムアウトを指定します。アイドル タイムアウトは、アップストリーム接続とダウンストリーム接続のいずれにおいても送受信されるバイトがない期間として定義されます。設定しない場合、デフォルトのアイドル タイムアウトは 1 時間です。0 秒に設定すると、タイムアウトは無効になります。 
 | 
Destination
トラフィックがルーティングされる宛先。
| JSON 表現 | 
|---|
| { // Union field | 
| Fields | |
|---|---|
| 共用体フィールド 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] の範囲にする必要があります。 | 
Abort
宛先に送信される前にクライアント リクエストをフォールト インジェクションの一環として中止する方法の仕様。
| JSON 表現 | 
|---|
| { "httpStatus": integer, "percentage": integer } | 
| フィールド | |
|---|---|
| httpStatus | 
 リクエストの中止に使用される HTTP ステータス コード。 値は 200 以上 599 以下でなければなりません。 | 
| percentage | 
 中止されるトラフィックの割合。 値は [0, 100] の範囲にする必要があります。 | 
RetryPolicy
再試行の仕様。この再試行ルールが適用される条件を 1 つ以上指定します。指定できる値は次のとおりです。
| 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 の詳細を取得します。 | 
| 
 | 指定されたプロジェクトとロケーションの GrpcRoutes の一覧を取得します。 | 
| 
 | 1 つの GrpcRoute のパラメータを更新します。 |