- Risorsa: HttpRoute
- RouteRule
- RouteMatch
- HeaderMatch
- IntegerRange
- QueryParameterMatch
- RouteAction
- Destinazione
- HeaderModifier
- Reindirizzamento
- ResponseCode
- FaultInjectionPolicy
- Ritardo
- Interrompi
- 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 |
Obbligatorio. Nome della risorsa HttpRoute. Corrisponde al pattern |
selfLink |
Solo output. URL definito dal server di questa risorsa |
description |
Facoltativo. Una descrizione in testo libero della risorsa. Lunghezza massima: 1024 caratteri. |
createTime |
Solo output. Timestamp di creazione della risorsa. Un timestamp nel formato RFC3339 UTC "Zulu" con risoluzione in nanosecondi e fino a nove cifre frazionarie. Esempi: |
updateTime |
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: |
hostnames[] |
Obbligatorio. I nomi host definiscono un insieme di host che devono corrispondere all'intestazione host HTTP per selezionare un percorso HTTP 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: - Gli IP non sono consentiti. - Un nome host può essere preceduto da un'etichetta jolly ( Il nome host può essere "esatto" Si tratta di un nome di dominio senza il punto di chiusura di un host di rete (ad es. Tieni presente che, secondo 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 un mesh o a 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 le route per i nomi host |
meshes[] |
Facoltativo. Mesh definisce un elenco di mesh a cui è collegata questa HttpRoute, come una delle regole di routing per instradare le richieste gestite dalla mesh. Ogni riferimento mesh deve corrispondere al pattern: La mesh collegata deve essere di tipo SIDECAR |
gateways[] |
Facoltativo. Gateways definisce un elenco di gateway a cui è associato questo parametro HTTPRoute, come una delle regole di routing per instradare le richieste servite dal gateway. Ogni riferimento al gateway deve corrispondere al pattern: |
labels |
Facoltativo. Set di tag etichetta associati alla risorsa HttpRoute. Un oggetto contenente un elenco di coppie |
rules[] |
Obbligatorio. Regole che definiscono le modalità di routing e gestione del traffico. Le regole vengono abbinate in sequenza in base al RouteMatch specificato per la regola. |
RouteRule
Specifica come abbinare il traffico e come instradarlo quando il traffico corrisponde.
Rappresentazione JSON |
---|
{ "matches": [ { object ( |
Campi | |
---|---|
matches[] |
Un elenco di corrispondenze definisce le condizioni utilizzate per associare la regola alle richieste HTTP in arrivo. 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. Se vuoi configurare una regola predefinita, aggiungine una senza corrispondenze 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 corrispondenza RouteMatch corrisponderà se vengono soddisfatti TUTTI i tipi di corrispondenze.
Rappresentazione JSON |
---|
{ "ignoreCase": boolean, "headers": [ { object ( |
Campi | |
---|---|
ignoreCase |
Specifica se le corrispondenze di prefissoMatch e fullPathMatch sono sensibili alle maiuscole. Il valore predefinito è false. |
headers[] |
Specifica un elenco di intestazioni delle richieste HTTP con cui trovare una corrispondenza. TUTTE le intestazioni fornite devono corrispondere. |
queryParameters[] |
Specifica un elenco di parametri di ricerca con cui trovare una corrispondenza. 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 tra fullPathMatch, prefissoMatch o regexMatch. |
prefixMatch |
Il valore del percorso della richiesta HTTP deve iniziare con prefissoMatch specificato. Il prefisso prefisso deve iniziare con una barra (/). Deve essere utilizzato solo uno dei 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 query e ancore forniti con l'URL originale. Per la grammatica delle espressioni regolari, consulta https://github.com/google/re2/wiki/Syntax Deve essere utilizzato solo uno dei valori fullPathMatch, prefixMatch o regexMatch. |
HeaderMatch
Specifica come selezionare una regola di route basata sulle intestazioni delle richieste HTTP.
Rappresentazione JSON |
---|
{ "header": string, "invertMatch": boolean, // Union field |
Campi | |
---|---|
header |
Il nome dell'intestazione HTTP da associare. |
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 ai contenuti di exactMatch. |
regexMatch |
Il valore dell'intestazione deve corrispondere all'espressione regolare specificata in regexMatch. Per la grammatica delle espressioni regolari, consulta: https://github.com/google/re2/wiki/Syntax |
prefixMatch |
Il valore dell'intestazione deve iniziare con i contenuti diPrefixMatch. |
presentMatch |
Deve esistere un'intestazione con headerName. La corrispondenza avviene indipendentemente dal fatto che l'intestazione abbia un valore o meno. |
suffixMatch |
Il valore dell'intestazione deve terminare con i contenuti di suffixMatch. |
rangeMatch |
Se specificato, 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 (escluso) |
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 query da trovare. |
Campo unione
|
|
exactMatch |
Il valore del parametro di query deve corrispondere esattamente ai contenuti diexactMatch. Deve essere impostata solo una corrispondenza esatta, regexMatch o presentMatch. |
regexMatch |
Il valore del parametro di query deve corrispondere all'espressione regolare specificata da regexMatch. Per la grammatica delle espressioni regolari, consulta https://github.com/google/re2/wiki/Syntax Deve essere impostata solo una corrispondenza esatta, regexMatch o presentMatch. |
presentMatch |
Specifica che QueryParameterMatcher corrisponde se la richiesta contiene il parametro di query, indipendentemente dal fatto che il parametro abbia un valore o meno. È necessario impostare solo uno tra corrispondenzaEsatta, corrispondenzaRegex o corrispondenzaPresente. |
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 impostato, la richiesta viene indirizzata come configurato da questo campo. |
faultInjectionPolicy |
La specifica per la fault injection introdotta nel traffico per testare la resilienza dei client agli errori del servizio di backend. Nell'ambito della fault injection, quando i client inviano richieste a un servizio di backend, è possibile introdurre ritardi su una percentuale di richieste prima di inviare queste richieste al servizio di backend. Analogamente, le richieste da parte dei client possono essere interrotte per una percentuale di richieste. timeout e RiprovaPolicy verranno ignorati dai client configurati con un errore faultInjectionPolicy |
requestHeaderModifier |
La specifica per la modifica delle intestazioni di una richiesta corrispondente prima del recapito della richiesta alla destinazione. Se HeaderModifiers sono impostati sia su destination che su RouteAction, verranno uniti. I conflitti tra i due non saranno risolti nella configurazione. |
responseHeaderModifier |
La specifica per la modifica delle intestazioni di una risposta prima di inviarla nuovamente al client. Se HeaderModifiers sono impostati sia su destination che su RouteAction, verranno uniti. I conflitti tra i due non saranno risolti nella configurazione. |
urlRewrite |
La specifica per la riscrittura dell'URL prima di inoltrare le richieste alla destinazione. |
timeout |
Specifica il timeout per la route selezionata. 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 " |
retryPolicy |
Specifica il criterio di nuovo tentativo associato a questo percorso. |
requestMirrorPolicy |
Specifica il criterio relativo al modo in cui le richieste destinate alla destinazione delle route vengono sottoposte a shadowing su una destinazione sottoposta a mirroring separata. Il proxy non attenderà che la destinazione shadow risponda prima di restituire la risposta. Prima di inviare il traffico al servizio shadow, l'intestazione host/authority ha come suffisso -shadow. |
corsPolicy |
La specifica per consentire le richieste cross-origin lato client. |
statefulSessionAffinity |
Facoltativo. Specifica l'affinità sessione stateful basata su cookie. |
directResponse |
Facoltativo. Oggetto Risposta HTTP statico da restituire indipendentemente dalla richiesta. |
idleTimeout |
Facoltativo. Specifica il timeout inattivo per il percorso selezionato. Per timeout di inattività si intende il periodo in cui non vengono inviati o ricevuti byte nella connessione a monte o a valle. Se non viene impostato, il timeout di inattività predefinito è 1 ora. Se impostato su 0 s, 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 instradata la richiesta.
Rappresentazione JSON |
---|
{ "serviceName": string, "weight": integer, "requestHeaderModifier": { object ( |
Campi | |
---|---|
serviceName |
L'URL di un BackendService a cui instradare il traffico. |
weight |
Specifica la proporzione di richieste inoltrate al backend a cui fa riferimento il campo serviceName. Questo valore viene calcolato come: - weight/somma(ponderazioni in questo elenco di destinazione). 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 questo ha una ponderazione 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 le ponderazioni non sono specificate per tutti i servizi, il traffico viene distribuito in proporzioni uguali tra tutti i servizi. |
requestHeaderModifier |
Facoltativo. La specifica per la modifica delle intestazioni di una richiesta corrispondente prima del recapito della richiesta alla destinazione. Se HeaderModifiers sono impostati sia su destination che 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 nuovamente al client. Se HeaderModifiers sono impostati sia su destination che su RouteAction, verranno uniti. I conflitti tra i due non saranno risolti nella configurazione. |
HeaderModifier
La specifica per la modifica dell'intestazione HTTP nella richiesta e nella risposta HTTP.
Rappresentazione JSON |
---|
{ "set": { string: string, ... }, "add": { string: string, ... }, "remove": [ string ] } |
Campi | |
---|---|
set |
Sostituisci completamente le intestazioni con la mappa specificata, dove la chiave è il nome dell'intestazione e il valore è il valore dell'intestazione. Un oggetto contenente un elenco di |
add |
Aggiungi le intestazioni con una determinata mappa, dove 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 per i 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 al posto di quello fornito nella richiesta. pathReindirizzamento non può essere fornito insieme aPrefixporto. Fornisci solo uno o nessuno. Se non viene specificato nessuno dei due, per il reindirizzamento verrà utilizzato il percorso della richiesta originale. |
prefixRewrite |
Indica che durante il reindirizzamento il prefisso (o percorso) corrispondente deve essere scambiato con questo valore. Questa opzione consente di creare gli URL in modo dinamico in base alla richiesta. |
responseCode |
Il codice di stato HTTP da utilizzare per il reindirizzamento. |
httpsRedirect |
Se impostato su true, lo schema URL nella richiesta reindirizzata è impostato su https. Se impostato su false, lo schema URL della richiesta reindirizzata rimarrà lo stesso di quello della richiesta. Il valore predefinito è impostato su false. |
stripQuery |
Se impostato su true, qualsiasi parte di query associata dell'URL originale viene rimossa prima di reindirizzare la richiesta. Se impostato su false, la parte di query dell'URL originale viene conservata. L'impostazione predefinita è 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 al codice 301. |
FOUND |
Corrisponde al codice 302. |
SEE_OTHER |
Corrisponde a 303. |
TEMPORARY_REDIRECT |
Corrisponde al 307. In questo caso, il metodo di richiesta verrà mantenuto. |
PERMANENT_REDIRECT |
Corrisponde al 308. In questo caso, il metodo di richiesta verrà mantenuto. |
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 della fault injection, quando i client inviano richieste a una destinazione, il proxy client può introdurre ritardi su una percentuale di richieste prima di inviare queste richieste al servizio di destinazione. Analogamente, le richieste possono essere interrotte dal proxy del client per una percentuale di richieste.
Rappresentazione JSON |
---|
{ "delay": { object ( |
Campi | |
---|---|
delay |
La specifica per il ritardo di inserimento nelle richieste del client. |
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 |
Specifica un ritardo fisso prima di inoltrare la richiesta. Durata in secondi con un massimo di nove cifre frazionarie e termina con " |
percentage |
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 come parte di 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, 100] |
URLRewrite
La specifica per modificare l'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 della richiesta 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 per i nuovi tentativi. I valori validi sono: 5xx: il proxy tenta un nuovo tentativo se il servizio di destinazione risponde con un codice di risposta 5xx o se il servizio di destinazione non risponde, ad esempio: disconnessione, reimpostazione, timeout di lettura, errore di connessione e flussi rifiutati. gateway-error: simile a 5xx, ma si applica solo ai codici di risposta 502, 503, 504. reimpostazione: il proxy tenterà un nuovo tentativo se il servizio di destinazione non risponde (timeout di disconnessione/reimpostazione/lettura) connect-failure: il proxy riproverà in caso di errori di connessione alla destinazione, ad esempio a causa di timeout di connessione. retriable-4xx: il proxy eseguirà un nuovo tentativo per i codici di risposta 4xx che lo consentono. Al momento l'unico errore recuperabile supportato è 409. refused-stream: il proxy riproverà se la destinazione reimposta lo stream con un codice di errore REFUSED_STREAM. Questo tipo di reimpostazione indica che è sicuro riprovare. |
numRetries |
Specifica il numero consentito di nuovi 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 di nuovo tentativo. Durata in secondi con un massimo di nove cifre frazionarie e termina con " |
RequestMirrorPolicy
Specifica il criterio relativo al modo in cui le richieste vengono sottoposte a shadowing su un servizio di destinazione di mirroring separato. Il proxy non attende le risposte dal servizio shadow. Prima di inviare il traffico al servizio shadow, l'intestazione host/authority ha come suffisso -shadow.
Rappresentazione JSON |
---|
{
"destination": {
object ( |
Campi | |
---|---|
destination |
La destinazione in cui verrà eseguito il mirroring delle richieste. Il peso della destinazione verrà ignorato. |
mirrorPercent |
Facoltativo. La percentuale di richieste per il mirroring alla 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 di origini che potranno eseguire 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 https://github.com/google/re2/wiki/Syntax. |
allowMethods[] |
Specifica il contenuto per l'intestazione Access-Control-Allow-Methods. |
allowHeaders[] |
Specifica il contenuto per l'intestazione Access-Control-Allow-Headers. |
exposeHeaders[] |
Specifica il contenuto per l'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, l'impostazione su true indica che 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, che indica che il criterio CORS è attivo. |
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 o il proxy sidecar gRPC gestirà il cookie di sessione, ma il codice dell'applicazione client è responsabile della copia del cookie da ogni RPC nella sessione alla 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 86400 secondi (24 ore) inclusi. Una durata in secondi con un massimo di nove cifre frazionarie, che termina con " |
HttpDirectResponse
Oggetto 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 sotto forma di byte. La dimensione massima del corpo è 4096 B. Una stringa con codifica base64. |
Metodi |
|
---|---|
|
Crea una nuova HttpRoute in un progetto e in una località specifici. |
|
Consente di eliminare un singolo HttpRoute. |
|
Restituisce i dettagli di una singola HttpRoute. |
|
Recupera il criterio di controllo dell'accesso per una risorsa. |
|
Elenca HttpRoute in un progetto e in una località specifici. |
|
Aggiorna i parametri di una singola HttpRoute. |
|
Imposta il criterio di controllo dell'accesso sulla risorsa specificata. |
|
Restituisce le autorizzazioni di cui dispone un chiamante sulla risorsa specificata. |