REST Resource: projects.locations.grpcRoutes

Recurso: GrpcRoute

GrpcRoute es el recurso que define cómo se enruta el tráfico de gRPC enrutado por un recurso Mesh o Gateway.

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

Obligatorio. Nombre del recurso GrpcRoute. Coincide con el patrón projects/*/locations/global/grpcRoutes/<grpc_route_name>

createTime

string (Timestamp format)

Solo de salida. Marca de tiempo de creación del recurso.

Marca de tiempo en formato RFC3339 UTC "Zulu", con una resolución de nanosegundos y hasta nueve dígitos fraccionarios. Ejemplos: "2014-10-02T15:01:23Z" y "2014-10-02T15:01:23.045123456Z".

updateTime

string (Timestamp format)

Solo de salida. Marca de tiempo de la última actualización del recurso.

Marca de tiempo en formato RFC3339 UTC "Zulu", con una resolución de nanosegundos y hasta nueve dígitos fraccionarios. Ejemplos: "2014-10-02T15:01:23Z" y "2014-10-02T15:01:23.045123456Z".

labels

map (key: string, value: string)

Opcional. Conjunto de etiquetas asociadas al recurso GrpcRoute.

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

description

string

Opcional. Descripción de texto libre del recurso. La longitud máxima es de 1024 caracteres.

hostnames[]

string

Obligatorio. Nombres de host de servicio con un puerto opcional para el que esta ruta describe el tráfico.

Formato: [:]

El nombre de host es el nombre de dominio completo de un host de red. Esto coincide con la definición de nombre de host de RFC 1123, con dos excepciones importantes: - No se permiten IPs. - Un nombre de host puede ir precedido de una etiqueta comodín (*.). La etiqueta comodín debe aparecer sola como primera etiqueta.

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

Ten en cuenta que, según RFC1035 y RFC1123, una etiqueta debe estar formada por caracteres alfanuméricos en minúscula o guiones (-), y debe empezar y terminar con un carácter alfanumérico. No se permite ningún otro signo de puntuación.

Las rutas asociadas a una malla o una pasarela deben tener nombres de host únicos. Si intentas adjuntar varias rutas con nombres de host que entren en conflicto, se rechazará la configuración.

Por ejemplo, aunque es aceptable que las rutas de los nombres de host *.foo.bar.com y *.bar.com estén asociadas a la misma ruta, no es posible asociar dos rutas a *.bar.com o a 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 sirve 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 pasarelas a las que se adjunta este GrpcRoute como una de las reglas de enrutamiento para enrutar las solicitudes que sirve la pasarela.

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

rules[]

object (RouteRule)

Obligatorio. Lista de reglas detalladas que definen cómo enrutar el tráfico.

En un solo GrpcRoute, se ejecutará el GrpcRoute.RouteAction asociado al 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. Los matches definen las condiciones que se utilizan para comparar la regla con las solicitudes gRPC entrantes. Cada coincidencia es independiente, es decir, esta regla se aplicará 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. Una regla detallada que define cómo enrutar el tráfico. Este campo es obligatorio.

RouteMatch

Criterios de coincidencia del tráfico. Se considerará que una RouteMatch coincide cuando coincidan todos los campos proporcionados.

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. Método gRPC con el que se establecerán coincidencias. Si este campo está vacío o se omite, se corresponderá 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 se debe buscar el nombre. Si no se especifica ningún valor, se usa el valor predeterminado "EXACT".

grpcService

string

Obligatorio. Nombre del servicio con el que se va a comparar. Si no se especifica, se aplicará a todos los servicios.

grpcMethod

string

Obligatorio. Nombre del método con el que se va a comparar. Si no se especifica, se corresponderá con todos los métodos.

caseSensitive

boolean

Opcional. Especifica que las coincidencias distinguen entre mayúsculas y minúsculas. El valor predeterminado es true. caseSensitive no debe usarse con el tipo REGULAR_EXPRESSION.

Tipo

El tipo de coincidencia.

Enumeraciones
TYPE_UNSPECIFIED No especificado.
EXACT Solo coincidirá con el nombre exacto proporcionado.
REGULAR_EXPRESSION Interpreta grpcMethod y grpcService como expresiones regulares. Se admite la sintaxis RE2.

HeaderMatch

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 se debe comparar 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. Valor del encabezado.

Tipo

El tipo de coincidencia.

Enumeraciones
TYPE_UNSPECIFIED No especificado.
EXACT Solo se mostrarán resultados que coincidan exactamente con el valor proporcionado.
REGULAR_EXPRESSION Coincidirá con las rutas que se ajusten al prefijo especificado por el valor. Se admite la sintaxis 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. 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. La especificación de la inyección de errores introducida en el tráfico para probar la resiliencia de los clientes ante un fallo del servicio de destino. Como parte de la inyecció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, las solicitudes de los clientes se pueden anular en un porcentaje de las solicitudes.

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

timeout

string (Duration format)

Opcional. Especifica el tiempo de espera de la ruta seleccionada. El tiempo de espera se calcula desde el momento en que se ha procesado por completo la solicitud (es decir, el final de la secuencia) hasta que se ha procesado por completo la respuesta. El tiempo de espera incluye todos los reintentos.

Duración en segundos con hasta nueve decimales, que termina con "s". Por ejemplo: "3.5s".

retryPolicy

object (RetryPolicy)

Opcional. Especifica la política de reintento asociada a 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 de inactividad de la ruta seleccionada. El tiempo de espera de inactividad se define como el periodo en el que no se envían ni se reciben bytes en la conexión ascendente o descendente. Si no se establece, el tiempo de espera predeterminado es de 1 hora. Si se asigna el valor 0s, el tiempo de espera se inhabilitará.

Duración en segundos con hasta nueve decimales, que termina con "s". Por ejemplo: "3.5s".

Destino

El destino al que se dirigirá 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 dirigirá el tráfico. destination_type solo puede ser una de las siguientes cosas:
serviceName

string

Obligatorio. La URL de un servicio de destino al que enrutar el tráfico. Debe hacer referencia a un BackendService o a un ServiceDirectoryService.

weight

integer

Opcional. Especifica la proporción de solicitudes reenviadas al backend al que hace referencia el campo serviceName. Se calcula de la siguiente manera: - peso/Suma(pesos de esta lista de destinos). En el caso de los valores distintos de cero, puede haber un valor épsilon con respecto a la proporción exacta definida aquí, en función de 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 especifica un peso para un nombre de servicio, se debe especificar para todos.

Si no se especifica la participación porcentual de todos los servicios, el tráfico se distribuirá en proporciones iguales entre todos ellos.

FaultInjectionPolicy

La especificación de la inyección de errores introducida en el tráfico para probar la resiliencia de los clientes ante un fallo del servicio de destino. Como parte de la inyecció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, las solicitudes de los clientes se pueden anular en un porcentaje de las solicitudes.

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

object (Delay)

Especificación para inyectar latencia en las solicitudes de cliente.

abort

object (Abort)

Especificación para cancelar solicitudes de clientes.

Retraso

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

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

string (Duration format)

Especifica un tiempo de espera fijo antes de reenviar la solicitud.

Duración en segundos con hasta nueve decimales, que termina con "s". Por ejemplo: "3.5s".

percentage

integer

El porcentaje del tráfico en el que se insertará el retraso.

El valor debe estar comprendido entre [0 y 100].

Anular

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

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

integer

El código de estado HTTP usado para cancelar la solicitud.

El valor debe estar comprendido entre 200 y 599, ambos incluidos.

percentage

integer

El porcentaje de tráfico que se va a anular.

El valor debe estar comprendido entre [0 y 100].

RetryPolicy

Especificaciones de los reintentos.

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

string

  • connect-failure: el router volverá a intentar conectarse a los servicios backend si se produce un error, por ejemplo, si se agota el tiempo de espera de la conexión.
  • refused-stream: el router volverá a intentarlo si el servicio backend restablece el flujo con un código de error REFUSED_STREAM. Este tipo de restablecimiento indica que se puede volver a intentar.
  • cancelled: el router volverá a intentar la operación si el código de estado de gRPC del encabezado de respuesta se define como cancelled.
  • Tiempo de espera agotado: el router volverá a intentar la operación si el código de estado de gRPC del encabezado de respuesta es "Tiempo de espera agotado".
  • resource-exhausted: el enrutador volverá a intentarlo si el código de estado de gRPC del encabezado de respuesta se define como resource-exhausted.
  • No disponible: el router volverá a intentarlo si el código de estado de gRPC del encabezado de respuesta se define como no disponible.
numRetries

integer (uint32 format)

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

StatefulSessionAffinityPolicy

Especificación de 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. Cada solicitud que contenga esa cookie se dirigirá a ese host siempre que el host de destino siga activo y en buen estado.

La biblioteca de malla sin proxy de gRPC o el proxy sidecar gestionarán la cookie de sesión, pero el código de la aplicación cliente será el responsable de copiar la cookie de cada RPC de la sesión a la siguiente.

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

string (Duration format)

Obligatorio. El valor de TTL de la cookie del encabezado Set-Cookie generado por el plano de datos. La duración de la cookie puede ser un valor comprendido entre 1 y 86.400 segundos (24 horas), ambos incluidos.

Duración en segundos con hasta nueve decimales, que termina con "s". Por ejemplo: "3.5s".

Métodos

create

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

delete

Elimina un único GrpcRoute.

get

Obtiene los detalles de un solo GrpcRoute.

list

Muestra los GrpcRoutes de un proyecto y una ubicación determinados.

patch

Actualiza los parámetros de un solo GrpcRoute.

setIamPolicy

Aplica la política de control de acceso del recurso especificado.

testIamPermissions

Devuelve los permisos que tiene una sobre el recurso especificado.