REST Resource: projects.locations.grpcRoutes

Resource: GrpcRoute

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

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 maksimal sembilan digit fraksional. Contoh: "2014-10-02T15:01:23Z" dan "2014-10-02T15:01:23.045123456Z".

updateTime

string (Timestamp format)

Hanya output. Stempel waktu saat resource diupdate.

Stempel waktu dalam format RFC3339 UTC "Zulu", dengan resolusi nanodetik dan maksimal sembilan digit fraksional. 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 resource. Panjang maksimal 1024 karakter.

hostnames[]

string

Wajib. Nama host layanan dengan port opsional yang digunakan rute ini untuk mendeskripsikan lalu lintas.

Format: [:]

{i>Host<i} adalah nama domain dari {i>host<i} jaringan yang sepenuhnya memenuhi syarat. Hal ini sesuai 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 "akurat" yang merupakan nama domain tanpa titik akhir host jaringan (misalnya foo.example.com) atau "karakter pengganti", yang merupakan nama domain yang diawali dengan label karakter pengganti tunggal (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 lain 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 akan dapat dikaitkan dengan *.bar.com atau keduanya dengan bar.com.

Jika port ditentukan, klien gRPC harus menggunakan URI saluran dengan port agar sesuai dengan aturan ini (yaitu "xds:///service:123"), jika tidak, klien gRPC 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 disalurkan 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 mengarahkan permintaan yang dilayani 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 mengarahkan lalu lintas.

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

RouteRule

Menjelaskan cara mengarahkan lalu lintas.

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

object (RouteMatch)

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

action

object (RouteAction)

Wajib. Aturan terperinci yang menentukan cara mengarahkan lalu lintas. Kolom ini wajib diisi.

RouteMatch

Kriteria untuk mencocokkan traffic. RouteMatch akan dianggap cocok jika semua kolom yang disediakan 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 mencocokkan 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 kecocokan peka huruf besar/kecil. Nilai defaultnya adalah true. caseSensitive tidak boleh digunakan dengan jenis REGULAR_EKSPRESI.

Jenis

Jenis kecocokan.

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

faultInjectionPolicy

object (FaultInjectionPolicy)

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

waktu tunggu dan tryPolicy akan diabaikan oleh klien yang dikonfigurasi dengan faultExtractionPolicy

timeout

string (Duration format)

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

Durasi dalam detik dengan maksimal sembilan digit pecahan, 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 didefinisikan sebagai periode saat tidak ada byte yang dikirim atau diterima di koneksi upstream atau downstream. Jika tidak disetel, waktu tunggu tidak ada aktivitas default adalah 1 jam. Jika disetel ke 0d, waktu tunggu akan dinonaktifkan.

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

Tujuan

Tujuan tempat lalu lintas 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 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. Hal ini dihitung sebagai: - weight/Sum(bobot dalam daftar tujuan ini). Untuk nilai bukan nol, mungkin ada beberapa epsilon dari proporsi yang tepat yang didefinisikan 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 harus ditentukan untuk semuanya.

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

FaultInjectionPolicy

Spesifikasi untuk injeksi fault yang diperkenalkan ke traffic untuk menguji ketahanan klien terhadap kegagalan layanan tujuan. Sebagai bagian dari injeksi kesalahan, saat klien mengirim permintaan ke tujuan, penundaan dapat terjadi pada sebagian persentase permintaan sebelum mengirim permintaan tersebut ke layanan tujuan. Demikian pula, permintaan dari klien dapat dibatalkan untuk sebagian 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 tentang bagaimana permintaan klien tertunda sebagai bagian dari injeksi 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, diakhiri dengan 's'. Contoh: "3.5s".

percentage

integer

Persentase traffic tempat penundaan akan dimasukkan.

Nilai harus antara [0, 100]

Batalkan

Spesifikasi tentang bagaimana 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.

Nilainya 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

  • kegagalan koneksi: Router akan mencoba lagi jika terjadi kegagalan koneksi ke Layanan Backend, misalnya karena waktu tunggu koneksi habis.
  • streaming yang ditolak: Router akan mencoba lagi jika layanan backend mereset streaming dengan kode error REFUSE_STREAM. Jenis reset ini menunjukkan bahwa aman untuk mencoba lagi.
  • dibatalkan: Router akan mencoba lagi jika kode status gRPC di header respons disetel ke dibatalkan
  • batas waktu terlampaui: Router akan mencoba lagi jika kode status gRPC di header respons disetel ke batas waktu
  • resource habis: Router akan mencoba lagi jika kode status gRPC di header respons disetel ke resource habis
  • tidak tersedia: Router akan mencoba lagi jika kode status gRPC di header respons disetel 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 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 responsif.

Library mesh tanpa proxy gRPC atau proxy file bantuan 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 dibuat oleh bidang data. Masa aktif cookie dapat ditetapkan ke nilai mulai dari 1 hingga 86.400 detik (24 jam) inklusif.

Durasi dalam detik dengan maksimal sembilan digit pecahan, 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 GrpcRoute tunggal.