REST Resource: projects.locations.grpcRoutes

Resource: GrpcRoute

GrpcRoute adalah resource yang menentukan cara traffic gRPC yang dirutekan oleh resource Mesh atau Gateway dirutekan.

Representasi JSON
{
  "name": string,
  "selfLink": string,
  "createTime": string,
  "updateTime": string,
  "labels": {
    string: string,
    ...
  },
  "description": string,
  "hostnames": [
    string
  ],
  "meshes": [
    string
  ],
  "gateways": [
    string
  ],
  "rules": [
    {
      object (RouteRule)
    }
  ]
}
Kolom
name

string

ID. Nama resource GrpcRoute. Cocok dengan pola projects/*/locations/global/grpcRoutes/<grpc_route_name>

createTime

string (Timestamp format)

Hanya output. Stempel waktu saat resource dibuat.

Menggunakan RFC 3339, dengan output yang dihasilkan akan selalu dinormalisasi Z dan menggunakan 0, 3, 6, atau 9 digit pecahan. Offset selain "Z" juga diterima. Contoh: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z", atau "2014-10-02T15:01:23+05:30".

updateTime

string (Timestamp format)

Hanya output. Stempel waktu saat resource diperbarui.

Menggunakan RFC 3339, dengan output yang dihasilkan akan selalu dinormalisasi Z dan menggunakan 0, 3, 6, atau 9 digit pecahan. Offset selain "Z" juga diterima. Contoh: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z", atau "2014-10-02T15:01:23+05:30".

labels

map (key: string, value: string)

Opsional. Kumpulan tag label yang terkait dengan resource GrpcRoute.

Objek yang berisi daftar pasangan "key": value. Contoh: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

description

string

Opsional. Deskripsi teks bebas tentang resource. Panjang maksimum 1024 karakter.

hostnames[]

string

Wajib. Nama host layanan dengan port opsional yang rutenya menjelaskan traffic.

Format: [:]

Nama host adalah nama domain yang sepenuhnya memenuhi syarat dari host jaringan. Ini cocok dengan definisi nama host RFC 1123 dengan 2 pengecualian penting: - IP tidak diizinkan. - Nama host dapat diawali dengan label karakter pengganti (*.). Label karakter pengganti harus muncul dengan sendirinya sebagai label pertama.

Nama host dapat berupa "precise" yang merupakan nama domain tanpa titik penghentian host jaringan (misalnya, foo.example.com) atau "wildcard", yang merupakan nama domain yang diawali dengan satu label karakter pengganti (misalnya, *.example.com).

Perhatikan bahwa sesuai dengan RFC1035 dan RFC1123, label harus terdiri dari karakter alfanumerik huruf kecil atau '-', dan harus diawali dan diakhiri dengan karakter alfanumerik. Tanda baca lainnya tidak diizinkan.

Rute yang terkait dengan Mesh atau Gateway harus memiliki nama host yang unik. Jika Anda mencoba melampirkan beberapa rute dengan nama host yang bertentangan, konfigurasi akan ditolak.

Misalnya, meskipun rute untuk nama host *.foo.bar.com dan *.bar.com dapat dikaitkan dengan rute yang sama, dua rute tidak dapat dikaitkan dengan *.bar.com atau bar.com.

Jika port ditentukan, klien gRPC harus menggunakan URI saluran dengan port agar cocok dengan aturan ini (yaitu, "xds:///service:123"), atau mereka harus memberikan URI tanpa port (yaitu, "xds:///service").

meshes[]

string

Opsional. Mesh menentukan daftar mesh yang terlampir ke GrpcRoute ini, sebagai salah satu aturan perutean untuk merutekan permintaan yang ditayangkan oleh mesh.

Setiap referensi mesh harus cocok dengan pola: projects/*/locations/global/meshes/<mesh_name>

gateways[]

string

Opsional. Gateway menentukan daftar gateway yang terlampir pada GrpcRoute ini, sebagai salah satu aturan pemilihan rute untuk merutekan permintaan yang ditayangkan oleh gateway.

Setiap referensi gateway harus cocok dengan pola: projects/*/locations/global/gateways/<gateway_name>

rules[]

object (RouteRule)

Wajib. Daftar aturan mendetail yang menentukan cara merutekan traffic.

Dalam satu GrpcRoute, GrpcRoute.RouteAction yang terkait dengan GrpcRoute.RouteRule yang cocok pertama akan dieksekusi. Setidaknya satu aturan harus diberikan.

RouteRule

Menjelaskan cara merutekan traffic.

Representasi JSON
{
  "matches": [
    {
      object (RouteMatch)
    }
  ],
  "action": {
    object (RouteAction)
  }
}
Kolom
matches[]

object (RouteMatch)

Opsional. Pencocokan menentukan kondisi yang digunakan untuk mencocokkan aturan dengan permintaan gRPC masuk. Setiap kecocokan bersifat independen, yaitu aturan ini akan cocok jika SALAH SATU kecocokan terpenuhi. Jika tidak ada kolom kecocokan yang ditentukan, aturan ini akan mencocokkan traffic tanpa syarat.

action

object (RouteAction)

Wajib. Aturan mendetail yang menentukan cara merutekan traffic. Kolom ini wajib diisi.

RouteMatch

Kriteria untuk mencocokkan traffic. RouteMatch akan dianggap cocok jika semua kolom yang diberikan cocok.

Representasi JSON
{
  "headers": [
    {
      object (HeaderMatch)
    }
  ],
  "method": {
    object (MethodMatch)
  }
}
Kolom
headers[]

object (HeaderMatch)

Opsional. Menentukan kumpulan header yang akan dicocokkan.

method

object (MethodMatch)

Opsional. Metode gRPC yang akan dicocokkan. Jika kolom ini kosong atau tidak ada, akan cocok dengan semua metode.

MethodMatch

Menentukan kecocokan dengan metode.

Representasi JSON
{
  "type": enum (Type),
  "grpcService": string,
  "grpcMethod": string,
  "caseSensitive": boolean
}
Kolom
type

enum (Type)

Opsional. Menentukan cara mencocokkan nama. Jika tidak ditentukan, nilai default "EXACT" akan digunakan.

grpcService

string

Wajib. Nama layanan yang akan dicocokkan. Jika tidak ditentukan, akan mencocokkan semua layanan.

grpcMethod

string

Wajib. Nama metode yang akan dicocokkan. Jika tidak ditentukan, akan mencocokkan semua metode.

caseSensitive

boolean

Opsional. Menentukan bahwa kecocokan peka huruf besar/kecil. Nilai defaultnya adalah benar (true). caseSensitive tidak boleh digunakan dengan jenis REGULAR_EXPRESSION.

Jenis

Jenis kecocokan.

Enum
TYPE_UNSPECIFIED Tidak ditentukan.
EXACT Hanya akan mencocokkan nama persis yang diberikan.
REGULAR_EXPRESSION Akan menafsirkan grpcMethod dan grpcService sebagai regex. Sintaksis RE2 didukung.

HeaderMatch

Kecocokan dengan kumpulan header.

Representasi JSON
{
  "type": enum (Type),
  "key": string,
  "value": string
}
Kolom
type

enum (Type)

Opsional. Menentukan cara mencocokkan nilai header. Jika tidak ditentukan, nilai default EXACT akan digunakan.

key

string

Wajib. Kunci header.

value

string

Wajib. Nilai header.

Jenis

Jenis pencocokan.

Enum
TYPE_UNSPECIFIED Tidak ditentukan.
EXACT Hanya akan mencocokkan nilai persis yang diberikan.
REGULAR_EXPRESSION Akan mencocokkan jalur yang sesuai dengan awalan yang ditentukan oleh nilai. Sintaksis RE2 didukung.

RouteAction

Menentukan cara merutekan traffic yang cocok.

Representasi JSON
{
  "destinations": [
    {
      object (Destination)
    }
  ],
  "faultInjectionPolicy": {
    object (FaultInjectionPolicy)
  },
  "timeout": string,
  "retryPolicy": {
    object (RetryPolicy)
  },
  "statefulSessionAffinity": {
    object (StatefulSessionAffinityPolicy)
  },
  "idleTimeout": string
}
Kolom
destinations[]

object (Destination)

Opsional. Layanan tujuan yang menjadi tujuan penerusan traffic. Jika beberapa tujuan ditentukan, traffic akan dibagi di antara Layanan Backend sesuai dengan kolom bobot tujuan ini.

faultInjectionPolicy

object (FaultInjectionPolicy)

Opsional. Spesifikasi untuk injeksi kesalahan yang dimasukkan ke dalam traffic untuk menguji ketahanan klien terhadap kegagalan layanan tujuan. Sebagai bagian dari injeksi kesalahan, saat klien mengirim permintaan ke tujuan, penundaan dapat terjadi pada persentase permintaan sebelum mengirim permintaan tersebut ke layanan tujuan. Demikian pula, permintaan dari klien dapat dibatalkan untuk persentase permintaan tertentu.

timeout dan retryPolicy akan diabaikan oleh klien yang dikonfigurasi dengan faultInjectionPolicy

timeout

string (Duration format)

Opsional. Menentukan waktu tunggu untuk rute yang dipilih. Waktu tunggu dihitung dari saat permintaan telah diproses sepenuhnya (yaitu akhir streaming) hingga respons telah diproses sepenuhnya. Waktu tunggu mencakup semua percobaan ulang.

Durasi dalam detik dengan maksimal sembilan digit pecahan, yang diakhiri dengan 's'. Contoh: "3.5s".

retryPolicy

object (RetryPolicy)

Opsional. Menentukan kebijakan percobaan ulang yang terkait dengan rute ini.

statefulSessionAffinity

object (StatefulSessionAffinityPolicy)

Opsional. Menentukan afinitas sesi stateful berbasis cookie.

idleTimeout

string (Duration format)

Opsional. Menentukan waktu tunggu tidak ada aktivitas untuk rute yang dipilih. Waktu tunggu tidak ada aktivitas ditentukan sebagai periode saat tidak ada byte yang dikirim atau diterima pada koneksi upstream atau downstream. Jika tidak disetel, waktu tunggu tidak ada aktivitas default adalah 1 jam. Jika disetel ke 0 detik, waktu tunggu akan dinonaktifkan.

Durasi dalam detik dengan maksimal sembilan digit pecahan, yang diakhiri dengan 's'. Contoh: "3.5s".

Tujuan

Tujuan tempat traffic akan dirutekan.

Representasi 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
}
Kolom
Kolom union destination_type. Menentukan jenis tujuan tempat traffic akan dirutekan. destination_type hanya ada berupa salah satu diantara berikut:
serviceName

string

Wajib. URL layanan tujuan yang akan menjadi tujuan perutean traffic. Harus merujuk ke BackendService atau ServiceDirectoryService.

weight

integer

Opsional. Menentukan proporsi permintaan yang diteruskan ke backend yang dirujuk oleh kolom serviceName. Nilai ini dihitung sebagai: - bobot/Jumlah(bobot dalam daftar tujuan ini). Untuk nilai bukan nol, mungkin ada beberapa epsilon dari proporsi persis yang ditentukan di sini, bergantung pada presisi yang didukung implementasi.

Jika hanya satu serviceName yang ditentukan dan memiliki bobot lebih besar dari 0, 100% traffic diteruskan ke backend tersebut.

Jika bobot ditentukan untuk salah satu nama layanan, bobot tersebut harus ditentukan untuk semua nama layanan.

Jika bobot tidak ditentukan untuk semua layanan, traffic akan didistribusikan dalam proporsi yang sama ke semua layanan tersebut.

FaultInjectionPolicy

Spesifikasi untuk injeksi kesalahan yang dimasukkan ke dalam traffic untuk menguji ketahanan klien terhadap kegagalan layanan tujuan. Sebagai bagian dari injeksi kesalahan, saat klien mengirim permintaan ke tujuan, penundaan dapat terjadi pada persentase permintaan sebelum mengirim permintaan tersebut ke layanan tujuan. Demikian pula, permintaan dari klien dapat dibatalkan untuk persentase permintaan tertentu.

Representasi JSON
{
  "delay": {
    object (Delay)
  },
  "abort": {
    object (Abort)
  }
}
Kolom
delay

object (Delay)

Spesifikasi untuk menyisipkan penundaan pada permintaan klien.

abort

object (Abort)

Spesifikasi untuk membatalkan permintaan klien.

Penundaan

Spesifikasi cara permintaan klien ditunda sebagai bagian dari penyisipan kesalahan sebelum dikirim ke tujuan.

Representasi JSON
{
  "fixedDelay": string,
  "percentage": integer
}
Kolom
fixedDelay

string (Duration format)

Tentukan penundaan tetap sebelum meneruskan permintaan.

Durasi dalam detik dengan maksimal sembilan digit pecahan, yang diakhiri dengan 's'. Contoh: "3.5s".

percentage

integer

Persentase traffic yang akan mengalami penundaan.

Nilai harus antara [0, 100]

Batalkan

Spesifikasi tentang cara permintaan klien dibatalkan sebagai bagian dari injeksi kesalahan sebelum dikirim ke tujuan.

Representasi JSON
{
  "httpStatus": integer,
  "percentage": integer
}
Kolom
httpStatus

integer

Kode status HTTP yang digunakan untuk membatalkan permintaan.

Nilai harus antara 200 dan 599 inklusif.

percentage

integer

Persentase traffic yang akan dibatalkan.

Nilai harus antara [0, 100]

RetryPolicy

Spesifikasi untuk percobaan ulang. Menentukan satu atau beberapa kondisi yang berlaku untuk aturan percobaan ulang ini. Nilai yang valid adalah:

Representasi JSON
{
  "retryConditions": [
    string
  ],
  "numRetries": integer
}
Kolom
retryConditions[]

string

  • connect-failure: Router akan mencoba lagi saat terjadi kegagalan saat menghubungkan ke Layanan Backend, misalnya karena waktu tunggu koneksi.
  • refused-stream: Router akan mencoba lagi jika layanan backend mereset stream dengan kode error REFUSED_STREAM. Jenis reset ini menunjukkan bahwa aman untuk mencoba lagi.
  • dibatalkan: Router akan mencoba lagi jika kode status gRPC di header respons ditetapkan ke dibatalkan
  • deadline-exceeded: Router akan mencoba lagi jika kode status gRPC di header respons ditetapkan ke deadline-exceeded
  • resource-exhausted: Router akan mencoba lagi jika kode status gRPC di header respons disetel ke resource-exhausted
  • unavailable: Router akan mencoba lagi jika kode status gRPC di header respons ditetapkan ke unavailable
numRetries

integer (uint32 format)

Menentukan jumlah percobaan ulang yang diizinkan. Angka ini harus > 0. Jika tidak ditentukan, nilai defaultnya adalah 1.

StatefulSessionAffinityPolicy

Spesifikasi untuk afinitas sesi stateful berbasis cookie di mana bidang tanggal menyediakan “cookie sesi” dengan nama "GSSA" yang mengenkode host tujuan tertentu dan setiap permintaan yang berisi cookie tersebut akan diarahkan ke host tersebut selama host tujuan tetap aktif dan berfungsi dengan baik.

Library mesh tanpa proxy gRPC atau proxy sidecar akan mengelola cookie sesi, tetapi kode aplikasi klien bertanggung jawab untuk menyalin cookie dari setiap RPC dalam sesi ke RPC berikutnya.

Representasi JSON
{
  "cookieTtl": string
}
Kolom
cookieTtl

string (Duration format)

Wajib. Nilai TTL cookie untuk header Set-Cookie yang dihasilkan oleh bidang data. Masa aktif cookie dapat ditetapkan ke nilai dari 1 hingga 86400 detik (24 jam) tanpa kecuali.

Durasi dalam detik dengan maksimal sembilan digit pecahan, yang diakhiri dengan 's'. Contoh: "3.5s".

Metode

create

Membuat GrpcRoute baru di project dan lokasi tertentu.

delete

Menghapus satu GrpcRoute.

get

Mendapatkan detail satu GrpcRoute.

list

Mencantumkan GrpcRoutes dalam project dan lokasi tertentu.

patch

Memperbarui parameter satu GrpcRoute.