- Recurso: GrpcRoute
- RouteRule
- RouteMatch
- MethodMatch
- Tipo
- HeaderMatch
- Tipo
- RouteAction
- Destino
- FaultInjectionPolicy
- Atraso
- Abortar
- RetryPolicy
- StatefulSessionAffinityPolicy
- Métodos
Recurso: GrpcRoute
O GrpcRoute é o recurso que define como o tráfego gRPC roteado por um recurso Mesh ou Gateway é roteado.
Representação JSON |
---|
{
"name": string,
"selfLink": string,
"createTime": string,
"updateTime": string,
"labels": {
string: string,
...
},
"description": string,
"hostnames": [
string
],
"meshes": [
string
],
"gateways": [
string
],
"rules": [
{
object ( |
Campos | |
---|---|
name |
Obrigatório. Nome do recurso GrpcRoute. Ele corresponde ao padrão |
selfLink |
Apenas saída. URL definido pelo servidor deste recurso |
createTime |
Apenas saída. O carimbo de data/hora em que o recurso foi criado. Um carimbo de data/hora no formato RFC3339 UTC "Zulu", com resolução de nanossegundos e até nove dígitos fracionários. Exemplos: |
updateTime |
Apenas saída. O carimbo de data/hora em que o recurso foi atualizado. Um carimbo de data/hora no formato RFC3339 UTC "Zulu", com resolução de nanossegundos e até nove dígitos fracionários. Exemplos: |
labels |
Opcional. Conjunto de tags de rótulo associadas ao recurso GrpcRoute. Um objeto com uma lista de pares |
description |
Opcional. Uma descrição em texto livre do recurso. Comprimento máximo de 1.024 caracteres. |
hostnames[] |
Obrigatório. Nomes de host de serviço com uma porta opcional para a qual esta rota descreve o tráfego. Formato: O nome do host é o nome de domínio totalmente qualificado de um host de rede. Isso corresponde à definição de um nome de host do RFC 1123, com duas exceções importantes: - IPs não são permitidos. - Um nome de host pode ter um prefixo com um identificador curinga ( O nome do host pode ser "preciso", que é um nome de domínio sem o ponto final de um host de rede (por exemplo, De acordo com o RFC1035 e o RFC1123, um identificador precisa consistir de caracteres alfanuméricos minúsculos ou "-", além de começar e terminar com um caractere alfanumérico. Nenhuma outra pontuação é permitida. As rotas associadas a uma rede mesh ou gateway precisam ter nomes de host exclusivos. Se você tentar anexar várias rotas com nomes de host conflitantes, a configuração será rejeitada. Por exemplo, embora seja aceitável que as rotas dos nomes de host Se uma porta for especificada, os clientes gRPC vão precisar usar o URI do canal com a porta para corresponder a essa regra (por exemplo, "xds:///service:123"). Caso contrário, eles vão precisar fornecer o URI sem uma porta (por exemplo, "xds:///service"). |
meshes[] |
Opcional. As malhas definem uma lista de malhas a que a GrpcRoute está anexada, como uma das regras de roteamento para rotear as solicitações atendidas pela malha. Cada referência de malha precisa corresponder ao padrão: |
gateways[] |
Opcional. Gateways define uma lista de gateways a que o GrpcRoute está anexado, como uma das regras de roteamento para rotear as solicitações enviadas pelo gateway. Cada referência de gateway precisa corresponder ao padrão: |
rules[] |
Obrigatório. Uma lista de regras detalhadas que definem como rotear o tráfego. Em uma única GrpcRoute, a GrpcRoute.RouteAction associada à primeira GrpcRoute.RouteRule correspondente será executada. É preciso fornecer pelo menos uma regra. |
RouteRule
Descreve como rotear o tráfego.
Representação JSON |
---|
{ "matches": [ { object ( |
Campos | |
---|---|
matches[] |
Opcional. As correspondências definem as condições usadas para corresponder a regra às solicitações gRPC recebidas. Cada correspondência é independente. Ou seja, essa regra será atendida se QUALQUER uma das correspondências for atendida. Se nenhum campo de correspondências for especificado, essa regra vai corresponder ao tráfego de forma incondicional. |
action |
Obrigatório. Uma regra detalhada que define como rotear o tráfego. Este campo é obrigatório. |
RouteMatch
Critérios para correspondência de tráfego. Uma RouteMatch será considerada uma correspondência quando todos os campos fornecidos corresponderem.
Representação JSON |
---|
{ "headers": [ { object ( |
Campos | |
---|---|
headers[] |
Opcional. Especifica uma coleção de cabeçalhos para correspondência. |
method |
Opcional. Um método gRPC para correspondência. Se esse campo estiver vazio ou omitido, vai corresponder a todos os métodos. |
MethodMatch
Especifica uma correspondência com um método.
Representação JSON |
---|
{
"type": enum ( |
Campos | |
---|---|
type |
Opcional. Especifica como fazer a correspondência com o nome. Se não for especificado, um valor padrão de "EXACT" será usado. |
grpcService |
Obrigatório. Nome do serviço para correspondência. Se não for especificado, corresponderá a todos os serviços. |
grpcMethod |
Obrigatório. Nome do método a ser comparado. Se não for especificado, ele vai corresponder a todos os métodos. |
caseSensitive |
Opcional. Especifica que as correspondências diferenciam maiúsculas de minúsculas. O valor padrão é "true". A caseSensitive não pode ser usada com um tipo de REGULAR_EXPRESSION. |
Tipo
O tipo de correspondência.
Enums | |
---|---|
TYPE_UNSPECIFIED |
Não especificado. |
EXACT |
Só vai corresponder ao nome exato fornecido. |
REGULAR_EXPRESSION |
Interpretará grpcMethod e grpcService como regexes. A sintaxe RE2 é compatível. |
HeaderMatch
Uma correspondência com uma coleção de cabeçalhos.
Representação JSON |
---|
{
"type": enum ( |
Campos | |
---|---|
type |
Opcional. Especifica como corresponder ao valor do cabeçalho. Se não for especificado, um valor padrão de EXATO será usado. |
key |
Obrigatório. A chave do cabeçalho. |
value |
Obrigatório. O valor do cabeçalho. |
Tipo
O tipo de correspondência.
Enums | |
---|---|
TYPE_UNSPECIFIED |
Não especificado. |
EXACT |
Só corresponde ao valor exato fornecido. |
REGULAR_EXPRESSION |
Vai corresponder a caminhos que se conformam ao prefixo especificado por valor. A sintaxe RE2 é compatível. |
RouteAction
Especifica como rotear o tráfego correspondente.
Representação JSON |
---|
{ "destinations": [ { object ( |
Campos | |
---|---|
destinations[] |
Opcional. Os serviços de destino para os quais o tráfego precisa ser encaminhado. Se vários destinos forem especificados, o tráfego será dividido entre os serviços de back-end de acordo com o campo de peso desses destinos. |
faultInjectionPolicy |
Opcional. A especificação de injeção de falhas introduzida no tráfego para testar a resiliência dos clientes à falha do serviço de destino. Como parte da injeção de falhas, quando os clientes enviam solicitações para um destino, é possível introduzir atrasos em uma porcentagem de solicitações antes de enviar essas solicitações para o serviço de destino. Da mesma forma, as solicitações de clientes podem ser abortadas por uma porcentagem de solicitações. O tempo limite e a retryPolicy serão ignorados por clientes configurados com uma faultInjectionPolicy. |
timeout |
Opcional. Especifica o tempo limite da rota selecionada. O tempo limite é calculado a partir do momento em que a solicitação é totalmente processada (ou seja, o fim da transmissão) até que a resposta seja totalmente processada. O tempo limite inclui todas as novas tentativas. Duração em segundos com até nove dígitos fracionários, terminando em " |
retryPolicy |
Opcional. Especifica a política de nova tentativa associada a essa rota. |
statefulSessionAffinity |
Opcional. Especifica afinidade da sessão com estado baseada em cookies. |
idleTimeout |
Opcional. Especifica o tempo limite de inatividade da rota selecionada. O tempo limite de inatividade é definido como o período em que não há bytes enviados ou recebidos na conexão upstream ou downstream. Se não for definido, o tempo limite de inatividade padrão será de 1 hora. Se definido como 0s, o tempo limite será desativado. Duração em segundos com até nove dígitos fracionários, terminando em " |
Destino
O destino para onde o tráfego será roteado.
Representação JSON |
---|
{ // Union field |
Campos | |
---|---|
Campo de união destination_type . Especifica o tipo de destino para onde o tráfego será roteado. destination_type pode ser apenas de um dos tipos a seguir: |
|
serviceName |
Obrigatório. O URL de um serviço de destino para onde o tráfego será roteado. Precisa se referir a um BackendService ou ServiceDirectoryService. |
weight |
Opcional. Especifica a proporção de solicitações encaminhadas ao back-end referenciado pelo campo serviceName. Isso é calculado como: - peso/soma(pesos na lista de destinos). Para valores diferentes de zero, pode haver um valor epsilon da proporção exata definida aqui, dependendo da precisão com que uma implementação é compatível. Se apenas um serviceName for especificado e tiver um peso maior que 0, 100% do tráfego será encaminhado para esse back-end. Se os pesos for especificados para um nome de serviço, eles precisarão ser especificados para todos. Se os pesos não forem especificados para todos os serviços, o tráfego será distribuído em proporções iguais para todos eles. |
FaultInjectionPolicy
A especificação de injeção de falhas introduzida no tráfego para testar a resiliência dos clientes à falha do serviço de destino. Como parte da injeção de falhas, quando os clientes enviam solicitações para um destino, é possível introduzir atrasos em uma porcentagem de solicitações antes de enviar essas solicitações para o serviço de destino. Da mesma forma, as solicitações de clientes podem ser abortadas por uma porcentagem de solicitações.
Representação JSON |
---|
{ "delay": { object ( |
Campos | |
---|---|
delay |
A especificação para injetar atraso nas solicitações do cliente. |
abort |
A especificação para abortar as solicitações do cliente. |
Atraso
Especificação de como as solicitações do cliente são atrasadas como parte da injeção de falhas antes de serem enviadas para um destino.
Representação JSON |
---|
{ "fixedDelay": string, "percentage": integer } |
Campos | |
---|---|
fixedDelay |
Especifique um atraso fixo antes de encaminhar a solicitação. Duração em segundos com até nove dígitos fracionários, terminando em " |
percentage |
A porcentagem do tráfego em que o atraso será injetado. O valor precisa estar entre [0, 100] |
Cancelar
Especificação de como as solicitações do cliente são abortadas como parte da injeção de falhas antes de serem enviadas para um destino.
Representação JSON |
---|
{ "httpStatus": integer, "percentage": integer } |
Campos | |
---|---|
httpStatus |
O código de status HTTP usado para abortar a solicitação. O valor precisa estar entre 200 e 599. |
percentage |
A porcentagem de tráfego que será abortado. O valor precisa estar entre [0, 100] |
RetryPolicy
As especificações para novas tentativas.
Representação JSON |
---|
{ "retryConditions": [ string ], "numRetries": integer } |
Campos | |
---|---|
retryConditions[] |
|
numRetries |
Especifica o número permitido de novas tentativas. Esse número precisa ser maior que 0. Se não for especificado, o padrão será 1. |
StatefulSessionAffinityPolicy
A especificação para afinidade da sessão com estado baseada em cookies, em que o plano de dados fornece um "cookie de sessão" com o nome "GSSA", que codifica um host de destino específico, e cada solicitação que contém esse cookie é direcionada a esse host enquanto ele permanecer ativo e saudável.
A biblioteca de malha sem proxy do gRPC ou o proxy sidecar vai gerenciar o cookie de sessão, mas o código do aplicativo cliente é responsável por copiar o cookie de cada RPC na sessão para a próxima.
Representação JSON |
---|
{ "cookieTtl": string } |
Campos | |
---|---|
cookieTtl |
Obrigatório. O valor de TTL do cookie para o cabeçalho Set-Cookie gerado pelo plano de dados. A vida útil do cookie pode ser definida como um valor de 1 a 86.400 segundos (24 horas). Duração em segundos com até nove dígitos fracionários, terminando em " |
Métodos |
|
---|---|
|
Cria uma nova GrpcRoute em um determinado projeto e local. |
|
Exclui uma única GrpcRoute. |
|
Recebe detalhes de uma única GrpcRoute. |
|
Lista GrpcRoutes em um determinado projeto e local. |
|
Atualiza os parâmetros de uma única GrpcRoute. |