REST Resource: projects.locations.grpcRoutes

Ressource : GrpcRoute

GrpcRoute est la ressource qui définit la manière dont le trafic gRPC acheminé par une ressource Mesh ou Gateway est routé.

Représentation JSON
{
  "name": string,
  "selfLink": string,
  "createTime": string,
  "updateTime": string,
  "labels": {
    string: string,
    ...
  },
  "description": string,
  "hostnames": [
    string
  ],
  "meshes": [
    string
  ],
  "gateways": [
    string
  ],
  "rules": [
    {
      object (RouteRule)
    }
  ]
}
Champs
name

string

Identifiant. Nom de la ressource GrpcRoute. Il correspond au modèle projects/*/locations/global/grpcRoutes/<grpc_route_name>

createTime

string (Timestamp format)

Uniquement en sortie. Code temporel de la création de la ressource.

Utilise la norme RFC 3339, où le résultat généré est toujours normalisé avec le suffixe Z et utilise 0, 3, 6 ou 9 chiffres décimaux. Les décalages autres que "Z" sont également acceptés. Exemples : "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" ou "2014-10-02T15:01:23+05:30".

updateTime

string (Timestamp format)

Uniquement en sortie. Code temporel de la mise à jour de la ressource.

Utilise la norme RFC 3339, où le résultat généré est toujours normalisé avec le suffixe Z et utilise 0, 3, 6 ou 9 chiffres décimaux. Les décalages autres que "Z" sont également acceptés. Exemples : "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" ou "2014-10-02T15:01:23+05:30".

labels

map (key: string, value: string)

Facultatif. Ensemble de tags de libellé associés à la ressource GrpcRoute.

Objet contenant une liste de paires "key": value. Exemple : { "name": "wrench", "mass": "1.3kg", "count": "3" }.

description

string

Facultatif. Description en texte libre de la ressource. Longueur maximale : 1 024 caractères.

hostnames[]

string

Obligatoire. Noms d'hôte de service avec un port facultatif pour lequel cet itinéraire décrit le trafic.

Format : [:]

Le nom d'hôte est le nom de domaine complet d'un hôte réseau. Cela correspond à la définition RFC 1123 d'un nom d'hôte, à deux exceptions notables : les adresses IP ne sont pas autorisées. - Un nom d'hôte peut être précédé d'une étiquette générique (*.). L'étiquette générique doit apparaître seule en tant que première étiquette.

Le nom d'hôte peut être "précis", c'est-à-dire un nom de domaine sans le point final d'un hôte réseau (par exemple, foo.example.com), ou "générique", c'est-à-dire un nom de domaine préfixé d'un seul libellé générique (par exemple, *.example.com).

Notez que, conformément aux RFC1035 et RFC1123, un libellé doit être composé de caractères alphanumériques minuscules ou de "-", et doit commencer et se terminer par un caractère alphanumérique. Aucun autre signe de ponctuation n'est autorisé.

Les routes associées à un maillage ou à une passerelle doivent avoir des noms d'hôte uniques. Si vous tentez d'associer plusieurs routes avec des noms d'hôte en conflit, la configuration sera refusée.

Par exemple, il est acceptable que les routes pour les noms d'hôte *.foo.bar.com et *.bar.com soient associées à la même route, mais il n'est pas possible d'associer deux routes à *.bar.com ou à bar.com.

Si un port est spécifié, les clients gRPC doivent utiliser l'URI du canal avec le port pour correspondre à cette règle (par exemple, "xds:///service:123"). Sinon, ils doivent fournir l'URI sans port (par exemple, "xds:///service").

meshes[]

string

Facultatif. "meshes" définit une liste de mailles auxquelles cette GrpcRoute est associée, en tant que l'une des règles de routage pour acheminer les requêtes traitées par la maille.

Chaque référence de maillage doit correspondre au modèle suivant : projects/*/locations/global/meshes/<mesh_name>

gateways[]

string

Facultatif. "Gateways" définit la liste des passerelles auxquelles cette GrpcRoute est associée, en tant que l'une des règles de routage permettant de router les requêtes traitées par la passerelle.

Chaque référence de passerelle doit correspondre au modèle suivant : projects/*/locations/global/gateways/<gateway_name>

rules[]

object (RouteRule)

Obligatoire. Liste de règles détaillées définissant comment router le trafic.

Dans une même GrpcRoute, l'action GrpcRoute.RouteAction associée à la première GrpcRoute.RouteRule correspondante sera exécutée. Vous devez fournir au moins une règle.

RouteRule

Décrit comment acheminer le trafic.

Représentation JSON
{
  "matches": [
    {
      object (RouteMatch)
    }
  ],
  "action": {
    object (RouteAction)
  }
}
Champs
matches[]

object (RouteMatch)

Facultatif. Les correspondances définissent les conditions utilisées pour faire correspondre la règle aux requêtes gRPC entrantes. Chaque correspondance est indépendante. En d'autres termes, cette règle sera mise en correspondance si l'UNE QUELCONQUE des correspondances est satisfaite. Si aucun champ de correspondance n'est spécifié, cette règle correspondra inconditionnellement au trafic.

action

object (RouteAction)

Obligatoire. Règle détaillée définissant comment acheminer le trafic. Ce champ est obligatoire.

RouteMatch

Critères de correspondance du trafic. Une RouteMatch est considérée comme une correspondance lorsque tous les champs fournis correspondent.

Représentation JSON
{
  "headers": [
    {
      object (HeaderMatch)
    }
  ],
  "method": {
    object (MethodMatch)
  }
}
Champs
headers[]

object (HeaderMatch)

Facultatif. Spécifie une collection d'en-têtes à faire correspondre.

method

object (MethodMatch)

Facultatif. Méthode gRPC à mettre en correspondance. Si ce champ est vide ou omis, il correspond à toutes les méthodes.

MethodMatch

Spécifie une correspondance avec une méthode.

Représentation JSON
{
  "type": enum (Type),
  "grpcService": string,
  "grpcMethod": string,
  "caseSensitive": boolean
}
Champs
type

enum (Type)

Facultatif. Spécifie le nom à mettre en correspondance. Si aucune valeur n'est spécifiée, la valeur par défaut "EXACT" est utilisée.

grpcService

string

Obligatoire. Nom du service avec lequel établir une correspondance. S'il n'est pas spécifié, la correspondance est effectuée avec tous les services.

grpcMethod

string

Obligatoire. Nom de la méthode à mettre en correspondance. Si aucune valeur n'est spécifiée, toutes les méthodes sont mises en correspondance.

caseSensitive

boolean

Facultatif. Indique que les correspondances sont sensibles à la casse. La valeur par défaut est "true". caseSensitive ne doit pas être utilisé avec un type REGULAR_EXPRESSION.

Type

Type de correspondance.

Énumérations
TYPE_UNSPECIFIED Non spécifié.
EXACT Ne correspond qu'au nom exact fourni.
REGULAR_EXPRESSION Interprète grpcMethod et grpcService comme des expressions régulières. La syntaxe RE2 est acceptée.

HeaderMatch

Correspondance avec une collection d'en-têtes.

Représentation JSON
{
  "type": enum (Type),
  "key": string,
  "value": string
}
Champs
type

enum (Type)

Facultatif. Spécifie une correspondance avec la valeur de l'en-tête. Si aucune valeur n'est spécifiée, la valeur par défaut EXACT est utilisée.

key

string

Obligatoire. Clé de l'en-tête.

value

string

Obligatoire. Valeur de l'en-tête.

Type

Type de correspondance.

Énumérations
TYPE_UNSPECIFIED Non spécifié.
EXACT La valeur exacte fournie sera la seule à correspondre.
REGULAR_EXPRESSION Correspond aux chemins d'accès conformes au préfixe spécifié par la valeur. La syntaxe RE2 est acceptée.

RouteAction

Indique comment acheminer le trafic correspondant.

Représentation JSON
{
  "destinations": [
    {
      object (Destination)
    }
  ],
  "faultInjectionPolicy": {
    object (FaultInjectionPolicy)
  },
  "timeout": string,
  "retryPolicy": {
    object (RetryPolicy)
  },
  "statefulSessionAffinity": {
    object (StatefulSessionAffinityPolicy)
  },
  "idleTimeout": string
}
Champs
destinations[]

object (Destination)

Facultatif. Services de destination vers lesquels le trafic doit être transféré. Si plusieurs destinations sont spécifiées, le trafic sera réparti entre les services de backend en fonction du champ de pondération de ces destinations.

faultInjectionPolicy

object (FaultInjectionPolicy)

Facultatif. Spécification de l'injection de pannes dans le trafic pour tester la résilience des clients en cas de défaillance du service de destination. Dans le cadre de l'injection de pannes, lorsque les clients envoient des requêtes à une destination, des retards peuvent être introduits sur un pourcentage de requêtes avant de les envoyer au service de destination. De même, les requêtes des clients peuvent être abandonnées pour un pourcentage de requêtes.

timeout et retryPolicy seront ignorés par les clients configurés avec une faultInjectionPolicy.

timeout

string (Duration format)

Facultatif. Indique le délai avant expiration pour la route sélectionnée. Le délai avant expiration est calculé à partir du moment où la requête a été entièrement traitée (c'est-à-dire la fin du flux) et jusqu'à ce que la réponse ait été entièrement traitée. Le délai avant expiration inclut l'ensemble des nouvelles tentatives.

Durée en secondes avec neuf chiffres au maximum après la virgule et se terminant par "s". Exemple : "3.5s"

retryPolicy

object (RetryPolicy)

Facultatif. Spécifie la stratégie de nouvelle tentative associée à cet itinéraire.

statefulSessionAffinity

object (StatefulSessionAffinityPolicy)

Facultatif. Spécifie l'affinité de session avec état basée sur les cookies.

idleTimeout

string (Duration format)

Facultatif. Indique le délai d'inactivité pour la route sélectionnée. Le délai d'inactivité est défini comme la période pendant laquelle aucun octet n'est envoyé ni reçu sur la connexion en amont ou en aval. Si ce paramètre n'est pas défini, le délai d'inactivité par défaut est d'une heure. Si la valeur est définie sur 0 s, le délai avant expiration est désactivé.

Durée en secondes avec neuf chiffres au maximum après la virgule et se terminant par "s". Exemple : "3.5s"

Destination

Destination vers laquelle le trafic sera acheminé.

Représentation 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
}
Champs
Champ d'union destination_type. Spécifie le type de destination vers laquelle le trafic sera acheminé. destination_type ne peut être qu'un des éléments suivants :
serviceName

string

Obligatoire. URL d'un service de destination vers lequel acheminer le trafic. Doit faire référence à un BackendService ou à un ServiceDirectoryService.

weight

integer

Facultatif. Spécifie la proportion de requêtes transférées au backend référencé par le champ "serviceName". Il est calculé comme suit : - weight/Sum(weights in this destination list). Pour les valeurs non nulles, il peut y avoir un epsilon par rapport à la proportion exacte définie ici, en fonction de la précision prise en charge par une implémentation.

Si un seul serviceName est spécifié et que sa pondération est supérieure à 0, 100 % du trafic est transféré vers ce backend.

Si des pondérations sont spécifiées pour un nom de service, elles doivent l'être pour tous les noms de service.

Si aucune pondération n'est spécifiée pour tous les services, le trafic est réparti de manière égale entre eux.

FaultInjectionPolicy

Spécification de l'injection de pannes dans le trafic pour tester la résilience des clients en cas de défaillance du service de destination. Dans le cadre de l'injection de pannes, lorsque les clients envoient des requêtes à une destination, des retards peuvent être introduits sur un pourcentage de requêtes avant de les envoyer au service de destination. De même, les requêtes des clients peuvent être abandonnées pour un pourcentage de requêtes.

Représentation JSON
{
  "delay": {
    object (Delay)
  },
  "abort": {
    object (Abort)
  }
}
Champs
delay

object (Delay)

Spécification pour l'injection de retard dans les requêtes client.

abort

object (Abort)

Spécification pour l'abandon des requêtes client.

Délai

Spécification du délai appliqué aux requêtes client dans le cadre de l'injection de défaillances avant leur envoi à une destination.

Représentation JSON
{
  "fixedDelay": string,
  "percentage": integer
}
Champs
fixedDelay

string (Duration format)

Spécifiez un délai fixe avant de transférer la requête.

Durée en secondes avec neuf chiffres au maximum après la virgule et se terminant par "s". Exemple : "3.5s"

percentage

integer

Pourcentage du trafic sur lequel le délai sera injecté.

La valeur doit être comprise entre 0 et 100

Annuler

Spécification de la manière dont les requêtes client sont abandonnées dans le cadre de l'injection de défaillances avant d'être envoyées à une destination.

Représentation JSON
{
  "httpStatus": integer,
  "percentage": integer
}
Champs
httpStatus

integer

Code d'état HTTP utilisé pour annuler la requête.

La valeur doit être comprise entre 200 et 599 inclus.

percentage

integer

Pourcentage du trafic qui sera abandonné.

La valeur doit être comprise entre 0 et 100

RetryPolicy

Spécifications pour les nouvelles tentatives. Spécifie une ou plusieurs conditions auxquelles s'applique cette règle de nouvelle tentative. Les valeurs possibles sont les suivantes :

Représentation JSON
{
  "retryConditions": [
    string
  ],
  "numRetries": integer
}
Champs
retryConditions[]

string

  • connect-failure : le routeur réessaie en cas d'échec de la connexion aux services de backend, par exemple en raison de délais d'attente de connexion.
  • refused-stream : le routeur réessaie si le service de backend réinitialise le flux avec un code d'erreur REFUSED_STREAM. Ce type de réinitialisation indique qu'il est possible de réessayer.
  • annulé : le routeur réessaiera si le code d'état gRPC dans l'en-tête de réponse est défini sur "annulé".
  • deadline-exceeded : le routeur effectue une nouvelle tentative si le code d'état gRPC dans l'en-tête de réponse est défini sur "deadline-exceeded".
  • resource-exhausted : le routeur réessaie si le code d'état gRPC dans l'en-tête de réponse est défini sur "resource-exhausted"
  • unavailable : le routeur réessaie si le code d'état gRPC dans l'en-tête de réponse est défini sur "unavailable" (indisponible).
numRetries

integer (uint32 format)

Spécifie le nombre de tentatives autorisées. Ce nombre doit être supérieur à 0. Si aucune valeur n'est spécifiée, la valeur par défaut est 1.

StatefulSessionAffinityPolicy

Spécification de l'affinité de session avec état basée sur les cookies, où le plan de données fournit un "cookie de session" nommé "GSSA" qui encode un hôte de destination spécifique. Chaque requête contenant ce cookie sera dirigée vers cet hôte tant que l'hôte de destination reste opérationnel et en bon état.

La bibliothèque de maillage sans proxy gRPC ou le proxy side-car gèrent le cookie de session, mais le code de l'application cliente est responsable de la copie du cookie de chaque RPC de la session vers le suivant.

Représentation JSON
{
  "cookieTtl": string
}
Champs
cookieTtl

string (Duration format)

Obligatoire. Valeur TTL du cookie pour l'en-tête Set-Cookie généré par le plan de données. La durée de vie du cookie peut être définie sur une valeur comprise entre 1 et 86 400 secondes (24 heures) inclus.

Durée en secondes avec neuf chiffres au maximum après la virgule et se terminant par "s". Exemple : "3.5s"

Méthodes

create

Crée une route gRPC dans un projet et un emplacement donnés.

delete

Supprime une seule route gRPC.

get

Récupère les détails d'une seule route GrpcRoute.

list

Répertorie les GrpcRoutes d'un projet et d'un emplacement donnés.

patch

Mettre à jour les paramètres d'une seule route gRPC.

setIamPolicy

Définit la stratégie de contrôle d'accès de la ressource spécifiée.

testIamPermissions

Renvoie les autorisations qu'un appelant a sur la ressource spécifiée.