- Recurso: HttpRoute
- RouteRule
- RouteMatch
- HeaderMatch
- IntegerRange
- QueryParameterMatch
- RouteAction
- Destino
- HeaderModifier
- Redireccionamiento
- ResponseCode
- FaultInjectionPolicy
- Retraso
- Anular
- URLRewrite
- RetryPolicy
- RequestMirrorPolicy
- CorsPolicy
- StatefulSessionAffinityPolicy
- HttpDirectResponse
- Métodos
Recurso: HttpRoute
HttpRoute es el recurso que define cómo debe enrutar el tráfico HTTP un recurso Mesh o Gateway.
| Representación JSON |
|---|
{
"name": string,
"selfLink": string,
"description": string,
"createTime": string,
"updateTime": string,
"hostnames": [
string
],
"meshes": [
string
],
"gateways": [
string
],
"labels": {
string: string,
...
},
"rules": [
{
object ( |
| Campos | |
|---|---|
name |
Es el identificador. Es el nombre del recurso HttpRoute. Coincide con el patrón |
selfLink |
Solo salida. URL de este recurso definida por el servidor |
description |
Es opcional. Es una descripción de texto libre del recurso. La longitud máxima es de 1,024 caracteres. |
createTime |
Solo salida. Marca de tiempo cuando se creó el recurso. Usa el formato RFC 3339, en el que el resultado generado siempre usará la normalización Z y los dígitos fraccionarios 0, 3, 6 o 9. También se aceptan otras compensaciones que no sean “Z”. Ejemplos: |
updateTime |
Solo salida. La marca de tiempo cuando se creó el recurso. Usa el formato RFC 3339, en el que el resultado generado siempre usará la normalización Z y los dígitos fraccionarios 0, 3, 6 o 9. También se aceptan otras compensaciones que no sean “Z”. Ejemplos: |
hostnames[] |
Obligatorio. Los nombres de host definen un conjunto de hosts que deben coincidir con el encabezado de host HTTP para seleccionar una HttpRoute que procese la solicitud. El nombre de host es el nombre de dominio completamente calificado de un host de red, según lo define la RFC 1123, con la excepción de que no se permiten las IPs. - Un nombre de host puede tener como prefijo una etiqueta comodín ( El nombre de host puede ser "preciso", que es un nombre de dominio sin el punto final de un host de red (p.ej., Ten en cuenta que, según RFC1035 y RFC1123, una etiqueta debe contener caracteres alfanuméricos en minúscula o "-", y debe comenzar y terminar en un carácter alfanumérico. No se permite ningún otro signo de puntuación. Las rutas asociadas con una malla o puertas de enlace deben tener nombres de host únicos. Si intentas adjuntar varias rutas con nombres de host en conflicto, se rechazará la configuración. Por ejemplo, si bien es aceptable que las rutas para los nombres de host |
meshes[] |
Es opcional. Meshes define una lista de mallas a las que se adjunta esta HttpRoute, como una de las reglas de enrutamiento para enrutar las solicitudes que entrega la malla. Cada referencia de malla debe coincidir con el patrón: La malla adjunta debe ser del tipo SIDECAR |
gateways[] |
Es opcional. Gateways define una lista de puertas de enlace a las que se adjunta esta HttpRoute, como una de las reglas de enrutamiento para enrutar las solicitudes que entrega la puerta de enlace. Cada referencia de puerta de enlace debe coincidir con el patrón: |
labels |
Es opcional. Es un conjunto de etiquetas asociadas con el recurso HttpRoute. Un objeto que contiene una lista de pares |
rules[] |
Obligatorio. Son reglas que definen cómo se enruta y maneja el tráfico. Las reglas se compararán de forma secuencial según el RouteMatch especificado para la regla. |
RouteRule
Especifica cómo hacer coincidir el tráfico y cómo enrutarlo cuando se produce una coincidencia.
| Representación JSON |
|---|
{ "matches": [ { object ( |
| Campos | |
|---|---|
matches[] |
Una lista de coincidencias define las condiciones que se usan para hacer coincidir la regla con las solicitudes HTTP entrantes. Cada coincidencia es independiente, es decir, esta regla se cumplirá si se cumple CUALQUIERA de las coincidencias. Si no se especifica ningún campo de coincidencias, esta regla coincidirá con el tráfico de forma incondicional. Si deseas configurar una regla predeterminada, agrega una regla sin coincidencias especificadas al final de la lista de reglas. |
action |
Es la regla detallada que define cómo enrutar el tráfico coincidente. |
RouteMatch
RouteMatch define las especificaciones que se usan para hacer coincidir las solicitudes. Si se configuran varios tipos de coincidencias, este RouteMatch coincidirá si TODOS los tipos de coincidencias coinciden.
| Representación JSON |
|---|
{ "ignoreCase": boolean, "headers": [ { object ( |
| Campos | |
|---|---|
ignoreCase |
Especifica si las coincidencias de prefixMatch y fullPathMatch distinguen mayúsculas de minúsculas. El valor predeterminado es falso. |
headers[] |
Especifica una lista de encabezados de la solicitud HTTP con los que se debe hacer coincidir. TODOS los encabezados proporcionados deben coincidir. |
queryParameters[] |
Especifica una lista de parámetros de consulta con los que se debe hacer coincidir. TODOS los parámetros de consulta deben coincidir. |
Campo de unión
|
|
fullPathMatch |
El valor de la ruta de acceso de la solicitud HTTP debe coincidir exactamente con este valor. Solo se debe usar uno de los siguientes elementos: fullPathMatch, prefixMatch o regexMatch. |
prefixMatch |
El valor de la ruta de acceso de la solicitud HTTP debe comenzar con el prefijo prefixMatch especificado. prefixMatch debe comenzar con una /. Solo se debe usar uno de los siguientes elementos: fullPathMatch, prefixMatch o regexMatch. |
regexMatch |
El valor de la ruta de acceso de la solicitud HTTP debe cumplir con la expresión regular especificada por regexMatch después de quitar los parámetros de consulta y el ancla proporcionados con la URL de origen. Para conocer la gramática de las expresiones regulares, consulta https://github.com/google/re2/wiki/Syntax Solo se debe usar uno de los siguientes elementos: fullPathMatch, prefixMatch o regexMatch. |
HeaderMatch
Especifica cómo seleccionar una regla de enrutamiento según los encabezados de la solicitud HTTP.
| Representación JSON |
|---|
{ "header": string, "invertMatch": boolean, // Union field |
| Campos | |
|---|---|
header |
Es el nombre del encabezado HTTP con el que se debe establecer la coincidencia. |
invertMatch |
Si se especifica, el resultado de la coincidencia se invertirá antes de la verificación. El valor predeterminado se establece en falso. |
Campo de unión
|
|
exactMatch |
El valor del encabezado debe coincidir exactamente con el contenido de exactMatch. |
regexMatch |
El valor del encabezado debe coincidir con la expresión regular especificada en regexMatch. Para conocer la gramática de las expresiones regulares, consulta https://github.com/google/re2/wiki/Syntax. |
prefixMatch |
El valor del encabezado debe comenzar con el contenido de prefixMatch. |
presentMatch |
Debe existir un encabezado con headerName. La coincidencia se produce independientemente de si el encabezado tiene un valor o no. |
suffixMatch |
El valor del encabezado debe terminar con el contenido de suffixMatch. |
rangeMatch |
Si se especifica, la regla coincidirá si el valor del encabezado de la solicitud está dentro del rango. |
IntegerRange
Representa un rango de valores enteros.
| Representación JSON |
|---|
{ "start": integer, "end": integer } |
| Campos | |
|---|---|
start |
Inicio del rango (inclusive) |
end |
Fin del rango (exclusivo) |
QueryParameterMatch
Especificaciones para que coincidan con un parámetro de consulta en la solicitud.
| Representación JSON |
|---|
{ "queryParameter": string, // Union field |
| Campos | |
|---|---|
queryParameter |
Es el nombre del parámetro de consulta que se debe hacer coincidir. |
Campo de unión
|
|
exactMatch |
El valor del parámetro de consulta debe coincidir exactamente con el contenido de exactMatch. Solo se debe configurar uno de los siguientes valores: exactMatch, regexMatch o presentMatch. |
regexMatch |
El valor del parámetro de consulta debe coincidir con la expresión regular que especifica regexMatch. Para conocer la gramática de las expresiones regulares, consulta https://github.com/google/re2/wiki/Syntax Solo se debe configurar uno de los siguientes valores: exactMatch, regexMatch o presentMatch. |
presentMatch |
Especifica que QueryParameterMatcher coincide si la solicitud contiene un parámetro de consulta, independientemente de si el parámetro tiene un valor o no. Solo se debe configurar uno de los siguientes valores: exactMatch, regexMatch o presentMatch. |
RouteAction
Son las especificaciones para enrutar el tráfico y aplicar las políticas asociadas.
| Representación JSON |
|---|
{ "destinations": [ { object ( |
| Campos | |
|---|---|
destinations[] |
Es el destino al que se debe reenviar el tráfico. |
redirect |
Si se establece, la solicitud se dirige según lo configurado en este campo. |
faultInjectionPolicy |
Es la especificación para la inyección de fallas que se introduce en el tráfico para probar la resiliencia de los clientes ante fallas del servicio de backend. Como parte de la inserción de errores, cuando los clientes envían solicitudes a un servicio de backend, se pueden introducir retrasos en un porcentaje de las solicitudes antes de enviarlas al servicio de backend. Del mismo modo, las solicitudes de los clientes se pueden anular para un porcentaje de solicitudes. Los clientes que estén configurados con una faultInjectionPolicy ignorarán timeout y retryPolicy |
requestHeaderModifier |
Es la especificación para modificar los encabezados de una solicitud coincidente antes de que se entregue al destino. Si se configuran HeaderModifiers tanto en el destino como en RouteAction, se combinarán. Los conflictos entre ambos no se resolverán en la configuración. |
responseHeaderModifier |
Es la especificación para modificar los encabezados de una respuesta antes de enviarla de vuelta al cliente. Si se configuran HeaderModifiers tanto en el destino como en RouteAction, se combinarán. Los conflictos entre ambos no se resolverán en la configuración. |
urlRewrite |
Es la especificación para reescribir la URL antes de reenviar las solicitudes al destino. |
timeout |
Especifica el tiempo de espera para la ruta seleccionada. El tiempo de espera se calcula desde el momento en que la solicitud se procesa por completo (es decir, el final de la transmisión) hasta que la respuesta se procesa por completo. El tiempo de espera incluye todos los reintentos. Una duración en segundos con hasta nueve dígitos decimales, que terminan en “ |
retryPolicy |
Especifica la política de reintentos asociada con esta ruta. |
requestMirrorPolicy |
Especifica la política sobre cómo las solicitudes destinadas al destino de las rutas se duplican en un destino duplicado independiente. El proxy no esperará a que el destino de duplicación responda antes de devolver la respuesta. Antes de enviar tráfico al servicio de duplicación, se agrega el sufijo -shadow al encabezado de host/autoridad. |
corsPolicy |
Es la especificación para permitir solicitudes de origen cruzado del cliente. |
statefulSessionAffinity |
Es opcional. Especifica la afinidad de sesión con estado basada en cookies. |
directResponse |
Es opcional. Es el objeto de respuesta HTTP estático que se devolverá, independientemente de la solicitud. |
idleTimeout |
Es opcional. Especifica el tiempo de espera de inactividad para la ruta seleccionada. El tiempo de espera de inactividad se define como el período en el que no se envían ni reciben bytes en la conexión ascendente o descendente. Si no se establece, el tiempo de espera de inactividad predeterminado es de 1 hora. Si se establece en 0 s, se inhabilitará el tiempo de espera. Una duración en segundos con hasta nueve dígitos decimales, que terminan en “ |
Destino
Especificaciones de un destino al que se debe enrutar la solicitud.
| Representación JSON |
|---|
{ "serviceName": string, "weight": integer, "requestHeaderModifier": { object ( |
| Campos | |
|---|---|
serviceName |
Es la URL de un BackendService al que se enruta el tráfico. |
weight |
Especifica la proporción de solicitudes que se reenvían al backend al que hace referencia el campo serviceName. Se calcula de la siguiente manera: - peso/Suma(pesos en esta lista de destinos). En el caso de los valores que no sean cero, puede haber un épsilon de la proporción exacta definida aquí, según la precisión que admita una implementación. Si solo se especifica un serviceName y tiene un peso mayor que 0, el 100% del tráfico se reenvía a ese backend. Si se especifican ponderaciones para un nombre de servicio, se deben especificar para todos. Si no se especifican ponderaciones para todos los servicios, el tráfico se distribuye en proporciones iguales a todos ellos. |
requestHeaderModifier |
Es opcional. Es la especificación para modificar los encabezados de una solicitud coincidente antes de que se entregue al destino. Si se configuran HeaderModifiers tanto en el destino como en RouteAction, se combinarán. Los conflictos entre ambos no se resolverán en la configuración. |
responseHeaderModifier |
Es opcional. Es la especificación para modificar los encabezados de una respuesta antes de enviarla de vuelta al cliente. Si se configuran HeaderModifiers tanto en el destino como en RouteAction, se combinarán. Los conflictos entre ambos no se resolverán en la configuración. |
HeaderModifier
Es la especificación para modificar el encabezado HTTP en la solicitud HTTP y la respuesta HTTP.
| Representación JSON |
|---|
{ "set": { string: string, ... }, "add": { string: string, ... }, "remove": [ string ] } |
| Campos | |
|---|---|
set |
Reemplaza por completo los encabezados por el mapa proporcionado, en el que la clave es el nombre del encabezado y el valor es el valor del encabezado. Un objeto que contiene una lista de pares |
add |
Agrega los encabezados con el mapa proporcionado, en el que la clave es el nombre del encabezado y el valor es el valor del encabezado. Un objeto que contiene una lista de pares |
remove[] |
Quita los encabezados (que coincidan con los nombres de los encabezados) especificados en la lista. |
Redireccionamiento
Es la especificación para redireccionar el tráfico.
| Representación JSON |
|---|
{
"hostRedirect": string,
"pathRedirect": string,
"prefixRewrite": string,
"responseCode": enum ( |
| Campos | |
|---|---|
hostRedirect |
Es el host que se usará en la respuesta de redireccionamiento en lugar del que se proporcionó en la solicitud. |
pathRedirect |
Es la ruta que se usará en la respuesta de redireccionamiento en lugar de la que se proporcionó en la solicitud. No se puede proporcionar pathRedirect junto con prefixRedirect. Proporciona uno solo o ninguno. Si no se proporciona ninguno, se usará la ruta de acceso de la solicitud original para el redireccionamiento. |
prefixRewrite |
Indica que, durante el redireccionamiento, el prefijo (o la ruta de acceso) coincidente se debe intercambiar con este valor. Esta opción permite que las URLs se creen de forma dinámica según la solicitud. |
responseCode |
Es el código de estado HTTP que se usará para el redireccionamiento. |
httpsRedirect |
Si se establece como verdadero, el esquema de URL en la solicitud redireccionada se establece como https. Si se establece como falso, el esquema de URL de la solicitud redireccionada seguirá siendo el mismo que el de la solicitud. El valor predeterminado es falso. |
stripQuery |
Si se establece como verdadero, se quita cualquier parte de la consulta que acompañe a la URL de origen antes de redireccionar la solicitud. Si se establece como falso, se conserva la parte de la consulta de la URL original. El valor predeterminado es falso. |
portRedirect |
Es el puerto que se usará en la solicitud redireccionada en lugar del que se proporcionó en la solicitud. |
ResponseCode
Código de respuesta HTTP admitido.
| Enums | |
|---|---|
RESPONSE_CODE_UNSPECIFIED |
Valor predeterminado |
MOVED_PERMANENTLY_DEFAULT |
Corresponde a 301. |
FOUND |
Corresponde a 302. |
SEE_OTHER |
Corresponde a 303. |
TEMPORARY_REDIRECT |
Corresponde a 307. En este caso, se conservará el método de solicitud. |
PERMANENT_REDIRECT |
Corresponde a 308. En este caso, se conservará el método de solicitud. |
FaultInjectionPolicy
Es la especificación de la inserción de errores que se introduce en el tráfico para probar la resiliencia de los clientes ante fallas del servicio de destino. Como parte de la inserción de errores, cuando los clientes envían solicitudes a un destino, el proxy del cliente puede introducir retrasos en un porcentaje de las solicitudes antes de enviarlas al servicio de destino. De manera similar, el proxy del cliente puede anular un porcentaje de las solicitudes.
| Representación JSON |
|---|
{ "delay": { object ( |
| Campos | |
|---|---|
delay |
Es la especificación para insertar un retraso en las solicitudes de los clientes. |
abort |
Es la especificación para anular las solicitudes de los clientes. |
Retraso
Especificación de cómo se retrasan las solicitudes de los clientes como parte de la inserción de errores antes de enviarse a un destino.
| Representación JSON |
|---|
{ "fixedDelay": string, "percentage": integer } |
| Campos | |
|---|---|
fixedDelay |
Especifica un retraso fijo antes de reenviar la solicitud. Una duración en segundos con hasta nueve dígitos decimales, que terminan en “ |
percentage |
Es el porcentaje de tráfico en el que se insertará el retraso. El valor debe estar entre 0 y 100 |
Anulación
Especificación de cómo se anulan las solicitudes de los clientes como parte de la inserción de errores antes de enviarlas a un destino.
| Representación JSON |
|---|
{ "httpStatus": integer, "percentage": integer } |
| Campos | |
|---|---|
httpStatus |
Es el código de estado HTTP que se usa para anular la solicitud. El valor debe ser de entre 200 y 599 (inclusive). |
percentage |
Es el porcentaje de tráfico que se anulará. El valor debe estar entre 0 y 100 |
URLRewrite
Es la especificación para modificar la URL de la solicitud antes de reenviarla al destino.
| Representación JSON |
|---|
{ "pathPrefixRewrite": string, "hostRewrite": string } |
| Campos | |
|---|---|
pathPrefixRewrite |
Antes de reenviar la solicitud al destino seleccionado, la parte coincidente de la ruta de acceso de las solicitudes se reemplaza por este valor. |
hostRewrite |
Antes de reenviar la solicitud al destino seleccionado, el encabezado del host de las solicitudes se reemplaza por este valor. |
RetryPolicy
Son las especificaciones para los reintentos.
| Representación JSON |
|---|
{ "retryConditions": [ string ], "numRetries": integer, "perTryTimeout": string } |
| Campos | |
|---|---|
retryConditions[] |
Especifica una o más condiciones cuando se aplica esta política de reintentos. Los valores válidos son los siguientes: 5xx: El proxy intentará volver a realizar la solicitud si el servicio de destino responde con cualquier código de respuesta 5xx o si el servicio de destino no responde, por ejemplo: desconexión, restablecimiento, tiempo de espera de lectura, falla de conexión y transmisiones rechazadas. gateway-error: Similar a 5xx, pero solo se aplica a los códigos de respuesta 502, 503 y 504. reset: El proxy intentará volver a realizar la solicitud si el servicio de destino no responde (desconexión, restablecimiento o tiempo de espera de lectura). connect-failure: El proxy volverá a intentar conectarse al destino en caso de fallas, por ejemplo, debido a tiempos de espera de conexión. retriable-4xx: El proxy volverá a intentarlo para los códigos de respuesta 4xx recuperables. Actualmente, el único error que se puede reintentar es el 409. refused-stream: El proxy volverá a intentarlo si el destino restablece la transmisión con un código de error REFUSED_STREAM. Este tipo de restablecimiento indica que es seguro volver a intentarlo. |
numRetries |
Especifica la cantidad de reintentos permitidos. Este número debe ser > 0. Si no se especifica, el valor predeterminado es 1. |
perTryTimeout |
Especifica un tiempo de espera distinto de cero por intento de reintento. Una duración en segundos con hasta nueve dígitos decimales, que terminan en “ |
RequestMirrorPolicy
Especifica la política sobre cómo se duplican las solicitudes en un servicio de destino duplicado independiente. El proxy no espera las respuestas del servicio de duplicación. Antes de enviar tráfico al servicio de duplicación, se agrega el sufijo -shadow al encabezado de host/autoridad. Actualmente, no se admite la duplicación para los destinos de Cloud Run.
| Representación JSON |
|---|
{
"destination": {
object ( |
| Campos | |
|---|---|
destination |
Es el destino al que se duplicarán las solicitudes. Se ignorará el peso del destino. |
mirrorPercent |
Es opcional. Es el porcentaje de solicitudes que se duplicarán en el destino deseado. |
CorsPolicy
Es la especificación para permitir solicitudes de origen cruzado del cliente.
| Representación JSON |
|---|
{ "allowOrigins": [ string ], "allowOriginRegexes": [ string ], "allowMethods": [ string ], "allowHeaders": [ string ], "exposeHeaders": [ string ], "maxAge": string, "allowCredentials": boolean, "disabled": boolean } |
| Campos | |
|---|---|
allowOrigins[] |
Especifica la lista de orígenes que podrán realizar solicitudes de CORS. Se permite un origen si coincide con un elemento en allowOrigins o un elemento en allowOriginRegexes. |
allowOriginRegexes[] |
Especifica los patrones de expresiones regulares que coinciden con los orígenes permitidos. Para conocer la gramática de las expresiones regulares, consulta https://github.com/google/re2/wiki/Syntax. |
allowMethods[] |
Especifica el contenido del encabezado Access-Control-Allow-Methods. |
allowHeaders[] |
Especifica el contenido del encabezado Access-Control-Allow-Headers. |
exposeHeaders[] |
Especifica el contenido del encabezado Access-Control-Expose-Headers. |
maxAge |
Especifica cuánto tiempo se puede almacenar en caché el resultado de una solicitud preliminar en segundos. Esto se traduce en el encabezado Access-Control-Max-Age. |
allowCredentials |
En respuesta a una solicitud de comprobación preliminar, si se establece en verdadero, se indica que la solicitud real puede incluir credenciales de usuario. Esto se traduce en el encabezado Access-Control-Allow-Credentials. El valor predeterminado es falso. |
disabled |
Si es verdadero, se inhabilita la política de CORS. El valor predeterminado es falso, lo que indica que la política de CORS está vigente. |
StatefulSessionAffinityPolicy
Es la especificación para la afinidad de sesión con estado basada en cookies en la que el plano de datos proporciona una "cookie de sesión" con el nombre "GSSA" que codifica un host de destino específico, y cada solicitud que contenga esa cookie se dirigirá a ese host, siempre y cuando el host de destino permanezca activo y en buen estado.
La biblioteca de malla sin proxy de gRPC o el proxy de sidecar administrarán la cookie de sesión, pero el código de la aplicación cliente es responsable de copiar la cookie de cada RPC de la sesión a la siguiente.
| Representación JSON |
|---|
{ "cookieTtl": string } |
| Campos | |
|---|---|
cookieTtl |
Obligatorio. Es el valor de TTL de la cookie para el encabezado Set-Cookie que genera el plano de datos. La vida útil de la cookie se puede establecer en un valor de 0 a 86,400 segundos (24 horas) inclusive. Establece este valor en 0s para usar una cookie de sesión y, así, inhabilitar el vencimiento de la cookie. Una duración en segundos con hasta nueve dígitos decimales, que terminan en “ |
HttpDirectResponse
Es el objeto de respuesta HTTP estático que se devolverá.
| Representación JSON |
|---|
{ "status": integer, // Union field |
| Campos | |
|---|---|
status |
Obligatorio. Es el estado que se devolverá como parte de la respuesta HTTP. Debe ser un número entero positivo. |
Campo de unión HttpBody. Es el cuerpo que se devolverá como parte de la respuesta HTTP. HttpBody puede ser solo uno de los parámetros siguientes: |
|
stringBody |
Es opcional. Es el cuerpo de la respuesta como una cadena. La longitud máxima del cuerpo es de 1,024 caracteres. |
bytesBody |
Es opcional. Es el cuerpo de la respuesta como bytes. El tamaño máximo del cuerpo es de 4,096 B. Es una cadena codificada en Base64. |
Métodos |
|
|---|---|
|
Crea una nueva HttpRoute en un proyecto y una ubicación determinados. |
|
Borra una sola HttpRoute. |
|
Obtiene detalles de una sola HttpRoute. |
|
Enumera HttpRoute en una ubicación y un proyecto determinados. |
|
Actualiza los parámetros de una sola HttpRoute. |
|
Permite configurar la política de control de acceso en el recurso especificado. |
|
Permite mostrar los permisos que tiene un emisor para un recurso especificado. |