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

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

createTime

string (Timestamp format)

Hanya output. Stempel waktu saat resource dibuat.

Stempel waktu dalam format RFC3339 UTC "Zulu", dengan resolusi nanodetik dan hingga sembilan digit pecahan. Contoh: "2014-10-02T15:01:23Z" dan "2014-10-02T15:01:23.045123456Z".

updateTime

string (Timestamp format)

Hanya output. Stempel waktu saat resource diperbarui.

Stempel waktu dalam format RFC3339 UTC "Zulu", dengan resolusi nanodetik dan hingga sembilan digit pecahan. Contoh: "2014-10-02T15:01:23Z" dan "2014-10-02T15:01:23.045123456Z".

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 1.024 karakter.

hostnames[]

string

Wajib. Nama host layanan dengan port opsional yang traffic-nya dijelaskan oleh rute ini.

Format: [:]

Nama host adalah nama domain yang sepenuhnya memenuhi syarat dari host jaringan. Hal 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 sendiri sebagai label pertama.

Nama host dapat berupa "akurat", yaitu nama domain tanpa titik akhir host jaringan (misalnya, foo.example.com) atau "karakter pengganti", yaitu 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"), jika tidak, klien harus menyediakan URI tanpa port (yaitu "xds:///service").

meshes[]

string

Opsional. Mesh menentukan daftar mesh tempat GrpcRoute ini dilampirkan, sebagai salah satu aturan pemilihan rute 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 tempat GrpcRoute ini dilampirkan, 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 pertama yang cocok 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. Kecocokan menentukan kondisi yang digunakan untuk mencocokkan aturan dengan permintaan gRPC yang 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 dihilangkan, 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 pencocokan dengan nama. Jika tidak ditentukan, nilai default "EXACT" akan digunakan.

grpcService

string

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

grpcMethod

string

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

caseSensitive

boolean

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

Jenis

Jenis pencocokan.

Enum
TYPE_UNSPECIFIED Tidak ditentukan.
EXACT Hanya akan cocok dengan nama yang sama persis yang diberikan.
REGULAR_EXPRESSION Akan menafsirkan grpcMethod dan grpcService sebagai ekspresi reguler. 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 dengan 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 cocok dengan 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 tempat traffic harus diteruskan. Jika beberapa tujuan ditentukan, traffic akan dibagi antara Layanan Backend sesuai dengan kolom bobot tujuan ini.

faultInjectionPolicy

object (FaultInjectionPolicy)

Opsional. Spesifikasi untuk injeksi error yang dimasukkan ke dalam traffic untuk menguji ketahanan klien terhadap kegagalan layanan tujuan. Sebagai bagian dari injeksi error, 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.

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 di koneksi upstream atau downstream. Jika tidak ditetapkan, waktu tunggu tidak ada aktivitas defaultnya 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 merutekan 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: - weight/Sum(weights in this destination list). Untuk nilai non-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 akan diteruskan ke backend tersebut.

Jika bobot ditentukan untuk 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.

FaultInjectionPolicy

Spesifikasi untuk injeksi error yang dimasukkan ke dalam traffic untuk menguji ketahanan klien terhadap kegagalan layanan tujuan. Sebagai bagian dari injeksi error, 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.

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

object (Delay)

Spesifikasi untuk memasukkan penundaan ke permintaan klien.

abort

object (Abort)

Spesifikasi untuk membatalkan permintaan klien.

Penundaan

Spesifikasi cara permintaan klien tertunda sebagai bagian dari injeksi error 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 cara permintaan klien dibatalkan sebagai bagian dari injeksi error 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.

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

string

  • connect-failure: Router akan mencoba lagi saat gagal terhubung ke Layanan Backend, misalnya karena waktu tunggu koneksi habis.
  • refused-stream: Router akan mencoba lagi jika layanan backend mereset streaming dengan kode error REFUSED_STREAM. Jenis reset ini menunjukkan bahwa Anda dapat mencoba lagi dengan aman.
  • cancelled: Router akan mencoba lagi jika kode status gRPC di header respons ditetapkan ke cancelled
  • 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 ditetapkan ke resource-exhausted
  • tidak tersedia: Router akan mencoba lagi jika kode status gRPC di header respons ditetapkan ke tidak tersedia
numRetries

integer (uint32 format)

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

StatefulSessionAffinityPolicy

Spesifikasi untuk afinitas sesi stateful berbasis cookie dengan bidang tanggal yang 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.

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 sesi berikutnya.

Representasi JSON
{
  "cookieTtl": string
}
Kolom
cookieTtl

string (Duration format)

Wajib. Nilai TTL cookie untuk header Set-Cookie yang dihasilkan oleh bidang data. Masa berlaku cookie dapat ditetapkan ke nilai dari 1 hingga 86.400 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 di project dan lokasi tertentu.

patch

Memperbarui parameter satu GrpcRoute.