- Risorsa: HttpRoute
- RouteRule
- RouteMatch
- HeaderMatch
- IntegerRange
- QueryParameterMatch
- RouteAction
- Destinazione
- HeaderModifier
- Reindirizzamento
- ResponseCode
- FaultInjectionPolicy
- Ritardo
- Abort
- URLRewrite
- RetryPolicy
- RequestMirrorPolicy
- CorsPolicy
- StatefulSessionAffinityPolicy
- HttpDirectResponse
- Metodi
Risorsa: HttpRoute
HttpRoute è la risorsa che definisce il modo in cui il traffico HTTP deve essere instradato da una risorsa Mesh o Gateway.
Rappresentazione JSON |
---|
{
"name": string,
"selfLink": string,
"description": string,
"createTime": string,
"updateTime": string,
"hostnames": [
string
],
"meshes": [
string
],
"gateways": [
string
],
"labels": {
string: string,
...
},
"rules": [
{
object ( |
Campi | |
---|---|
name |
Identificatore. Nome della risorsa HttpRoute. Corrisponde al pattern |
selfLink |
Solo output. URL definito dal server di questa risorsa |
description |
Facoltativo. Una descrizione in formato libero della risorsa. Lunghezza massima 1024 caratteri. |
createTime |
Solo output. Timestamp di creazione della risorsa. Utilizza RFC 3339, in cui l'output generato è sempre normalizzato in base al fuso orario UTC e utilizza 0, 3, 6 o 9 cifre frazionarie. Sono accettati anche offset diversi da "Z". Esempi: |
updateTime |
Solo output. Timestamp dell'aggiornamento della risorsa. Utilizza RFC 3339, in cui l'output generato è sempre normalizzato in base al fuso orario UTC e utilizza 0, 3, 6 o 9 cifre frazionarie. Sono accettati anche offset diversi da "Z". Esempi: |
hostnames[] |
Obbligatorio. I nomi host definiscono un insieme di host che devono corrispondere all'intestazione host HTTP per selezionare una HttpRoute per elaborare la richiesta. Il nome host è il nome di dominio completo di un host di rete, come definito da RFC 1123, con l'eccezione che: - Gli IP non sono consentiti. - Un nome host può essere preceduto da un'etichetta jolly ( Il nome host può essere "esatto", ovvero un nome di dominio senza il punto finale di un host di rete (ad es. Tieni presente che, in base a RFC1035 e RFC1123, un'etichetta deve essere composta da caratteri alfanumerici minuscoli o "-" e deve iniziare e terminare con un carattere alfanumerico. Non è consentita altra punteggiatura. Le route associate a una mesh o ai gateway devono avere nomi host univoci. Se tenti di collegare più route con nomi host in conflitto, la configurazione verrà rifiutata. Ad esempio, è accettabile che le route per i nomi host |
meshes[] |
Facoltativo. Meshes definisce un elenco di mesh a cui è collegato questo HttpRoute, come una delle regole di routing per instradare le richieste gestite dalla mesh. Ogni riferimento alla mesh deve corrispondere al pattern: Il mesh allegato deve essere di tipo SIDECAR |
gateways[] |
Facoltativo. Gateways definisce un elenco di gateway a cui è collegato questo HTTPRoute, come una delle regole di routing per instradare le richieste gestite dal gateway. Ogni riferimento al gateway deve corrispondere al pattern: |
labels |
Facoltativo. Set di tag di etichette associati alla risorsa HttpRoute. Un oggetto contenente un elenco di coppie |
rules[] |
Obbligatorio. Regole che definiscono come viene instradato e gestito il traffico. Le regole verranno abbinate in sequenza in base a RouteMatch specificato per la regola. |
RouteRule
Specifica come trovare la corrispondenza del traffico e come instradarlo quando viene trovata una corrispondenza.
Rappresentazione JSON |
---|
{ "matches": [ { object ( |
Campi | |
---|---|
matches[] |
Un elenco di corrispondenze definisce le condizioni utilizzate per confrontare la regola con le richieste HTTP in entrata. Ogni corrispondenza è indipendente, ovvero questa regola verrà soddisfatta se viene soddisfatta UNA QUALSIASI delle corrispondenze. Se non viene specificato alcun campo di corrispondenze, questa regola corrisponderà incondizionatamente al traffico. Se vuoi configurare una regola predefinita, aggiungi una regola senza corrispondenze specificate alla fine dell'elenco delle regole. |
action |
La regola dettagliata che definisce come instradare il traffico corrispondente. |
RouteMatch
RouteMatch definisce le specifiche utilizzate per abbinare le richieste. Se sono impostati più tipi di corrispondenza, questa RouteMatch corrisponderà se TUTTI i tipi di corrispondenza corrispondono.
Rappresentazione JSON |
---|
{ "ignoreCase": boolean, "headers": [ { object ( |
Campi | |
---|---|
ignoreCase |
Specifica se le corrispondenze prefixMatch e fullPathMatch sono sensibili alle maiuscole. Il valore predefinito è false. |
headers[] |
Specifica un elenco di intestazioni delle richieste HTTP da confrontare. TUTTE le intestazioni fornite devono corrispondere. |
queryParameters[] |
Specifica un elenco di parametri di ricerca da confrontare. TUTTI i parametri di ricerca devono corrispondere. |
Campo unione
|
|
fullPathMatch |
Il valore del percorso della richiesta HTTP deve corrispondere esattamente a questo valore. Deve essere utilizzato solo uno dei seguenti valori: fullPathMatch, prefixMatch o regexMatch. |
prefixMatch |
Il valore del percorso della richiesta HTTP deve iniziare con prefixMatch specificato. prefixMatch deve iniziare con una barra (/). Deve essere utilizzato solo uno dei seguenti valori: fullPathMatch, prefixMatch o regexMatch. |
regexMatch |
Il valore del percorso della richiesta HTTP deve soddisfare l'espressione regolare specificata da regexMatch dopo aver rimosso eventuali parametri di ricerca e ancore forniti con l'URL originale. Per la grammatica delle espressioni regolari, consulta la pagina https://github.com/google/re2/wiki/Syntax. Deve essere utilizzato solo uno dei seguenti valori: fullPathMatch, prefixMatch o regexMatch. |
HeaderMatch
Specifica come selezionare una regola di route in base alle intestazioni delle richieste HTTP.
Rappresentazione JSON |
---|
{ "header": string, "invertMatch": boolean, // Union field |
Campi | |
---|---|
header |
Il nome dell'intestazione HTTP da confrontare. |
invertMatch |
Se specificato, il risultato della corrispondenza verrà invertito prima del controllo. Il valore predefinito è impostato su false. |
Campo unione
|
|
exactMatch |
Il valore dell'intestazione deve corrispondere esattamente al contenuto di exactMatch. |
regexMatch |
Il valore dell'intestazione deve corrispondere all'espressione regolare specificata in regexMatch. Per la grammatica delle espressioni regolari, visita la pagina: https://github.com/google/re2/wiki/Syntax |
prefixMatch |
Il valore dell'intestazione deve iniziare con i contenuti di prefixMatch. |
presentMatch |
Deve esistere un'intestazione con headerName. La corrispondenza avviene indipendentemente dal fatto che l'intestazione abbia un valore. |
suffixMatch |
Il valore dell'intestazione deve terminare con i contenuti di suffixMatch. |
rangeMatch |
Se specificata, la regola corrisponderà se il valore dell'intestazione della richiesta rientra nell'intervallo. |
IntegerRange
Rappresenta un intervallo di valori interi.
Rappresentazione JSON |
---|
{ "start": integer, "end": integer } |
Campi | |
---|---|
start |
Inizio dell'intervallo (incluso) |
end |
Fine dell'intervallo (esclusa) |
QueryParameterMatch
Specifiche per la corrispondenza di un parametro di query nella richiesta.
Rappresentazione JSON |
---|
{ "queryParameter": string, // Union field |
Campi | |
---|---|
queryParameter |
Il nome del parametro di ricerca da corrispondere. |
Campo unione
|
|
exactMatch |
Il valore del parametro query deve corrispondere esattamente ai contenuti di exactMatch. È necessario impostare solo uno dei valori exactMatch, regexMatch o presentMatch. |
regexMatch |
Il valore del parametro query deve corrispondere all'espressione regolare specificata da regexMatch. Per la grammatica delle espressioni regolari, consulta la pagina https://github.com/google/re2/wiki/Syntax. È necessario impostare solo uno dei valori exactMatch, regexMatch o presentMatch. |
presentMatch |
Specifica che QueryParameterMatcher corrisponde se la richiesta contiene un parametro di query, indipendentemente dal fatto che il parametro abbia o meno un valore. È necessario impostare solo uno dei valori exactMatch, regexMatch o presentMatch. |
RouteAction
Le specifiche per il routing del traffico e l'applicazione dei criteri associati.
Rappresentazione JSON |
---|
{ "destinations": [ { object ( |
Campi | |
---|---|
destinations[] |
La destinazione a cui deve essere inoltrato il traffico. |
redirect |
Se impostata, la richiesta viene indirizzata come configurato da questo campo. |
faultInjectionPolicy |
La specifica per l'inserimento di errori introdotta nel traffico per testare la resilienza dei client al guasto del servizio di backend. Nell'ambito dell'inserimento di errori, quando i client inviano richieste a un servizio di backend, è possibile introdurre ritardi su una percentuale di richieste prima di inviarle al servizio di backend. 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 criterio faultInjectionPolicy |
requestHeaderModifier |
La specifica per la modifica delle intestazioni di una richiesta corrispondente prima della consegna della richiesta alla destinazione. Se HeaderModifiers sono impostati sia sulla destinazione sia su RouteAction, verranno uniti. I conflitti tra i due non verranno risolti nella configurazione. |
responseHeaderModifier |
La specifica per la modifica delle intestazioni di una risposta prima di inviarla al client. Se HeaderModifiers sono impostati sia sulla destinazione sia su RouteAction, verranno uniti. I conflitti tra i due non verranno risolti nella configurazione. |
urlRewrite |
La specifica per la riscrittura dell'URL prima di inoltrare le richieste alla destinazione. |
timeout |
Specifica il timeout per l'itinerario selezionato. Il timeout viene calcolato dal momento in cui la richiesta è stata elaborata completamente (ovvero la fine dello stream) fino al momento in cui la risposta è stata elaborata completamente. Il timeout include tutti i tentativi. Una durata in secondi con un massimo di nove cifre frazionarie, che termina con " |
retryPolicy |
Specifica i criteri per i nuovi tentativi associati a questa route. |
requestMirrorPolicy |
Specifica le norme relative al modo in cui le richieste destinate alla destinazione delle route vengono sottoposte a shadowing in una destinazione duplicata separata. Il proxy non attenderà la risposta della destinazione shadow prima di restituire la risposta. Prima di inviare il traffico al servizio shadow, l'intestazione host/authority viene aggiunta con il suffisso -shadow. |
corsPolicy |
La specifica per consentire le richieste multiorigine lato client. |
statefulSessionAffinity |
Facoltativo. Specifica l'affinità sessione stateful basata su cookie. |
directResponse |
Facoltativo. Oggetto risposta HTTP statica da restituire indipendentemente dalla richiesta. |
idleTimeout |
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 è 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 " |
Destinazione
Specifiche di una destinazione a cui deve essere indirizzata la richiesta.
Rappresentazione JSON |
---|
{ "serviceName": string, "weight": integer, "requestHeaderModifier": { object ( |
Campi | |
---|---|
serviceName |
L'URL di un BackendService a cui indirizzare il traffico. |
weight |
Specifica la proporzione di richieste inoltrate al backend a cui fa riferimento il campo serviceName. Questo valore viene calcolato come: - peso/somma(pesi in questo elenco di destinazioni). Per i valori diversi da zero, potrebbe esserci un epsilon rispetto alla 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 vengono specificati pesi 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. |
requestHeaderModifier |
Facoltativo. La specifica per la modifica delle intestazioni di una richiesta corrispondente prima della consegna della richiesta alla destinazione. Se HeaderModifiers sono impostati sia sulla destinazione sia su RouteAction, verranno uniti. I conflitti tra i due non verranno risolti nella configurazione. |
responseHeaderModifier |
Facoltativo. La specifica per la modifica delle intestazioni di una risposta prima di inviarla al client. Se HeaderModifiers sono impostati sia sulla destinazione sia su RouteAction, verranno uniti. I conflitti tra i due non verranno risolti nella configurazione. |
HeaderModifier
La specifica per la modifica dell'intestazione HTTP nella richiesta HTTP e nella risposta HTTP.
Rappresentazione JSON |
---|
{ "set": { string: string, ... }, "add": { string: string, ... }, "remove": [ string ] } |
Campi | |
---|---|
set |
Sovrascrivi/sostituisci completamente le intestazioni con la mappa specificata, in cui la chiave è il nome dell'intestazione e il valore è il valore dell'intestazione. Un oggetto contenente un elenco di coppie |
add |
Aggiungi le intestazioni con la mappa specificata in cui la chiave è il nome dell'intestazione e il valore è il valore dell'intestazione. Un oggetto contenente un elenco di coppie |
remove[] |
Rimuovi le intestazioni (corrispondenza in base ai nomi delle intestazioni) specificate nell'elenco. |
Reindirizzamento
La specifica per il reindirizzamento del traffico.
Rappresentazione JSON |
---|
{
"hostRedirect": string,
"pathRedirect": string,
"prefixRewrite": string,
"responseCode": enum ( |
Campi | |
---|---|
hostRedirect |
L'host che verrà utilizzato nella risposta di reindirizzamento anziché quello fornito nella richiesta. |
pathRedirect |
Il percorso che verrà utilizzato nella risposta di reindirizzamento anziché quello fornito nella richiesta. pathRedirect non può essere fornito insieme a prefixRedirect. Forniscine uno solo o nessuno. Se non viene fornito nessuno dei due, per il reindirizzamento verrà utilizzato il percorso della richiesta originale. |
prefixRewrite |
Indica che durante il reindirizzamento, il prefisso (o il percorso) corrispondente deve essere sostituito con questo valore. Questa opzione consente di creare dinamicamente gli URL in base alla richiesta. |
responseCode |
Il codice di stato HTTP da utilizzare per il reindirizzamento. |
httpsRedirect |
Se viene impostato su true, lo schema URL nella richiesta reindirizzata viene impostato su https. Se impostato su false, lo schema URL della richiesta reindirizzata rimarrà lo stesso della richiesta. Il valore predefinito è false. |
stripQuery |
Se impostato su true, qualsiasi parte della query di accompagnamento dell'URL originale viene rimossa prima di reindirizzare la richiesta. Se impostato su false, la parte della query dell'URL originale viene conservata. Il valore predefinito è false. |
portRedirect |
La porta che verrà utilizzata nella richiesta reindirizzata anziché quella fornita nella richiesta. |
ResponseCode
Codice di risposta HTTP supportato.
Enum | |
---|---|
RESPONSE_CODE_UNSPECIFIED |
Valore predefinito |
MOVED_PERMANENTLY_DEFAULT |
Corrisponde a 301. |
FOUND |
Corrisponde a 302. |
SEE_OTHER |
Corrisponde a 303. |
TEMPORARY_REDIRECT |
Corrisponde a 307. In questo caso, il metodo di richiesta verrà mantenuto. |
PERMANENT_REDIRECT |
Corrisponde a 308. In questo caso, il metodo di richiesta verrà mantenuto. |
FaultInjectionPolicy
La specifica per l'inserimento di errori nel traffico per testare la resilienza dei client all'interruzione del servizio di destinazione. Nell'ambito dell'inserimento di errori, quando i client inviano richieste a una destinazione, il proxy client può introdurre ritardi in una percentuale di richieste prima di inviarle al servizio di destinazione. Allo stesso modo, le richieste possono essere interrotte dal proxy client per una percentuale di richieste.
Rappresentazione JSON |
---|
{ "delay": { object ( |
Campi | |
---|---|
delay |
La specifica per l'inserimento di ritardi nelle richieste client. |
abort |
La specifica per l'interruzione delle richieste client. |
Ritardo
Specifica di come le richieste client vengono ritardate nell'ambito dell'inserimento di errori prima di essere inviate 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, 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 |
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, 100] |
URLRewrite
La specifica per la modifica dell'URL della richiesta, prima di inoltrarla alla destinazione.
Rappresentazione JSON |
---|
{ "pathPrefixRewrite": string, "hostRewrite": string } |
Campi | |
---|---|
pathPrefixRewrite |
Prima di inoltrare la richiesta alla destinazione selezionata, la parte corrispondente del percorso delle richieste viene sostituita da questo valore. |
hostRewrite |
Prima di inoltrare la richiesta alla destinazione selezionata, l'intestazione host della richiesta viene sostituita da questo valore. |
RetryPolicy
Le specifiche per i nuovi tentativi.
Rappresentazione JSON |
---|
{ "retryConditions": [ string ], "numRetries": integer, "perTryTimeout": string } |
Campi | |
---|---|
retryConditions[] |
Specifica una o più condizioni in cui si applica questo criterio di ripetizione. I valori validi sono: 5xx: il proxy tenterà un nuovo tentativo se il servizio di destinazione risponde con un codice di risposta 5xx o se non risponde affatto, ad esempio disconnessione, ripristino, timeout di lettura, errore di connessione e flussi rifiutati. gateway-error: simile a 5xx, ma valido solo per i codici di risposta 502, 503, 504. reset: il proxy tenterà un nuovo tentativo se il servizio di destinazione non risponde (disconnessione/reset/timeout di lettura) connect-failure: il proxy riproverà a connettersi alla destinazione in caso di errori, ad esempio a causa di timeout della connessione. retriable-4xx: il proxy riproverà in caso di codici di risposta 4xx che lo permettono. Attualmente, l'unico errore ripetibile supportato è 409. rifiutato-stream: il proxy riproverà se la destinazione reimposta lo stream con un codice di errore REFUSED_STREAM. Questo tipo di ripristino indica che è sicuro riprovare. |
numRetries |
Specifica il numero consentito di tentativi. Questo numero deve essere maggiore di 0. Se non specificato, il valore predefinito è 1. |
perTryTimeout |
Specifica un timeout diverso da zero per ogni tentativo. Una durata in secondi con un massimo di nove cifre frazionarie, che termina con " |
RequestMirrorPolicy
Specifica il criterio su come le richieste vengono sottoposte a shadowing a un servizio di destinazione duplicato separato. Il proxy non attende le risposte dal servizio shadow. Prima di inviare il traffico al servizio shadow, l'intestazione host/authority viene aggiunta con il suffisso -shadow.
Rappresentazione JSON |
---|
{
"destination": {
object ( |
Campi | |
---|---|
destination |
La destinazione a cui verranno sottoposte le richieste. Il peso della destinazione verrà ignorato. |
mirrorPercent |
Facoltativo. La percentuale di richieste da eseguire in mirroring nella destinazione desiderata. |
CorsPolicy
La specifica per consentire le richieste multiorigine lato client.
Rappresentazione JSON |
---|
{ "allowOrigins": [ string ], "allowOriginRegexes": [ string ], "allowMethods": [ string ], "allowHeaders": [ string ], "exposeHeaders": [ string ], "maxAge": string, "allowCredentials": boolean, "disabled": boolean } |
Campi | |
---|---|
allowOrigins[] |
Specifica l'elenco delle origini che potranno consentire le richieste CORS. Un'origine è consentita se corrisponde a un elemento in allowOrigins o a un elemento in allowOriginRegexes. |
allowOriginRegexes[] |
Specifica i pattern di espressioni regolari che corrispondono alle origini consentite. Per la grammatica delle espressioni regolari, consulta la pagina https://github.com/google/re2/wiki/Syntax. |
allowMethods[] |
Specifica il contenuto dell'intestazione Access-Control-Allow-Methods. |
allowHeaders[] |
Specifica il contenuto dell'intestazione Access-Control-Allow-Headers. |
exposeHeaders[] |
Specifica il contenuto dell'intestazione Access-Control-Expose-Headers. |
maxAge |
Specifica per quanto tempo il risultato di una richiesta preflight può essere memorizzato nella cache in secondi. Questo si traduce nell'intestazione Access-Control-Max-Age. |
allowCredentials |
In risposta a una richiesta preflight, se questo valore è impostato su true, la richiesta effettiva può includere le credenziali utente. Questo si traduce nell'intestazione Access-Control-Allow-Credentials. Il valore predefinito è false. |
disabled |
Se è true, il criterio CORS è disattivato. Il valore predefinito è false, il che indica che il criterio CORS è attivo. |
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 finché l'host di destinazione rimane attivo e integro.
La libreria mesh senza proxy gRPC o il proxy sidecar gestirà il cookie di 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 |
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 86.400 secondi (24 ore) inclusi. Una durata in secondi con un massimo di nove cifre frazionarie, che termina con " |
HttpDirectResponse
Oggetto di risposta HTTP statico da restituire.
Rappresentazione JSON |
---|
{ "status": integer, // Union field |
Campi | |
---|---|
status |
Obbligatorio. Stato da restituire come parte della risposta HTTP. Deve essere un numero intero positivo. |
Campo unione HttpBody . Corpo da restituire come parte della risposta HTTP. HttpBody può essere solo uno dei seguenti: |
|
stringBody |
Facoltativo. Corpo della risposta come stringa. La lunghezza massima del corpo è di 1024 caratteri. |
bytesBody |
Facoltativo. Corpo della risposta in byte. La dimensione massima del corpo è 4096 byte. Una stringa con codifica Base64. |
Metodi |
|
---|---|
|
Crea una nuova HttpRoute in un progetto e una località specifici. |
|
Elimina una singola HttpRoute. |
|
Recupera i dettagli di una singola HttpRoute. |
|
Elenca HttpRoute in un determinato progetto e in una determinata località. |
|
Aggiorna i parametri di una singola HttpRoute. |