REST Resource: projects.locations.grpcRoutes

Recurso: GrpcRoute

GrpcRoute es el recurso que define cómo se enruta el tráfico de gRPC que enruta un recurso de malla o de puerta de enlace.

Representación JSON
{
  "name": string,
  "selfLink": string,
  "createTime": string,
  "updateTime": string,
  "labels": {
    string: string,
    ...
  },
  "description": string,
  "hostnames": [
    string
  ],
  "meshes": [
    string
  ],
  "gateways": [
    string
  ],
  "rules": [
    {
      object (RouteRule)
    }
  ]
}
Campos
name

string

Identificador. Es el nombre del recurso GrpcRoute. Coincide con el patrón projects/*/locations/global/grpcRoutes/<grpc_route_name>

createTime

string (Timestamp format)

Solo salida. Marca de tiempo cuando se creó el recurso.

Usa el RFC 3339, en el que el resultado generado siempre se normaliza según la zona horaria Z y usa 0, 3, 6 o 9 dígitos fraccionarios. También se aceptan otras compensaciones que no sean "Z". Ejemplos: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" o "2014-10-02T15:01:23+05:30".

updateTime

string (Timestamp format)

Solo salida. La marca de tiempo cuando se creó el recurso.

Usa el RFC 3339, en el que el resultado generado siempre se normaliza según la zona horaria Z y usa 0, 3, 6 o 9 dígitos fraccionarios. También se aceptan otras compensaciones que no sean "Z". Ejemplos: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" o "2014-10-02T15:01:23+05:30".

labels

map (key: string, value: string)

Opcional. Es un conjunto de etiquetas asociadas con el recurso GrpcRoute.

Un objeto que contiene una lista de pares "key": value. Ejemplo: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

description

string

Opcional. Es una descripción de texto libre del recurso. La longitud máxima es de 1,024 caracteres.

hostnames[]

string

Obligatorio. Son los nombres de host del servicio con un puerto opcional para el que esta ruta describe el tráfico.

Formato: [:]

El nombre de host es el nombre de dominio completamente calificado de un host de red. Esto coincide con la definición de RFC 1123 de un nombre de host con 2 excepciones notables: - No se permiten IPs. - Un nombre de host puede tener como prefijo una etiqueta comodín (*.). La etiqueta comodín debe aparecer por sí sola como la primera etiqueta.

El nombre de host puede ser "preciso", que es un nombre de dominio sin el punto final de un host de red (p.ej., foo.example.com), o "comodín", que es un nombre de dominio con el prefijo de una sola etiqueta de comodín (p.ej., *.example.com).

Ten en cuenta que, según RFC1035 y RFC1123, una etiqueta debe constar de caracteres alfanuméricos en minúscula o "-", y debe comenzar y terminar con un carácter alfanumérico. No se permite ningún otro signo de puntuación.

Las rutas asociadas con una malla o una puerta 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 *.foo.bar.com y *.bar.com se asocien con la misma ruta, no es posible asociar dos rutas con *.bar.com o con bar.com.

Si se especifica un puerto, los clientes de gRPC deben usar el URI del canal con el puerto para que coincida con esta regla (es decir, "xds:///service:123"); de lo contrario, deben proporcionar el URI sin un puerto (es decir, "xds:///service").

meshes[]

string

Opcional. Meshes define una lista de mallas a las que se adjunta este GrpcRoute, 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 projects/*/locations/global/meshes/<mesh_name>.

gateways[]

string

Opcional. Gateways define una lista de puertas de enlace a las que se adjunta este GrpcRoute, como una de las reglas de enrutamiento para enrutar las solicitudes que atiende la puerta de enlace.

Cada referencia de puerta de enlace debe coincidir con el patrón projects/*/locations/global/gateways/<gateway_name>.

rules[]

object (RouteRule)

Obligatorio. Es una lista de reglas detalladas que definen cómo enrutar el tráfico.

Dentro de una sola GrpcRoute, se ejecutará el GrpcRoute.RouteAction asociado con el primer GrpcRoute.RouteRule coincidente. Se debe proporcionar al menos una regla.

RouteRule

Describe cómo enrutar el tráfico.

Representación JSON
{
  "matches": [
    {
      object (RouteMatch)
    }
  ],
  "action": {
    object (RouteAction)
  }
}
Campos
matches[]

object (RouteMatch)

Opcional. Las coincidencias definen las condiciones que se usan para hacer coincidir la regla con las solicitudes de gRPC entrantes. Cada coincidencia es independiente, es decir, esta regla coincidirá 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.

action

object (RouteAction)

Obligatorio. Es una regla detallada que define cómo enrutar el tráfico. Este campo es obligatorio.

RouteMatch

Son los criterios para la correlación del tráfico. Se considerará que un objeto RouteMatch coincide cuando todos los campos proporcionados coincidan.

Representación JSON
{
  "headers": [
    {
      object (HeaderMatch)
    }
  ],
  "method": {
    object (MethodMatch)
  }
}
Campos
headers[]

object (HeaderMatch)

Opcional. Especifica una colección de encabezados que deben coincidir.

method

object (MethodMatch)

Opcional. Es un método de gRPC con el que se debe establecer la coincidencia. Si este campo está vacío o se omite, coincidirá con todos los métodos.

MethodMatch

Especifica una coincidencia con un método.

Representación JSON
{
  "type": enum (Type),
  "grpcService": string,
  "grpcMethod": string,
  "caseSensitive": boolean
}
Campos
type

enum (Type)

Opcional. Especifica cómo hacer coincidir el nombre. Si no se especifica, se usa el valor predeterminado "EXACT".

grpcService

string

Obligatorio. Nombre del servicio con el que se debe comparar. Si no se especifica, coincidirá con todos los servicios.

grpcMethod

string

Obligatorio. Nombre del método con el que se establecerá la coincidencia. Si no se especifica, coincidirá con todos los métodos.

caseSensitive

boolean

Opcional. Especifica que las coincidencias distinguen mayúsculas de minúsculas. El valor predeterminado es verdadero. No se debe usar caseSensitive con un tipo de REGULAR_EXPRESSION.

Tipo

Es el tipo de coincidencia.

Enums
TYPE_UNSPECIFIED Sin especificar.
EXACT Solo coincidirá con el nombre exacto proporcionado.
REGULAR_EXPRESSION Se interpretarán grpcMethod y grpcService como regex. Se admite la sintaxis de RE2.

HeaderMatch

Es una coincidencia con una colección de encabezados.

Representación JSON
{
  "type": enum (Type),
  "key": string,
  "value": string
}
Campos
type

enum (Type)

Opcional. Especifica cómo hacer coincidir el valor del encabezado. Si no se especifica, se usa el valor predeterminado EXACT.

key

string

Obligatorio. Es la clave del encabezado.

value

string

Obligatorio. Es el valor del encabezado.

Tipo

Es el tipo de coincidencia.

Enums
TYPE_UNSPECIFIED Sin especificar.
EXACT Solo coincidirá con el valor exacto proporcionado.
REGULAR_EXPRESSION Coincidirá con las rutas que se ajusten al prefijo especificado por el valor. Se admite la sintaxis de RE2.

RouteAction

Especifica cómo enrutar el tráfico coincidente.

Representación JSON
{
  "destinations": [
    {
      object (Destination)
    }
  ],
  "faultInjectionPolicy": {
    object (FaultInjectionPolicy)
  },
  "timeout": string,
  "retryPolicy": {
    object (RetryPolicy)
  },
  "statefulSessionAffinity": {
    object (StatefulSessionAffinityPolicy)
  },
  "idleTimeout": string
}
Campos
destinations[]

object (Destination)

Opcional. Son los servicios de destino a los que se debe reenviar el tráfico. Si se especifican varios destinos, el tráfico se dividirá entre los servicios de backend según el campo de peso de estos destinos.

faultInjectionPolicy

object (FaultInjectionPolicy)

Opcional. 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 la falla del servicio de destino. Como parte de la inserción de errores, cuando los clientes envían solicitudes a un destino, se pueden introducir retrasos en un porcentaje de las solicitudes antes de enviarlas al servicio de destino. Del mismo modo, se puede anular un porcentaje de las solicitudes de los clientes.

Los clientes configurados con una faultInjectionPolicy ignorarán timeout y retryPolicy.

timeout

string (Duration format)

Opcional. 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 “s”. Ejemplo: "3.5s".

retryPolicy

object (RetryPolicy)

Opcional. Especifica la política de reintentos asociada con esta ruta.

statefulSessionAffinity

object (StatefulSessionAffinityPolicy)

Opcional. Especifica la afinidad de sesión con estado basada en cookies.

idleTimeout

string (Duration format)

Opcional. Especifica el tiempo de espera por inactividad para la ruta seleccionada. El tiempo de espera por 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 configura, el tiempo de espera 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 “s”. Ejemplo: "3.5s".

Destino

Es el destino al que se enrutará el tráfico.

Representación JSON
{

  // Union field destination_type can be only one of the following:
  "serviceName": string
  // End of list of possible types for union field destination_type.
  "weight": integer
}
Campos
Campo de unión destination_type. Especifica el tipo de destino al que se enrutará el tráfico. destination_type puede ser solo uno de los siguientes:
serviceName

string

Obligatorio. Es la URL de un servicio de destino al que se debe dirigir el tráfico. Debe hacer referencia a un BackendService o a un ServiceDirectoryService.

weight

integer

Opcional. 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). Para los valores distintos de cero, puede haber un cierto valor de épsilon a partir 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 superior a 0, el 100% del tráfico se reenvía a ese backend.

Si se especifican pesos para algún nombre de servicio, se deben especificar para todos.

Si no se especifican pesos para todos los servicios, el tráfico se distribuye en proporciones iguales entre todos ellos.

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 la falla del servicio de destino. Como parte de la inserción de errores, cuando los clientes envían solicitudes a un destino, se pueden introducir retrasos en un porcentaje de las solicitudes antes de enviarlas al servicio de destino. Del mismo modo, se puede anular un porcentaje de las solicitudes de los clientes.

Representación JSON
{
  "delay": {
    object (Delay)
  },
  "abort": {
    object (Abort)
  }
}
Campos
delay

object (Delay)

Es la especificación para inyectar retrasos en las solicitudes del cliente.

abort

object (Abort)

Es la especificación para anular las solicitudes del cliente.

Retraso

Especificación de cómo se retrasan las solicitudes del cliente como parte de la inyección de fallas antes de enviarse a un destino.

Representación JSON
{
  "fixedDelay": string,
  "percentage": integer
}
Campos
fixedDelay

string (Duration format)

Especifica una demora fija antes de reenviar la solicitud.

Una duración en segundos con hasta nueve dígitos decimales, que terminan en “s”. Ejemplo: "3.5s".

percentage

integer

Es el porcentaje de tráfico en el que se insertará la demora.

El valor debe estar entre [0, 100].

Anular

Especificación de cómo se anulan las solicitudes del cliente como parte de la inyección de fallas antes de enviarse a un destino.

Representación JSON
{
  "httpStatus": integer,
  "percentage": integer
}
Campos
httpStatus

integer

Es el código de estado HTTP que se usa para anular la solicitud.

El valor debe estar entre 200 y 599, inclusive.

percentage

integer

Es el porcentaje de tráfico que se anulará.

El valor debe estar entre [0, 100].

RetryPolicy

Son las especificaciones para los reintentos. Especifica una o más condiciones para las que se aplica esta regla de reintento. Estos son los valores válidos:

Representación JSON
{
  "retryConditions": [
    string
  ],
  "numRetries": integer
}
Campos
retryConditions[]

string

  • connect-failure: El router volverá a intentar conectarse a los servicios de backend si se producen errores, por ejemplo, debido a tiempos de espera de conexión.
  • refused-stream: El router volverá a intentarlo si el servicio de backend restablece la transmisión con un código de error REFUSED_STREAM. Este tipo de restablecimiento indica que es seguro volver a intentarlo.
  • cancelled: El router volverá a intentarlo si el código de estado de gRPC en el encabezado de la respuesta se establece como cancelled.
  • deadline-exceeded: El enrutador volverá a intentar la operación si el código de estado de gRPC en el encabezado de respuesta se establece en deadline-exceeded.
  • resource-exhausted: El router volverá a intentarlo si el código de estado de gRPC en el encabezado de respuesta se establece en resource-exhausted.
  • unavailable: El router volverá a intentarlo si el código de estado de gRPC en el encabezado de respuesta se establece como unavailable.
numRetries

integer (uint32 format)

Especifica la cantidad permitida de reintentos. Este número debe ser mayor que 0. Si no se especifica, el valor predeterminado es 1.

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 que 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 será responsable de copiar la cookie de cada RPC en la sesión a la siguiente.

Representación JSON
{
  "cookieTtl": string
}
Campos
cookieTtl

string (Duration format)

Obligatorio. Es el valor del 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 1 a 86,400 segundos (24 horas) inclusive.

Una duración en segundos con hasta nueve dígitos decimales, que terminan en “s”. Ejemplo: "3.5s".

Métodos

create

Crea una nueva GrpcRoute en un proyecto y una ubicación determinados.

delete

Borra una sola GrpcRoute.

get

Obtiene los detalles de una sola GrpcRoute.

list

Enumera objetos GrpcRoute en una ubicación y un proyecto determinados.

patch

Actualiza los parámetros de un solo GrpcRoute.

setIamPolicy

Permite configurar la política de control de acceso en el recurso especificado.

testIamPermissions

Permite mostrar los permisos que tiene un emisor para un recurso especificado.