- Risorsa: GrpcRoute
- RouteRule
- RouteMatch
- MethodMatch
- Tipo
- HeaderMatch
- Tipo
- RouteAction
- Destinazione
- FaultInjectionPolicy
- Ritardo
- Interrompi
- RetryPolicy
- StatefulSessionAffinityPolicy
- Metodi
Risorsa: GrpcRoute
GrpcRoute è la risorsa che definisce la modalità di instradamento del traffico gRPC da una risorsa mesh o gateway.
Rappresentazione JSON |
---|
{
"name": string,
"selfLink": string,
"createTime": string,
"updateTime": string,
"labels": {
string: string,
...
},
"description": string,
"hostnames": [
string
],
"meshes": [
string
],
"gateways": [
string
],
"rules": [
{
object ( |
Campi | |
---|---|
name |
Obbligatorio. Nome della risorsa GrpcRoute. Corrisponde al pattern |
selfLink |
Solo output. URL definito dal server di questa risorsa |
createTime |
Solo output. Timestamp di creazione della risorsa. Un timestamp in formato "Zulu" RFC3339 UTC, con risoluzione in nanosecondi e fino a nove cifre frazionarie. Esempi: |
updateTime |
Solo output. Il timestamp di aggiornamento della risorsa. Un timestamp in formato "Zulu" RFC3339 UTC, con risoluzione in nanosecondi e fino a nove cifre frazionarie. Esempi: |
labels |
Facoltativo. Set di tag di etichetta associati alla risorsa GrpcRoute. Un oggetto contenente un elenco di |
description |
Facoltativo. Una descrizione in testo libero della risorsa. Lunghezza massima: 1024 caratteri. |
hostnames[] |
Obbligatorio. I nomi host dei servizi con una porta facoltativa per la quale questo percorso descrive il traffico. Formato: Il nome host è il nome di dominio completo di un host di rete. Questo corrisponde alla definizione di nome host in RFC 1123 con due eccezioni degne di nota: gli IP non sono consentiti. - Un nome host può essere preceduto da un'etichetta con caratteri jolly ( Il nome host può essere "esatto", ovvero un nome di dominio senza il punto di chiusura di un host di rete (ad es. Tieni presente che, in base a RFC1035 e RFC1123, un'etichetta deve essere costituita da caratteri alfanumerici minuscoli o "-" e deve iniziare e terminare con un carattere alfanumerico. Non è consentito nessun altro tipo di punteggiatura. Le route associate a un mesh o un gateway devono avere nomi host univoci. Se tenti di collegare più route con nomi host in conflitto, la configurazione verrà rifiutata. Ad esempio, sebbene sia accettabile che le route per i nomi host Se viene specificata una porta, i client gRPC devono utilizzare l'URI del canale con la porta per soddisfare questa regola (ad es. "xds:///service:123"), altrimenti devono fornire l'URI senza una porta (ad es. "xds:///service"). |
meshes[] |
Facoltativo. I mesh definiscono un elenco di mesh a cui è collegato questa GrpcRoute come una delle regole di routing per instradare le richieste gestite dal mesh. Ogni riferimento mesh deve corrispondere al pattern: |
gateways[] |
Facoltativo. Gateway definisce un elenco di gateway a cui è associato questa GrpcRoute come una delle regole di routing per instradare le richieste gestite dal gateway. Ogni riferimento al gateway deve corrispondere al pattern: |
rules[] |
Obbligatorio. Un elenco di regole dettagliate che definiscono come instradare il traffico. All'interno di un singolo GrpcRoute.RouteAction verrà eseguito l'elemento GrpcRoute.RouteAction associato alla prima GrpcRoute.RouteRule corrispondente. Devi specificare almeno una regola. |
RouteRule
Descrive come indirizzare il traffico.
Rappresentazione JSON |
---|
{ "matches": [ { object ( |
Campi | |
---|---|
matches[] |
Facoltativo. Le corrispondenze definiscono le condizioni utilizzate per far corrispondere la regola alle richieste gRPC in entrata. Ogni corrispondenza è indipendente, ossia viene trovata una corrispondenza se viene soddisfatta UNA delle corrispondenze. Se non viene specificato alcun campo di corrispondenza, questa regola corrisponderà incondizionatamente al traffico. |
action |
Obbligatorio. Una regola dettagliata che definisce le modalità di routing del traffico. Questo campo è obbligatorio. |
RouteMatch
Criteri per la corrispondenza del traffico. Un RouteMatch viene considerato corrispondente quando tutti i campi forniti corrispondono.
Rappresentazione JSON |
---|
{ "headers": [ { object ( |
Campi | |
---|---|
headers[] |
Facoltativo. Specifica una raccolta di intestazioni da abbinare. |
method |
Facoltativo. Un metodo gRPC con cui eseguire una corrispondenza. Se questo campo è vuoto o omesso, corrisponderà a tutti i metodi. |
MethodMatch
Specifica una corrispondenza rispetto a un metodo.
Rappresentazione JSON |
---|
{
"type": enum ( |
Campi | |
---|---|
type |
Facoltativo. Specifica come trovare una corrispondenza con il nome. Se non specificato, viene utilizzato il valore predefinito "EXACT". |
grpcService |
Obbligatorio. Nome del servizio con cui stabilire una corrispondenza. Se non specificato, corrisponderà a tutti i servizi. |
grpcMethod |
Obbligatorio. Il nome del metodo con cui stabilire una corrispondenza. Se non specificato, corrisponderà a tutti i metodi. |
caseSensitive |
Facoltativo. Specifica che le corrispondenze sono sensibili alle maiuscole. Il valore predefinito è true. CaseSensitive non deve essere utilizzato con un tipo di REGULAR_ expressION. |
Tipo
Il tipo di corrispondenza.
Enum | |
---|---|
TYPE_UNSPECIFIED |
Non specificato. |
EXACT |
Corrisponderà solo al nome esatto fornito. |
REGULAR_EXPRESSION |
Interpreteranno grpcMethod e grpcService come espressioni regolari. La sintassi RE2 è supportata. |
HeaderMatch
Una corrispondenza con una raccolta di intestazioni.
Rappresentazione JSON |
---|
{
"type": enum ( |
Campi | |
---|---|
type |
Facoltativo. Specifica la modalità di corrispondenza con il valore dell'intestazione. Se non specificato, viene utilizzato il valore predefinito EXACT. |
key |
Obbligatorio. La chiave dell'intestazione. |
value |
Obbligatorio. Il valore dell'intestazione. |
Tipo
Il tipo di corrispondenza.
Enum | |
---|---|
TYPE_UNSPECIFIED |
Non specificato. |
EXACT |
Corrisponderà solo al valore esatto fornito. |
REGULAR_EXPRESSION |
Verranno trovati percorsi conformi al prefisso specificato dal valore. La sintassi RE2 è supportata. |
RouteAction
Specifica come indirizzare il traffico corrispondente.
Rappresentazione JSON |
---|
{ "destinations": [ { object ( |
Campi | |
---|---|
destinations[] |
Facoltativo. I servizi di destinazione a cui deve essere inoltrato il traffico. Se vengono specificate più destinazioni, il traffico verrà suddiviso tra i servizi di backend in base al campo ponderato di queste destinazioni. |
faultInjectionPolicy |
Facoltativo. La specifica per la fault injection introdotta nel traffico per testare la resilienza dei client all'errore del servizio di destinazione. Nell'ambito dell'inserimento di errori, quando i client inviano richieste a una destinazione, possono essere introdotti ritardi su una percentuale di richieste prima di inviare queste richieste al servizio di destinazione. Analogamente, le richieste dei client possono essere interrotte per una percentuale di richieste. i timeout e i criteri di prova verranno ignorati dai client configurati con faultInjectionPolicy |
timeout |
Facoltativo. Specifica il timeout per la route selezionata. Il timeout viene calcolato dal momento in cui la richiesta è stata completamente elaborata (ovvero la fine del flusso) fino al completamento dell'elaborazione della risposta. Il timeout include tutti i nuovi tentativi. Una durata in secondi con un massimo di nove cifre frazionarie, che termina con " |
retryPolicy |
Facoltativo. Specifica il criterio relativo ai nuovi tentativi associato a questa route. |
statefulSessionAffinity |
Facoltativo. Specifica l'affinità sessione stateful basata su cookie. |
idleTimeout |
Facoltativo. Specifica il timeout di inattività per la route selezionata. Per timeout di inattività si intende il periodo in cui non vengono inviati o ricevuti byte sulla connessione upstream o downstream. Se non viene configurato, il timeout di inattività predefinito è di 1 ora. Se impostato su 0s, il timeout verrà disattivato. Una durata in secondi con un massimo di nove cifre frazionarie, che termina con " |
Destinazione
La destinazione a cui verrà instradato il traffico.
Rappresentazione JSON |
---|
{ // Union field |
Campi | |
---|---|
Campo di unione destination_type . Specifica il tipo di destinazione a cui verrà indirizzato il traffico. destination_type può essere solo uno dei seguenti: |
|
serviceName |
Obbligatorio. L'URL di un servizio di destinazione a cui instradare il traffico. Deve fare riferimento a BackendService o ServiceDirectoryService. |
weight |
Facoltativo. Specifica la proporzione di richieste inoltrate al backend a cui fa riferimento il campo serviceName. Questo valore viene calcolato come segue: - peso/Somma(ponderazioni in questo elenco di destinazione). Per i valori diversi da zero, potrebbe esserci un po' di epsilon dalla proporzione esatta definita qui a seconda della precisione supportata da un'implementazione. Se viene specificato un solo serviceName e ha una ponderazione maggiore di 0, il 100% del traffico viene inoltrato a quel backend. Se per un nome di servizio vengono specificate le ponderazioni, devono esserlo per tutti i nomi. Se le ponderazioni non sono specificate per tutti i servizi, il traffico viene distribuito in modo uguale tra tutti i servizi. |
FaultInjectionPolicy
La specifica per la fault injection introdotta nel traffico per testare la resilienza dei client all'errore del servizio di destinazione. Nell'ambito dell'inserimento di errori, quando i client inviano richieste a una destinazione, possono essere introdotti ritardi su una percentuale di richieste prima di inviare queste richieste al servizio di destinazione. Analogamente, le richieste dei client possono essere interrotte per una percentuale di richieste.
Rappresentazione JSON |
---|
{ "delay": { object ( |
Campi | |
---|---|
delay |
La specifica per l'inserimento del ritardo nelle richieste del client. |
abort |
La specifica per l'interruzione delle richieste del client. |
Ritardo
Specifica di come le richieste del client vengono ritardate nell'ambito della fault injection prima dell'invio a una destinazione.
Rappresentazione JSON |
---|
{ "fixedDelay": string, "percentage": integer } |
Campi | |
---|---|
fixedDelay |
Specifica un ritardo fisso prima di inoltrare la richiesta. Una durata in secondi con un massimo di nove cifre frazionarie, che termina con " |
percentage |
La percentuale di traffico su cui verrà inserito il ritardo. Il valore deve essere compreso tra [0 e 100] |
Interrompi
Specifica del modo in cui le richieste del client vengono interrotte nell'ambito del fault injection prima di essere inviate a una destinazione.
Rappresentazione JSON |
---|
{ "httpStatus": integer, "percentage": integer } |
Campi | |
---|---|
httpStatus |
Il codice di stato HTTP utilizzato per interrompere la richiesta. Il valore deve essere compreso tra 200 e 599 inclusi. |
percentage |
La percentuale di traffico che verrà interrotta. Il valore deve essere compreso tra [0 e 100] |
RetryPolicy
Le specifiche per i nuovi tentativi.
Rappresentazione JSON |
---|
{ "retryConditions": [ string ], "numRetries": integer } |
Campi | |
---|---|
retryConditions[] |
|
numRetries |
Specifica il numero consentito di nuovi tentativi. Questo numero deve essere maggiore di 0. Se non specificato, il valore predefinito è 1. |
StatefulSessionAffinityPolicy
La specifica per l'affinità sessione stateful basata sui cookie, in cui il piano di date fornisce un "cookie di sessione" con il nome "GSSA", che codifica uno specifico host di destinazione e ogni richiesta contenente il cookie viene indirizzata a quell'host purché quest'ultimo sia attivo e integro.
La libreria mesh senza proxy gRPC o il proxy sidecar gestirà il cookie della sessione, ma il codice dell'applicazione client è responsabile della copia del cookie da ogni RPC dalla sessione alla successiva.
Rappresentazione JSON |
---|
{ "cookieTtl": string } |
Campi | |
---|---|
cookieTtl |
Obbligatorio. Il valore TTL dei cookie per l'intestazione Imposta cookie generata dal piano dati. La durata del cookie può essere impostata su un valore compreso tra 1 e 86.400 secondi (24 ore) inclusi. Una durata in secondi con un massimo di nove cifre frazionarie, che termina con " |
Metodi |
|
---|---|
|
Crea una nuova GrpcRoute in un progetto e una località specifici. |
|
Elimina una singola GrpcRoute. |
|
Recupera i dettagli di una singola GrpcRoute. |
|
Elenca le GrpcRoutes in un progetto e in una località specifici. |
|
Aggiorna i parametri di una singola GrpcRoute. |