REST Resource: projects.locations.grpcRoutes

Risorsa: GrpcRoute

GrpcRoute è la risorsa che definisce il modo in cui viene instradato il 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 (RouteRule)
    }
  ]
}
Campi
name

string

Obbligatorio. Nome della risorsa GrpcRoute. Corrisponde al pattern projects/*/locations/global/grpcRoutes/<grpc_route_name>

createTime

string (Timestamp format)

Solo output. Timestamp di creazione della risorsa.

Un timestamp in formato "Zulu" UTC RFC3339, con risoluzione a livello di nanosecondo e fino a nove cifre frazionarie. Esempi: "2014-10-02T15:01:23Z" e "2014-10-02T15:01:23.045123456Z".

updateTime

string (Timestamp format)

Solo output. Timestamp dell'aggiornamento della risorsa.

Un timestamp in formato "Zulu" UTC RFC3339, con risoluzione a livello di nanosecondo e fino a nove cifre frazionarie. Esempi: "2014-10-02T15:01:23Z" e "2014-10-02T15:01:23.045123456Z".

labels

map (key: string, value: string)

Facoltativo. Set di tag etichetta associati alla risorsa GrpcRoute.

Un oggetto contenente un elenco di coppie "key": value. Esempio: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

description

string

Facoltativo. Una descrizione in testo libero della risorsa. Lunghezza massima: 1024 caratteri.

hostnames[]

string

Obbligatorio. Nomi host del servizio con una porta facoltativa per la quale questa route descrive il traffico.

Formato: [:]

Il nome host è il nome di dominio completo di un host di rete. Corrisponde alla definizione di un nome host in RFC 1123 con due eccezioni importanti: - Gli IP non sono consentiti. - Un nome host può essere preceduto da un'etichetta jolly (*.). L'etichetta jolly deve essere visualizzata da sola come prima etichetta.

Il nome host può essere "preciso", ovvero un nome di dominio senza il punto finale di un host di rete (ad es. foo.example.com), o "con carattere jolly", ovvero un nome di dominio preceduto da una singola etichetta con carattere jolly (ad es. *.example.com).

Tieni presente che, in base a RFC1035 e RFC1123, un'etichetta deve essere composta da caratteri alfanumerici in minuscolo o "-" e deve iniziare e terminare con un carattere alfanumerico. Non è consentita altra punteggiatura.

Le route associate a un mesh o a un gateway devono avere nomi host univoci. Se provi ad associare più route con nomi host in conflitto, la configurazione verrà rifiutata.

Ad esempio, sebbene sia accettabile che i percorsi per i nomi host *.foo.bar.com e *.bar.com siano associati allo stesso percorso, non è possibile associare due percorsi sia a *.bar.com sia a bar.com.

Se viene specificata una porta, i client gRPC devono utilizzare l'URI del canale con la porta per corrispondere a questa regola (ad es. "xds:///service:123"), altrimenti devono fornire l'URI senza una porta (ad es. "xds:///service").

meshes[]

string

Facoltativo. Meshes definisce un elenco di mesh a cui è associato questo GrpcRoute, come una delle regole di routing per instradare le richieste servite dal mesh.

Ogni riferimento alla mesh deve corrispondere al pattern: projects/*/locations/global/meshes/<mesh_name>

gateways[]

string

Facoltativo. Gateways definisce un elenco di gateway a cui è associato questo parametro GrpcRoute, come una delle regole di routing per instradare le richieste servite dal gateway.

Ogni riferimento al gateway deve corrispondere al pattern: projects/*/locations/global/gateways/<gateway_name>

rules[]

object (RouteRule)

Obbligatorio. Un elenco di regole dettagliate che definiscono come instradare il traffico.

All'interno di un singolo GrpcRoute, verrà eseguita l'azione GrpcRoute.RouteAction associata alla prima regola GrpcRoute.RouteRule corrispondente. Deve essere fornita almeno una regola.

RouteRule

Descrive come indirizzare il traffico.

Rappresentazione JSON
{
  "matches": [
    {
      object (RouteMatch)
    }
  ],
  "action": {
    object (RouteAction)
  }
}
Campi
matches[]

object (RouteMatch)

Facoltativo. Le corrispondenze definiscono le condizioni utilizzate per abbinare la regola alle richieste gRPC in entrata. Ogni corrispondenza è indipendente, ovvero questa regola verrà associata se viene soddisfatta UNA qualsiasi delle corrispondenze. Se non viene specificato alcun campo delle corrispondenze, questa regola corrisponderà incondizionatamente al traffico.

action

object (RouteAction)

Obbligatorio. Una regola dettagliata che definisce come instradare il 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 (HeaderMatch)
    }
  ],
  "method": {
    object (MethodMatch)
  }
}
Campi
headers[]

object (HeaderMatch)

Facoltativo. Specifica una raccolta di intestazioni da associare.

method

object (MethodMatch)

Facoltativo. Un metodo gRPC da associare. Se questo campo è vuoto o omesso, verrà applicato a tutti i metodi.

MethodMatch

Specifica una corrispondenza con un metodo.

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

enum (Type)

Facoltativo. Specifica la modalità di corrispondenza al nome. Se non specificato, viene utilizzato il valore predefinito "EXACT".

grpcService

string

Obbligatorio. Nome del servizio da confrontare. Se non specificato, corrisponderà a tutti i servizi.

grpcMethod

string

Obbligatorio. Nome del metodo da associare. Se non specificato, corrisponderà a tutti i metodi.

caseSensitive

boolean

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 Interpreta grpcMethod e grpcService come regex. È supportata la sintassi RE2.

HeaderMatch

Una corrispondenza con una raccolta di intestazioni.

Rappresentazione JSON
{
  "type": enum (Type),
  "key": string,
  "value": string
}
Campi
type

enum (Type)

Facoltativo. Specifica la modalità di corrispondenza con il valore dell'intestazione. Se non specificato, viene utilizzato un valore predefinito di EXACT.

key

string

Obbligatorio. La chiave dell'intestazione.

value

string

Obbligatorio. Il valore dell'intestazione.

Tipo

Il tipo di corrispondenza.

Enum
TYPE_UNSPECIFIED Non specificato.
EXACT Corrisponderà solo al valore esatto fornito.
REGULAR_EXPRESSION Corrisponde ai percorsi conformi al prefisso specificato per valore. È supportata la sintassi RE2.

RouteAction

Specifica come instradare il traffico corrispondente.

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

object (Destination)

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 del peso di queste destinazioni.

faultInjectionPolicy

object (FaultInjectionPolicy)

Facoltativo. La specifica per l'iniezione di errori introdotta nel traffico per testare la resilienza dei client al fallimento del servizio di destinazione. Nell'ambito dell'iniezione di errori, quando i client inviano richieste a una destinazione, è possibile introdurre ritardi in una percentuale di richieste prima di inviarle al servizio di destinazione. Analogamente, le richieste dei client possono essere interrotte per una percentuale di richieste.

timeout e retryPolicy verranno ignorati dai client configurati con un criterio faultInjectionPolicy

timeout

string (Duration format)

Facoltativo. Specifica il timeout per il percorso selezionato. Il timeout viene calcolato dal momento in cui la richiesta è stata completamente elaborata (ovvero alla fine dello stream) fino al momento in cui la risposta è stata completamente elaborata. Il timeout include tutti i tentativi di ripetizione.

Una durata in secondi con un massimo di nove cifre frazionarie, che termina con "s". Esempio: "3.5s".

retryPolicy

object (RetryPolicy)

Facoltativo. Specifica il criterio di nuovo tentativo associato a questo percorso.

statefulSessionAffinity

object (StatefulSessionAffinityPolicy)

Facoltativo. Specifica l'affinità sessione stateful basata su cookie.

idleTimeout

string (Duration format)

Facoltativo. Specifica il timeout inattivo per il percorso selezionato. Il timeout inattivo è definito come il periodo in cui non vengono inviati o ricevuti byte sulla connessione upstream o downstream. Se non viene impostato, il timeout di inattività predefinito è 1 ora. Se impostato su 0 secondi, il timeout verrà disattivato.

Una durata in secondi con un massimo di nove cifre frazionarie, che termina con "s". Esempio: "3.5s".

Destinazione

La destinazione a cui verrà indirizzato il traffico.

Rappresentazione 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
}
Campi
Campo unione destination_type. Specifica il tipo di destinazione a cui verrà indirizzato il traffico. destination_type può essere solo uno dei seguenti:
serviceName

string

Obbligatorio. L'URL di un servizio di destinazione a cui instradare il traffico. Deve fare riferimento a un BackendService o a un ServiceDirectoryService.

weight

integer

Facoltativo. Specifica la proporzione di richieste inoltrate al backend a cui fa riferimento il campo serviceName. Questo valore viene calcolato come segue: - peso/Somma(pesi in questo elenco di destinazioni). Per i valori diversi da zero, potrebbe esserci un'epsilon dalla proporzione esatta definita qui, a seconda della precisione supportata da un'implementazione.

Se viene specificato un solo serviceName e ha un peso maggiore di 0, il 100% del traffico viene inoltrato a quel backend.

Se i pesi vengono specificati per un nome di servizio, devono essere specificati per tutti.

Se i pesi non sono specificati per tutti i servizi, il traffico viene distribuito in proporzioni uguali a tutti.

FaultInjectionPolicy

La specifica per l'iniezione di errori introdotta nel traffico per testare la resilienza dei client al fallimento del servizio di destinazione. Nell'ambito dell'iniezione di errori, quando i client inviano richieste a una destinazione, è possibile introdurre ritardi in una percentuale di richieste prima di inviarle al servizio di destinazione. Analogamente, le richieste dei client possono essere interrotte per una percentuale di richieste.

Rappresentazione JSON
{
  "delay": {
    object (Delay)
  },
  "abort": {
    object (Abort)
  }
}
Campi
delay

object (Delay)

La specifica per l'inserimento del ritardo nelle richieste del client.

abort

object (Abort)

La specifica per l'interruzione delle richieste del client.

Ritardo

Specifica del modo in cui le richieste del client vengono ritardate nell'ambito dell'iniezione di errori prima di essere inviate a una destinazione.

Rappresentazione JSON
{
  "fixedDelay": string,
  "percentage": integer
}
Campi
fixedDelay

string (Duration format)

Specifica un ritardo fisso prima di inoltrare la richiesta.

Una durata in secondi con un massimo di nove cifre frazionarie, che termina con "s". Esempio: "3.5s".

percentage

integer

La percentuale di traffico in cui verrà inserito il ritardo.

Il valore deve essere compreso tra [0, 100]

Interrompi

Specifica di come le richieste del client vengono interrotte nell'ambito dell'iniezione di errori prima di essere inviate a una destinazione.

Rappresentazione JSON
{
  "httpStatus": integer,
  "percentage": integer
}
Campi
httpStatus

integer

Il codice di stato HTTP utilizzato per interrompere la richiesta.

Il valore deve essere compreso tra 200 e 599 compresi.

percentage

integer

La percentuale di traffico che verrà interrotta.

Il valore deve essere compreso tra [0, 100]

RetryPolicy

Le specifiche per i nuovi tentativi.

Rappresentazione JSON
{
  "retryConditions": [
    string
  ],
  "numRetries": integer
}
Campi
retryConditions[]

string

  • connect-failure: il router riproverà in caso di errori di connessione ai servizi di backend, ad esempio a causa di timeout di connessione.
  • refused-stream: il router riproverà se il servizio di backend reimposta lo stream con un codice di errore REFUSED_STREAM. Questo tipo di reimpostazione indica che è possibile riprovare.
  • cancelled: il router proverà di nuovo se il codice di stato gRPC nell'intestazione della risposta è impostato su cancelled
  • scadenza-scaduta: il router proverà di nuovo se il codice di stato gRPC nell'intestazione della risposta è impostato su scadenza-scaduta
  • resource-exhausted: il router proverà di nuovo se il codice di stato gRPC nell'intestazione della risposta è impostato su resource-exhausted
  • unavailable: il router riproverà se il codice di stato gRPC nell'intestazione della risposta è impostato su unavailable
numRetries

integer (uint32 format)

Specifica il numero di tentativi consentiti. Questo numero deve essere maggiore di 0. Se non specificato, il valore predefinito è 1.

StatefulSessionAffinityPolicy

La specifica per l'affinità sessione stateful basata su cookie in cui il piano di data fornisce un "cookie di sessione" con il nome "GSSA" che codifica un host di destinazione specifico e ogni richiesta contenente il cookie verrà indirizzata a quell'host finché l'host di destinazione rimane attivo e funzionante.

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 nella sessione a quella successiva.

Rappresentazione JSON
{
  "cookieTtl": string
}
Campi
cookieTtl

string (Duration format)

Obbligatorio. Il valore TTL del cookie per l'intestazione Set-Cookie generata dal piano dati. La durata del cookie può essere impostata su un valore compreso tra 1 e 86400 secondi (24 ore) inclusi.

Una durata in secondi con un massimo di nove cifre frazionarie, che termina con "s". Esempio: "3.5s".

Metodi

create

Crea una nuova GrpcRoute in un determinato progetto e posizione.

delete

Consente di eliminare una singola route Grpc.

get

Recupera i dettagli di un singolo GrpcRoute.

getIamPolicy

Recupera il criterio di controllo dell'accesso per una risorsa.

list

Elenca le route GRPC in un determinato progetto e località.

patch

Aggiorna i parametri di un singolo GrpcRoute.

setIamPolicy

Imposta il criterio di controllo dell'accesso sulla risorsa specificata.

testIamPermissions

Restituisce le autorizzazioni di cui dispone un chiamante sulla risorsa specificata.