REST Resource: projects.locations.grpcRoutes

リソース: 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 (RouteRule)
    }
  ]
}
フィールド
name

string

必須。GrpcRoute リソースの名前。パターン projects/*/locations/global/grpcRoutes/<grpc_route_name> と一致します。

createTime

string (Timestamp format)

出力専用。リソース作成時のタイムスタンプ。

RFC3339 UTC「Zulu」形式のタイムスタンプ。精度はナノ秒まで、小数点以下は最大 9 桁。例: "2014-10-02T15:01:23Z""2014-10-02T15:01:23.045123456Z"

updateTime

string (Timestamp format)

出力専用。リソース更新時のタイムスタンプ。

RFC3339 UTC「Zulu」形式のタイムスタンプ。精度はナノ秒まで、小数点以下は最大 9 桁。例: "2014-10-02T15:01:23Z""2014-10-02T15:01:23.045123456Z"

labels

map (key: string, value: string)

省略可。GrpcRoute リソースに関連付けられたラベルタグのセット。

"key": value ペアのリストを含むオブジェクト。例: { "name": "wrench", "mass": "1.3kg", "count": "3" }

description

string

省略可。リソースのフリーテキストの説明。最大長は 1,024 文字です。

hostnames[]

string

必須。このルートがトラフィックを記述する、オプションのポートを含むサービス ホスト名。

形式: [:]

Hostname は、ネットワーク ホストの完全修飾ドメイン名です。これはホスト名の RFC 1123 定義と一致しますが、2 つの注意すべき例外があります。- IP は許可されていません。- ホスト名の先頭にワイルドカード ラベル(*.)を付けることができます。ワイルドカード ラベルは、単独で最初のラベルとして表示される必要があります。

ホスト名は、ネットワーク ホストの末尾にドットを付けない「正確」なドメイン名(例: foo.example.com)、または、先頭に単一のワイルドカード ラベル(例: *.example.com)が付いたドメイン名の「ワイルドカード」にできます。

なお、RFC1035 および RFC1123 に従い、ラベルを小文字の英数字と「-」で作成して、先頭と末尾を英数字にする必要があります。その他の句読点は使用できません。

Mesh または Gateway に関連付けられたルートには一意のホスト名が必要です。ホスト名が競合する複数のルートを接続しようとすると、構成は拒否されます。

たとえば、ホスト名 *.foo.bar.com*.bar.com を同じルートに関連付けることは問題ありませんが、2 つのルートの両方を *.bar.com に、または両方を bar.com に関連付けることはできません。

ポートが指定されている場合、gRPC クライアントはこのルールに一致するポートとチャネル URI を使用する必要があります(「xds:///service:123」など)。それ以外の場合は、ポートを指定せずに URI(「xds:/」など)を指定する必要があります。

meshes[]

string

省略可。メッシュは、この GrpcRoute が接続されているメッシュのリストを、メッシュによって処理されるリクエストをルーティングするルーティング ルールの一つとして定義します。

各メッシュの参照は、パターン projects/*/locations/global/meshes/<mesh_name> と一致している必要があります。

gateways[]

string

省略可。ゲートウェイは、この GrpcRoute が接続されているゲートウェイのリストを、ゲートウェイによって処理されるリクエストをルーティングするルーティング ルールの一つとして定義します。

各ゲートウェイの参照は、パターン projects/*/locations/global/gateways/<gateway_name> と一致している必要があります。

rules[]

object (RouteRule)

必須。トラフィックのルーティング方法を定義する詳細なルールのリスト。

1 つの GrpcRoute 内で、最初に一致した GrpcRoute.RouteRule に関連付けられた GrpcRoute.RouteAction が実行されます。少なくとも 1 つのルールを選択する必要があります

RouteRule

トラフィックをルーティングする方法を説明します。

JSON 表現
{
  "matches": [
    {
      object (RouteMatch)
    }
  ],
  "action": {
    object (RouteAction)
  }
}
フィールド
matches[]

object (RouteMatch)

省略可。matches は、受信 gRPC リクエストとルールを照合するために使用する条件を定義します。それぞれの matches は独立しています。つまり、いずれかの matches を満たすと、このルールが一致します。matches フィールドが指定されていない場合、このルールは無条件にトラフィックと一致します。

action

object (RouteAction)

必須。トラフィックのルーティング方法を定義する詳細なルール。このフィールドは必須です。

RouteMatch

トラフィックを照合する基準。指定したすべてのフィールドが一致すると、RouteMatch は一致していると見なされます。

JSON 表現
{
  "headers": [
    {
      object (HeaderMatch)
    }
  ],
  "method": {
    object (MethodMatch)
  }
}
フィールド
headers[]

object (HeaderMatch)

省略可。照合するヘッダーのコレクションを指定します。

method

object (MethodMatch)

省略可。照合する gRPC メソッド。このフィールドが空の場合、または省略されている場合は、すべてのメソッドを照合します。

MethodMatch

メソッドの照合条件を指定します。

JSON 表現
{
  "type": enum (Type),
  "grpcService": string,
  "grpcMethod": string,
  "caseSensitive": boolean
}
フィールド
type

enum (Type)

省略可。名前との照合方法を指定します。指定しない場合は、デフォルト値の「EXACT」が使用されます。

grpcService

string

必須。照合するサービスの名前。指定しない場合は、すべてのサービスと一致します。

grpcMethod

string

必須。照合するメソッドの名前。指定しない場合は、すべてのメソッドと一致します。

caseSensitive

boolean

省略可。照合の際に大文字と小文字が区別されるように指定します。デフォルト値は true です。caseSensitive は、REGULAR_EXPRESSION のタイプと一緒に使用できません。

タイプ

一致のタイプ。

列挙型
TYPE_UNSPECIFIED 未指定。
EXACT 指定された正確な名前にのみ一致します。
REGULAR_EXPRESSION grpcMethod と grpcService を正規表現として解釈します。RE2 構文がサポートされています。

HeaderMatch

ヘッダーのコレクションと照合します。

JSON 表現
{
  "type": enum (Type),
  "key": string,
  "value": string
}
フィールド
type

enum (Type)

省略可。ヘッダーの値との照合方法を指定します。指定しない場合は、デフォルト値の EXACT が使用されます。

key

string

必須。ヘッダーのキー。

value

string

必須。 - ヘッダーの値。

タイプ

一致のタイプ。

列挙型
TYPE_UNSPECIFIED 未指定。
EXACT 指定された正確な値にのみ一致します。
REGULAR_EXPRESSION 値で指定された接頭辞に準拠するパスが一致します。RE2 構文がサポートされています。

RouteAction

一致したトラフィックをルーティングする方法を指定します。

JSON 表現
{
  "destinations": [
    {
      object (Destination)
    }
  ],
  "faultInjectionPolicy": {
    object (FaultInjectionPolicy)
  },
  "timeout": string,
  "retryPolicy": {
    object (RetryPolicy)
  },
  "statefulSessionAffinity": {
    object (StatefulSessionAffinityPolicy)
  },
  "idleTimeout": string
}
フィールド
destinations[]

object (Destination)

省略可。トラフィックの宛先のサービス。複数の宛先が指定されている場合、トラフィックはこれらの宛先の weight フィールドに従って Backend Service 間で分割されます。

faultInjectionPolicy

object (FaultInjectionPolicy)

省略可。宛先サービスの障害に対するクライアントの復元性をテストするために、トラフィックに導入されたフォールト インジェクションの仕様。フォールト インジェクションの一環として、クライアントが宛先にリクエストを送信すると、それらのリクエストを宛先サービスに送信する前に、一定の割合のリクエストに遅延が生じる可能性があります。同様に、クライアントからのリクエストも、リクエストの割合によって中止することができます。

timeout と retryPolicy は、faultInjectionPolicy で構成されているクライアントで無視されます

timeout

string (Duration format)

省略可。選択したルートのタイムアウトを指定します。リクエストが完全に処理されてから(つまり、ストリームの終了時点)、レスポンスが完全に処理されるまでのタイムアウトが計算されます。タイムアウトにはすべての再試行が含まれます。

s で終わる小数 9 桁までの秒単位の期間。例: "3.5s"

retryPolicy

object (RetryPolicy)

省略可。このルートに関連付けられた再試行ポリシーを指定します。

statefulSessionAffinity

object (StatefulSessionAffinityPolicy)

省略可。Cookie ベースのステートフル セッション アフィニティを指定します。

idleTimeout

string (Duration format)

省略可。選択したルートのアイドル・タイムアウトを指定します。アイドル タイムアウトは、アップストリーム接続とダウンストリーム接続のいずれにおいても送受信されるバイトがない期間として定義されます。設定しない場合、デフォルトのアイドル タイムアウトは 1 時間です。0 秒に設定すると、タイムアウトは無効になります。

s で終わる小数 9 桁までの秒単位の期間。例: "3.5s"

宛先

トラフィックがルーティングされる宛先。

JSON 表現
{

  // Union field destination_type can be only one of the following:
  "serviceName": string
  // End of list of possible types for union field destination_type.
  "weight": integer
}
フィールド
共用体フィールド destination_type。トラフィックのルーティングされる宛先の種類を指定します。destination_type は次のいずれかになります。
serviceName

string

必須。トラフィックをルーティングする宛先サービスの URL。BackendService または ServiceDirectoryService のいずれかを参照する必要があります。

weight

integer

省略可。serviceName フィールドで参照されるバックエンドに転送されるリクエストの割合を指定します。これは、- weight/Sum(この宛先リストの重み)として計算されます。ゼロ以外の値の場合、実装がサポートする精度によりますが、ここで定義された正確な割合からのイプシロンが存在する可能性があります。

serviceName が 1 つだけ指定されていて、その重みが 0 より大きい場合、トラフィックの 100% がそのバックエンドに転送されます。

いずれかのサービス名に重みが指定される場合、すべてのサービス名に重みを指定する必要があります。

すべてのサービスに重み付けを指定しない場合は、トラフィックがすべてのサービスに均等に分散されます。

FaultInjectionPolicy

宛先サービスの障害に対するクライアントの復元性をテストするために、トラフィックに導入されたフォールト インジェクションの仕様。フォールト インジェクションの一環として、クライアントが宛先にリクエストを送信すると、それらのリクエストを宛先サービスに送信する前に、一定の割合のリクエストに遅延が生じる可能性があります。同様に、クライアントからのリクエストも、リクエストの割合によって中止することができます。

JSON 表現
{
  "delay": {
    object (Delay)
  },
  "abort": {
    object (Abort)
  }
}
フィールド
delay

object (Delay)

クライアント リクエストに遅延を挿入するための仕様。

abort

object (Abort)

クライアント リクエストを中止するための仕様。

遅延

宛先に送信される前にクライアント リクエストをフォールト インジェクションの一環として遅延させる方法の仕様。

JSON 表現
{
  "fixedDelay": string,
  "percentage": integer
}
フィールド
fixedDelay

string (Duration format)

リクエストを転送する前に固定の遅延を指定します。

s で終わる小数 9 桁までの秒単位の期間。例: "3.5s"

percentage

integer

遅延を挿入するトラフィックの割合。

値は [0, 100] の範囲にする必要があります。

中止

宛先に送信される前にクライアント リクエストをフォールト インジェクションの一環として中止する方法の仕様。

JSON 表現
{
  "httpStatus": integer,
  "percentage": integer
}
フィールド
httpStatus

integer

リクエストの中止に使用される HTTP ステータス コード。

値は 200 以上 599 以下でなければなりません。

percentage

integer

中止されるトラフィックの割合。

値は [0, 100] の範囲にする必要があります。

RetryPolicy

再試行の仕様。

JSON 表現
{
  "retryConditions": [
    string
  ],
  "numRetries": integer
}
フィールド
retryConditions[]

string

  • connect-failure: ルーターは、接続タイムアウトなどによりバックエンド サービスへの接続に失敗すると再試行します。
  • refused-stream: ルーターは、バックエンド サービスが REFUSED_STREAM エラーコードでストリームをリセットするとルータは再試行します。このリセットタイプは、再試行しても安全であることを示します。
  • cancelled: ルーターは、レスポンス ヘッダーの gRPC ステータス コードが cancelled に設定されている場合に再試行します。
  • deadline-exceeded: ルーターは、レスポンス ヘッダーの gRPC ステータス コードが deadline-exceeded に設定されている場合に再試行します。
  • resource-exhausted: ルーターは、レスポンス ヘッダーの gRPC ステータス コードが resource-exhausted に設定されている場合に試行します。
  • unavailable: ルーターは、レスポンス ヘッダーの gRPC ステータス コードが unavailable に設定されている場合に再試行します。
numRetries

integer (uint32 format)

許可される再試行回数を指定します。0 より大きい値である必要があります。指定しない場合、デフォルトで 1 になります。

StatefulSessionAffinityPolicy

特定の宛先ホストをエンコードする「GSSA」という名前の「セッション Cookie」を日付プレーンが提供する Cookie ベースのステートフル セッション アフィニティの仕様、およびその Cookie を含むリクエストは、宛先ホストが正常な状態で残っている限り、そのホストに転送されます。

gRPC プロキシレス メッシュ ライブラリまたはサイドカー プロキシがセッション クッキーを管理しますが、クライアント アプリケーション コードは、セッション内の各 RPC から次の RPC に Cookie をコピーする役割を担います。

JSON 表現
{
  "cookieTtl": string
}
フィールド
cookieTtl

string (Duration format)

必須。データプレーンで生成された Set-Cookie ヘッダーの Cookie TTL 値。Cookie の有効期間は、1 秒以上 86,400 秒(24 時間)以下の値に設定できます。

s で終わる小数 9 桁までの秒単位の期間。例: "3.5s"

メソッド

create

指定されたプロジェクトとロケーションで新しい GrpcRoutes を作成します。

delete

1 つの GrpcRoute を削除します。

get

1 つの GrpcRoute の詳細情報を取得します。

getIamPolicy

リソースのアクセス制御ポリシーを取得します。

list

指定されたプロジェクトとロケーションの GrpcRoute を一覧表示します。

patch

単一の GrpcRoutes のパラメータを更新します。

setIamPolicy

指定したリソースにアクセス制御ポリシーを設定します。

testIamPermissions

呼び出し元が指定されたリソース上で持つ権限を返します。