REST Resource: projects.locations.grpcRoutes

Risorsa: GrpcRoute

GrpcRoute è la risorsa che definisce in che modo viene instradato il traffico gRPC instradato 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

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

createTime

string (Timestamp format)

Solo output. Timestamp di creazione della risorsa.

Utilizza RFC 3339, in cui l'output generato è sempre con normalizzazione Z e utilizza 0, 3, 6 o 9 cifre frazionarie. Sono accettati anche offset diversi da "Z". Esempi: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" o "2014-10-02T15:01:23+05:30".

updateTime

string (Timestamp format)

Solo output. Timestamp di aggiornamento della risorsa.

Utilizza RFC 3339, in cui l'output generato è sempre con normalizzazione Z e utilizza 0, 3, 6 o 9 cifre frazionarie. Sono accettati anche offset diversi da "Z". Esempi: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" o "2014-10-02T15:01:23+05:30".

labels

map (key: string, value: string)

Facoltativo. Insieme di tag di etichette 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 formato libero della risorsa. Lunghezza massima: 1024 caratteri.

hostnames[]

string

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

Formato: [:]

Il nome host è il nome di dominio completo di un host di rete. Questo corrisponde alla definizione RFC 1123 di un nome host con due eccezioni degne di nota: - Gli IP non sono consentiti. - Un nome host può essere preceduto da un'etichetta con carattere jolly (*.). L'etichetta con carattere jolly deve apparire 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 un'etichetta con un singolo carattere jolly (ad es. *.example.com).

Tieni presente che, in base alle RFC1035 e RFC1123, un'etichetta deve contenere solo caratteri alfanumerici in minuscolo o "-" e iniziare e finire con un carattere alfanumerico. Non è consentito l'uso di altra punteggiatura.

Le route associate a un mesh o a 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 *.foo.bar.com e *.bar.com siano associate alla stessa route, non è possibile associare due route entrambe a *.bar.com o entrambe 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 (ovvero "xds:///service:123"), altrimenti devono fornire l'URI senza una porta (ovvero "xds:///service").

meshes[]

string

Facoltativo. Meshes definisce un elenco di mesh a cui è collegata questa risorsa GrpcRoute, come una delle regole di routing per indirizzare le richieste gestite dal mesh.

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

gateways[]

string

Facoltativo. Gateways definisce un elenco di gateway a cui è collegata questa risorsa GrpcRoute, come una delle regole di instradamento per indirizzare le richieste gestite dal gateway.

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

rules[]

object (RouteRule)

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

All'interno di una singola risorsa GrpcRoute, verrà eseguito il GrpcRoute.RouteAction associato alla prima risorsa GrpcRoute.RouteRule corrispondente. È necessario specificare almeno una regola.

RouteRule

Descrive come instradare il traffico.

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

object (RouteMatch)

Facoltativo. Le corrispondenze definiscono le condizioni utilizzate per la corrispondenza della regola con le richieste gRPC in entrata. Ogni corrispondenza è indipendente, ovvero questa regola verrà applicata se QUALSIASI corrispondenza è soddisfatta. Se non viene specificato alcun campo matches, questa regola abbinerà il traffico incondizionatamente.

action

object (RouteAction)

Obbligatorio. Una regola dettagliata che definisce come indirizzare il traffico. Questo campo è obbligatorio.

RouteMatch

Criteri per la corrispondenza del traffico. Un RouteMatch verrà 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 di cui trovare la corrispondenza.

method

object (MethodMatch)

Facoltativo. Un metodo gRPC con cui eseguire la corrispondenza. Se questo campo è vuoto o viene omesso, corrisponderà 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 come eseguire la corrispondenza con il nome. Se non specificato, viene utilizzato il valore predefinito "EXACT".

grpcService

string

Obbligatorio. Nome del servizio con cui eseguire la corrispondenza. Se non specificato, corrisponderà a tutti i servizi.

grpcMethod

string

Obbligatorio. Nome del metodo di cui trovare la corrispondenza. 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 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 espressioni regolari. La sintassi RE2 è supportata.

HeaderMatch

Una corrispondenza con una raccolta di intestazioni.

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

enum (Type)

Facoltativo. Specifica come trovare la corrispondenza con il valore dell'intestazione. Se non specificato, viene utilizzato il valore predefinito 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 Corrisponde solo al valore esatto fornito.
REGULAR_EXPRESSION Corrisponde ai percorsi conformi al prefisso specificato dal valore. La sintassi RE2 è supportata.

RouteAction

Specifica come indirizzare 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'inserimento di errori nel traffico per testare la resilienza dei client in caso di errore del servizio di destinazione. Nell'ambito del fault injection, quando i client inviano richieste a una destinazione, è possibile introdurre ritardi su una percentuale di richieste prima di inviarle al servizio di destinazione. Allo stesso modo, le richieste dei client possono essere interrotte per una percentuale di richieste.

timeout e retryPolicy verranno ignorati dai client configurati con un faultInjectionPolicy

timeout

string (Duration format)

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

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

retryPolicy

object (RetryPolicy)

Facoltativo. Specifica la policy di ripetizione associata a questa route.

statefulSessionAffinity

object (StatefulSessionAffinityPolicy)

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

idleTimeout

string (Duration format)

Facoltativo. Specifica il timeout di inattività per la route selezionata. Il timeout di inattività è 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 è di 1 ora. Se impostato su 0 secondi, il timeout verrà disabilitato.

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

Destinazione

La destinazione a cui verrà instradato 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à instradato il traffico. destination_type può essere solo uno dei seguenti tipi:
serviceName

string

Obbligatorio. L'URL di un servizio di destinazione a cui indirizzare 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: - ponderazione/somma(ponderazioni in questo elenco di destinazione). Per valori diversi da zero, potrebbe esserci un epsilon rispetto alla proporzione esatta definita qui, a seconda della precisione supportata dall'implementazione.

Se viene specificato un solo serviceName e la relativa ponderazione è maggiore di 0, il 100% del traffico viene inoltrato a quel backend.

Se vengono specificate delle ponderazioni per un nome di servizio, devono essere specificate per tutti.

Se le ponderazioni non vengono specificate per tutti i servizi, il traffico viene distribuito in proporzioni uguali tra tutti.

FaultInjectionPolicy

La specifica per l'inserimento di errori nel traffico per testare la resilienza dei client in caso di errore del servizio di destinazione. Nell'ambito del fault injection, quando i client inviano richieste a una destinazione, è possibile introdurre ritardi su una percentuale di richieste prima di inviarle al servizio di destinazione. Allo stesso modo, 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 di un ritardo nelle richieste client.

abort

object (Abort)

La specifica per l'interruzione delle richieste client.

Ritardo

Specifica di come vengono ritardate le richieste dei client nell'ambito dell'inserimento 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 client vengono interrotte nell'ambito dell'inserimento 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 inclusi.

percentage

integer

La percentuale di traffico che verrà interrotta.

Il valore deve essere compreso tra [0, 100]

RetryPolicy

Le specifiche per i nuovi tentativi. Specifica una o più condizioni per le quali si applica questa regola di ripetizione. I valori validi sono:

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 della connessione.
  • refused-stream: il router riprova se il servizio di backend reimposta lo stream con un codice di errore REFUSED_STREAM. Questo tipo di ripristino indica che è sicuro riprovare.
  • cancelled: il router riproverà se il codice di stato gRPC nell'intestazione della risposta è impostato su cancelled
  • deadline-exceeded: il router riprova se il codice di stato gRPC nell'intestazione della risposta è impostato su deadline-exceeded
  • resource-exhausted: il router riproverà 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 nuovi 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 dati fornisce un "cookie di sessione" con il nome "GSSA" che codifica un host di destinazione specifico e ogni richiesta contenente quel cookie verrà indirizzata a quell'host, purché l'host di destinazione rimanga attivo e integro.

La libreria mesh gRPC senza proxy o il proxy sidecar gestirà il cookie di sessione, ma il codice dell'applicazione client è responsabile della copia del cookie da ogni RPC della sessione alla 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 0 e 86.400 secondi (24 ore) inclusi.

Imposta questo valore su 0s per utilizzare un cookie di sessione e disattivare la scadenza del cookie.

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

Metodi

create

Crea una nuova risorsa GrpcRoute in un progetto e una località specifici.

delete

Elimina una singola risorsa GrpcRoute.

get

Recupera i dettagli di una singola risorsa GrpcRoute.

list

Elenca le risorse GrpcRoute in un progetto e una località specifici.

patch

Aggiorna i parametri di una singola risorsa GrpcRoute.

setIamPolicy

Imposta la policy di controllo dell'accesso sulla risorsa specificata.

testIamPermissions

Restituisce le autorizzazioni di cui dispone un chiamante per la risorsa specificata.