- 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 la modalità di routing del traffico HTTP da parte di 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 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: |
hostnames[] |
Obbligatorio. I nomi host definiscono un insieme di host che devono corrispondere all'intestazione dell'host HTTP per selezionare una HttpRoute per elaborare la richiesta. "Nome host" è il nome di dominio completo di un host di rete, come definito dal documento RFC 1123, con l'eccezione che: - 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 ai gateway devono avere nomi host univoci. Se tenti di collegare più route con nomi host in conflitto, la configurazione verrà rifiutata. Ad esempio, anche se è accettabile che le route per i nomi host |
meshes[] |
Facoltativo. I mesh definiscono un elenco di mesh a cui è associato questa HttpRoute come una delle regole di routing per instradare le richieste gestite dal mesh. Ogni riferimento mesh deve corrispondere al pattern: Il mesh collegato deve essere di tipo SIDECAR |
gateways[] |
Facoltativo. Gateway definisce un elenco di gateway a cui è associato questa 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 etichetta associati alla risorsa HttpRoute. Un oggetto contenente un elenco di |
rules[] |
Obbligatorio. Regole che definiscono le modalità di routing e gestione del traffico. Le regole verranno abbinate in sequenza in base al valore RouteMatch specificato per la regola. |
RouteRule
Specifica come far corrispondere il traffico e come instradarlo in caso di corrispondenza del traffico.
Rappresentazione JSON |
---|
{ "matches": [ { object ( |
Campi | |
---|---|
matches[] |
Un elenco di corrispondenze definisce le condizioni utilizzate per far corrispondere la regola alle richieste HTTP 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. Se vuoi configurare una regola predefinita, aggiungine una senza corrispondenze specificate alla fine dell'elenco delle regole. |
action |
La regola dettagliata che definisce come indirizzare il traffico corrispondente. |
RouteMatch
RouteMatch definisce le specifiche utilizzate per abbinare le richieste. Se sono impostati più tipi di corrispondenza, questo RouteMatch corrisponderà se vengono corrispondenti TUTTI i tipi di corrispondenza.
Rappresentazione JSON |
---|
{ "ignoreCase": boolean, "headers": [ { object ( |
Campi | |
---|---|
ignoreCase |
Specifica se le corrispondenze prefissiMatch e fullPathMatch sono sensibili alle maiuscole. Il valore predefinito è false. |
headers[] |
Specifica un elenco di intestazioni delle richieste HTTP da utilizzare per il confronto. TUTTE le intestazioni fornite devono corrispondere. |
queryParameters[] |
Specifica un elenco di parametri di ricerca con cui eseguire una corrispondenza. TUTTI i parametri di ricerca devono corrispondere. |
Campo di unione
|
|
fullPathMatch |
Il valore del percorso della richiesta HTTP deve corrispondere esattamente a questo valore. Deve essere utilizzato solo un campo fullPathMatch,PrefixMatch o a regexMatch. |
prefixMatch |
Il valore del percorso di richiesta HTTP deve iniziare con il prefissoCode specificato. Il prefisso deve iniziare con una barra (/). Deve essere utilizzato solo un campo fullPathMatch,PrefixMatch o a regexMatch. |
regexMatch |
Il valore del percorso di richiesta HTTP deve soddisfare l'espressione regolare specificata da regexMatch dopo la rimozione di eventuali parametri di ricerca e di ancoraggio forniti con l'URL originale. Per la grammatica delle espressioni regolari, vedi https://github.com/google/re2/wiki/Syntax Deve essere utilizzato solo un campo fullPathMatch,PrefixMatch o a 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 con cui stabilire una corrispondenza. |
invertMatch |
Se specificato, il risultato della corrispondenza verrà invertito prima del controllo. Il valore predefinito è impostato su false. |
Campo di unione
|
|
exactMatch |
Il valore dell'intestazione deve corrispondere esattamente ai contenuti diexactMatch. |
regexMatch |
Il valore dell'intestazione deve corrispondere all'espressione regolare specificata in regexMatch. Per la grammatica delle espressioni regolari, vedi: https://github.com/google/re2/wiki/Syntax |
prefixMatch |
Il valore dell'intestazione deve iniziare con il contenuto di prefissiMatch. |
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 il contenuto di suffissiMatch. |
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 (esclusivo) |
QueryParameterMatch
Specifiche per la corrispondenza a un parametro di query nella richiesta.
Rappresentazione JSON |
---|
{ "queryParameter": string, // Union field |
Campi | |
---|---|
queryParameter |
Il nome del parametro di ricerca da abbinare. |
Campo di unione
|
|
exactMatch |
Il valore del parametro di query deve corrispondere esattamente al contenuto diexactMatch. Deve essere impostato solo un valore traexactMatch, regexMatch o di presentMatch. |
regexMatch |
Il valore del parametro di query deve corrispondere all'espressione regolare specificata da regexMatch. Per la grammatica delle espressioni regolari, vedi https://github.com/google/re2/wiki/Syntax Deve essere impostato solo un valore traexactMatch, regexMatch o di presentMatch. |
presentMatch |
Specifica che il parametro QueryParameterMatcher corrisponde se la richiesta contiene un parametro di query, indipendentemente dal fatto che il parametro abbia un valore o meno. Deve essere impostato solo un valore traexactMatch, regexMatch o di 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 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 all'errore del servizio di backend. Nell'ambito dell'inserimento di errori, quando i client inviano richieste a un servizio di backend, possono essere introdotti ritardi su una percentuale di richieste prima di inviare queste richieste al servizio di backend. 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 |
requestHeaderModifier |
La specifica per la modifica delle intestazioni di una richiesta corrispondente prima della consegna della richiesta alla destinazione. Se i parametri HeaderModifier sono impostati sia sulla destination che sulla routeAction, questi 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 inviare la risposta al client. Se i parametri HeaderModifier sono impostati sia sulla destination che sulla routeAction, questi verranno uniti. I conflitti tra i due non verranno risolti nella configurazione. |
urlRewrite |
La specifica per l'URL di riscrittura 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 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 |
Specifica il criterio relativo ai nuovi tentativi associato a questa route. |
requestMirrorPolicy |
Specifica il criterio relativo alla modalità di shadowing delle richieste destinate alla destinazione delle route in una destinazione separata con mirroring. 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/autorità ha 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 di risposta HTTP statica da restituire indipendentemente dalla richiesta. |
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
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 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. |
requestHeaderModifier |
Facoltativo. La specifica per la modifica delle intestazioni di una richiesta corrispondente prima della consegna della richiesta alla destinazione. Se i parametri HeaderModifier sono impostati sia sulla destination che sulla routeAction, questi 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 inviare la risposta al client. Se i parametri HeaderModifier sono impostati sia sulla destination che sulla routeAction, questi 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 una mappa specificata, dove la chiave è il nome dell'intestazione, mentre il valore è il valore dell'intestazione. Un oggetto contenente un elenco di |
add |
Aggiungi le intestazioni con una mappa data, dove la chiave è il nome dell'intestazione e il valore è il valore dell'intestazione. Un oggetto contenente un elenco di |
remove[] |
Rimuovi le intestazioni (che corrispondono 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. pathReindirizzamento non può essere fornito insieme aPrefixEmbed. Forniscine uno solo o nessuno. Se nessuno dei due viene fornito, 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 la creazione dinamica degli URL in base alla richiesta. |
responseCode |
Il codice di stato HTTP da utilizzare per il reindirizzamento. |
httpsRedirect |
Se viene impostato su true, lo schema dell'URL nella richiesta di reindirizzamento è impostato su https. Se viene 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 associata all'URL originale viene rimossa prima del reindirizzamento della richiesta. Se viene impostato su false, la parte della query dell'URL originale viene mantenuta. 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 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, il proxy del 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 client 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] |
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 dell'host delle richieste 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 quando si applica questo criterio per i nuovi tentativi. 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 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. reset: il proxy proverà a riprovare se il servizio di destinazione non risponde (disconnessione/reimpostazione/timeout di lettura) connect-failure: il proxy riprova in caso di errori di connessione alla destinazione, ad esempio a causa di timeout della connessione. retriable-4xx: il proxy eseguirà un nuovo tentativo per i codici di risposta 4xx recuperabili. Attualmente, l'unico errore irreversibile supportato è il 409. rifiutato-stream: il proxy farà un nuovo tentativo se la destinazione reimposta il flusso con un codice di errore REFUSED_STREAM. Questo tipo di reimpostazione indica che puoi riprovare in sicurezza. |
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 nuovo tentativo. Una durata in secondi con un massimo di nove cifre frazionarie, che termina con " |
RequestMirrorPolicy
Specifica il criterio relativo alla modalità di shadowing delle richieste a un servizio di destinazione con mirroring separato. Il proxy non attende le risposte dal servizio shadow. Prima di inviare il traffico al servizio shadow, l'intestazione host/autorità ha il suffisso -shadow.
Rappresentazione JSON |
---|
{
"destination": {
object ( |
Campi | |
---|---|
destination |
La destinazione alla quale verranno sottoposte a mirroring le richieste. Il peso della destinazione verrà ignorato. |
mirrorPercent |
Facoltativo. La percentuale di richieste di cui eseguire 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 autorizzate a eseguire 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, vedi 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, l'impostazione di questo valore su true indica che la richiesta effettiva può includere credenziali utente. Questo si traduce nell'intestazione Access-Control-Allow-Credentials. Il valore predefinito è false. |
disabled |
Se il valore è true, il criterio CORS viene disattivato. Il valore predefinito è false, che indica che il criterio CORS è attivo. |
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 " |
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 di 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 è 1024 caratteri. |
bytesBody |
Facoltativo. Corpo della risposta come byte. La dimensione massima del corpo è 4096 B. Una stringa con codifica Base64. |
Metodi |
|
---|---|
|
Crea una nuova HttpRoute in un determinato progetto e in una località specifici. |
|
Elimina una singola HttpRoute. |
|
Restituisce i dettagli di una singola HttpRoute. |
|
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 un chiamante dispone per la risorsa specificata. |