REST Resource: projects.locations.grpcRoutes

Ressource: GRPCRoute

Die GRPCRoute ist die Ressource, die definiert, wie der gRPC-Traffic, der von einer Mesh- oder Gateway-Ressource weitergeleitet wird, weitergeleitet wird.

JSON-Darstellung
{
  "name": string,
  "selfLink": string,
  "createTime": string,
  "updateTime": string,
  "labels": {
    string: string,
    ...
  },
  "description": string,
  "hostnames": [
    string
  ],
  "meshes": [
    string
  ],
  "gateways": [
    string
  ],
  "rules": [
    {
      object (RouteRule)
    }
  ]
}
Felder
name

string

Erforderlich. Name der GRPCRoute-Ressource. Entspricht dem Muster projects/*/locations/global/grpcRoutes/<grpc_route_name>

createTime

string (Timestamp format)

Nur Ausgabe. Der Zeitstempel, der angibt, wann die Ressource erstellt wurde.

Ein Zeitstempel im Format RFC3339 UTC "Zulu" mit einer Auflösung im Nanosekundenbereich und bis zu neun Nachkommastellen. Beispiele: "2014-10-02T15:01:23Z" und "2014-10-02T15:01:23.045123456Z".

updateTime

string (Timestamp format)

Nur Ausgabe. Der Zeitstempel für den Zeitpunkt, zu dem die Ressource aktualisiert wurde.

Ein Zeitstempel im Format RFC3339 UTC "Zulu" mit einer Auflösung im Nanosekundenbereich und bis zu neun Nachkommastellen. Beispiele: "2014-10-02T15:01:23Z" und "2014-10-02T15:01:23.045123456Z".

labels

map (key: string, value: string)

Optional. Satz von Label-Tags, die mit der GRPCRoute-Ressource verknüpft sind.

Ein Objekt, das eine Liste von "key": value-Paaren enthält. Beispiel: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

description

string

Optional. Eine Freitextbeschreibung der Ressource. Maximale Länge: 1.024 Zeichen.

hostnames[]

string

Erforderlich. Dienst-Hostnamen mit einem optionalen Port, für den diese Route Traffic beschreibt.

Format: [:]

Hostname ist der voll qualifizierte Domainname eines Netzwerkhosts. Dies entspricht der RFC 1123-Definition eines Hostnamens mit zwei wichtigen Ausnahmen: – IP-Adressen sind nicht zulässig. – Einem Hostnamen kann ein Platzhalterlabel (*.) vorangestellt werden, das jedoch als erstes Label für sich selbst steht.

Der Hostname kann „präzise“ sein, d. h. ein Domainname ohne den abschließenden Punkt eines Netzwerkhosts (z. B. foo.example.com) oder „Platzhalter“. Dies ist ein Domainname mit einem einzelnen Platzhalterlabel (z. B. *.example.com).

Gemäß RFC1035 und RFC1123 muss ein Label aus alphanumerischen Zeichen in Kleinbuchstaben oder „-“ bestehen und mit einem alphanumerischen Zeichen beginnen und enden. Andere Satzzeichen sind nicht zulässig.

Die mit einem Mesh-Netzwerk oder Gateway verknüpften Routen müssen eindeutige Hostnamen haben. Wenn Sie versuchen, mehrere Routen mit in Konflikt stehenden Hostnamen anzuhängen, wird die Konfiguration abgelehnt.

Obwohl beispielsweise Routen für die Hostnamen *.foo.bar.com und *.bar.com mit derselben Route verknüpft sind, ist es nicht möglich, zwei Routen mit *.bar.com oder beiden mit bar.com zu verknüpfen.

Wenn ein Port angegeben ist, müssen gRPC-Clients den Kanal-URI mit dem Port verwenden, der dieser Regel entspricht (z. B. „xds:///service:123“). Andernfalls müssen sie den URI ohne Port (z. B. „xds:///service“) angeben.

meshes[]

string

Optional. Ein Mesh-Netzwerk definiert eine Liste von Mesh-Netzwerken, an die diese GRPCRoute angehängt ist, und zwar als eine der Routingregeln zum Weiterleiten der vom Mesh-Netzwerk bereitgestellten Anfragen.

Jeder Mesh-Verweis sollte diesem Muster entsprechen: projects/*/locations/global/meshes/<mesh_name>

gateways[]

string

Optional. Gateways definieren eine Liste von Gateways, an die diese GRPCRoute angehängt ist. Diese Liste ist eine der Routingregeln zum Weiterleiten der vom Gateway bereitgestellten Anfragen.

Jeder Gatewayverweis sollte dem Muster entsprechen: projects/*/locations/global/gateways/<gateway_name>

rules[]

object (RouteRule)

Erforderlich. Eine Liste mit detaillierten Regeln, die festlegen, wie Traffic weitergeleitet wird.

Innerhalb einer einzelnen GRPCRoute wird die GRPCRoute.RouteAction ausgeführt, die der ersten übereinstimmenden GRPCRoute.RouteRule zugeordnet ist. Es muss mindestens eine Regel angegeben werden.

RouteRule

Beschreibt das Weiterleiten von Traffic.

JSON-Darstellung
{
  "matches": [
    {
      object (RouteMatch)
    }
  ],
  "action": {
    object (RouteAction)
  }
}
Felder
matches[]

object (RouteMatch)

Optional. Übereinstimmungen definieren Bedingungen, die zum Abgleich der Regel mit eingehenden gRPC-Anfragen verwendet werden. Jede Übereinstimmung ist unabhängig, d.h., diese Regel wird angewendet, wenn EINE BELIEBTE der Übereinstimmungen erfüllt ist. Wenn kein Übereinstimmungsfeld angegeben ist, gleicht diese Regel den Traffic unbedingt ab.

action

object (RouteAction)

Erforderlich. Eine detaillierte Regel, die festlegt, wie Traffic weitergeleitet wird. Dies ist ein Pflichtfeld.

RouteMatch

Kriterien für den Abgleich von Traffic. Ein RouteMatch wird als übereinstimmend angesehen, wenn alle angegebenen Felder übereinstimmen.

JSON-Darstellung
{
  "headers": [
    {
      object (HeaderMatch)
    }
  ],
  "method": {
    object (MethodMatch)
  }
}
Felder
headers[]

object (HeaderMatch)

Optional. Gibt eine Sammlung von Headern an, die abgeglichen werden sollen.

method

object (MethodMatch)

Optional. Eine gRPC-Methode für den Abgleich. Wenn dieses Feld leer ist oder weggelassen wird, wird es mit allen Methoden abgeglichen.

MethodMatch

Gibt eine Übereinstimmung mit einer Methode an.

JSON-Darstellung
{
  "type": enum (Type),
  "grpcService": string,
  "grpcMethod": string,
  "caseSensitive": boolean
}
Felder
type

enum (Type)

Optional. Gibt an, wie mit dem Namen abgeglichen werden soll. Wenn keine Angabe erfolgt, wird der Standardwert „EXACT“ verwendet.

grpcService

string

Erforderlich. Name des Dienstes, der abgeglichen werden soll. Wenn keine Angabe gemacht wird, werden alle Dienste abgeglichen.

grpcMethod

string

Erforderlich. Name der Methode, die abgeglichen werden soll. Wenn keine Angabe gemacht wird, werden alle Methoden berücksichtigt.

caseSensitive

boolean

Optional. Gibt an, dass bei Übereinstimmungen zwischen Groß- und Kleinschreibung unterschieden wird. Der Standardwert ist "true". Die Groß-/Kleinschreibung darf nicht zusammen mit dem Typ REGULAR_EXPRESSION verwendet werden.

Typ

Die Art der Übereinstimmung.

Enums
TYPE_UNSPECIFIED Nicht spezifiziert.
EXACT Stimmt nur mit dem angegebenen Namen überein.
REGULAR_EXPRESSION Interpretiert gRPCMethod und gRPCService als reguläre Ausdrücke. RE2-Syntax wird unterstützt.

HeaderMatch

Ein Abgleich mit einer Sammlung von Headern.

JSON-Darstellung
{
  "type": enum (Type),
  "key": string,
  "value": string
}
Felder
type

enum (Type)

Optional. Gibt an, wie mit dem Wert des Headers abgeglichen werden soll. Wenn nicht angegeben, wird der Standardwert EXACT verwendet.

key

string

Erforderlich. Der Schlüssel des Headers.

value

string

Erforderlich. Der Wert des Headers.

Typ

Die Art der Übereinstimmung.

Enums
TYPE_UNSPECIFIED Nicht spezifiziert.
EXACT Stimmt nur genau mit dem angegebenen Wert überein.
REGULAR_EXPRESSION Gleicht Pfade ab, die dem durch den Wert angegebenen Präfix entsprechen. RE2-Syntax wird unterstützt.

RouteAction

Gibt an, wie übereinstimmender Traffic weitergeleitet wird.

JSON-Darstellung
{
  "destinations": [
    {
      object (Destination)
    }
  ],
  "faultInjectionPolicy": {
    object (FaultInjectionPolicy)
  },
  "timeout": string,
  "retryPolicy": {
    object (RetryPolicy)
  },
  "statefulSessionAffinity": {
    object (StatefulSessionAffinityPolicy)
  },
  "idleTimeout": string
}
Felder
destinations[]

object (Destination)

Optional. Die Zieldienste, an die Traffic weitergeleitet werden soll. Wenn mehrere Ziele angegeben sind, wird der Traffic zwischen den Back-End-Diensten gemäß dem Gewichtungsfeld dieser Ziele aufgeteilt.

faultInjectionPolicy

object (FaultInjectionPolicy)

Optional. Die Spezifikation für die Fehlerinjektion, die in den Traffic eingeführt wurde, um die Ausfallsicherheit von Clients gegenüber dem Ausfall eines Zieldienstes zu testen. Wenn Clients Anfragen an ein Ziel senden, können als Teil der Fehlerinjektion Verzögerungen bei einem Prozentsatz der Anfragen entstehen, bevor diese Anfragen an den Zieldienst gesendet werden. In ähnlicher Weise können Anfragen von Clients für einen bestimmten Prozentsatz der Anfragen abgebrochen werden.

Timeout und RepeatPolicy werden von Clients ignoriert, die mit einer failInjectionPolicy konfiguriert sind.

timeout

string (Duration format)

Optional. Gibt das Zeitlimit für die ausgewählte Route an. Das Zeitlimit wird vom Zeitpunkt der vollständigen Verarbeitung der Anfrage (d.h. Ende des Streams) bis zur vollständigen Verarbeitung der Antwort berechnet. Das Zeitlimit umfasst alle Wiederholungen.

Die Dauer in Sekunden mit bis zu neun Nachkommastellen und am Ende mit "s". Beispiel: "3.5s".

retryPolicy

object (RetryPolicy)

Optional. Gibt die Wiederholungsrichtlinie an, die mit dieser Route verknüpft ist.

statefulSessionAffinity

object (StatefulSessionAffinityPolicy)

Optional. Gibt cookiebasierte zustandsorientierte Sitzungsaffinität an.

idleTimeout

string (Duration format)

Optional. Gibt das Zeitlimit bei Inaktivität für die ausgewählte Route an. Das Zeitlimit bei Inaktivität ist definiert als der Zeitraum, in dem keine Byte über die Upstream- oder die Downstream-Verbindung gesendet oder empfangen wurden. Wenn die Richtlinie nicht konfiguriert ist, beträgt die standardmäßige Zeitüberschreitung bei Inaktivität 1 Stunde. Bei der Einstellung auf 0 s wird das Zeitlimit deaktiviert.

Die Dauer in Sekunden mit bis zu neun Nachkommastellen und am Ende mit "s". Beispiel: "3.5s".

Ziel

Das Ziel, an das der Traffic weitergeleitet wird.

JSON-Darstellung
{

  // 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
}
Felder
Union-Feld destination_type. Gibt die Art des Ziels an, an das der Traffic weitergeleitet wird. Für destination_type ist nur einer der folgenden Werte zulässig:
serviceName

string

Erforderlich. Die URL eines Zieldienstes, an den Traffic weitergeleitet werden soll. Muss auf einen BackendService oder ServiceDirectoryService verweisen.

weight

integer

Optional. Gibt den Anteil der Anfragen an, die an das Back-End weitergeleitet werden, auf das im Feld „serviceName“ verwiesen wird. Dies wird wie folgt berechnet: - Gewichtung/Summe(Gewichtungen in dieser Zielliste). Bei Werten ungleich null kann ein Epsilon aus dem hier definierten Anteil vorhanden sein, abhängig von der Genauigkeit, die eine Implementierung unterstützt.

Wenn nur ein serviceName angegeben ist und dieser eine Gewichtung größer als 0 hat, werden 100% des Traffics an dieses Back-End weitergeleitet.

Wenn für einen bestimmten Dienstnamen Gewichtungen angegeben sind, müssen diese für alle Dienstnamen angegeben werden.

Wenn für alle Dienste keine Gewichtungen angegeben sind, wird der Traffic zu gleichen Teilen auf alle Dienste verteilt.

FaultInjectionPolicy

Die Spezifikation für die Fehlerinjektion, die in den Traffic eingeführt wurde, um die Ausfallsicherheit von Clients gegenüber dem Ausfall eines Zieldienstes zu testen. Wenn Clients Anfragen an ein Ziel senden, können als Teil der Fehlerinjektion Verzögerungen bei einem Prozentsatz der Anfragen entstehen, bevor diese Anfragen an den Zieldienst gesendet werden. In ähnlicher Weise können Anfragen von Clients für einen bestimmten Prozentsatz der Anfragen abgebrochen werden.

JSON-Darstellung
{
  "delay": {
    object (Delay)
  },
  "abort": {
    object (Abort)
  }
}
Felder
delay

object (Delay)

Die Spezifikation zum Einfügen der Verzögerung bei Clientanfragen.

abort

object (Abort)

Die Spezifikation für den Abbruch von Clientanfragen.

Verzögerung

Spezifikation, wie Clientanfragen im Rahmen der Fehlerinjektion verzögert werden, bevor sie an ein Ziel gesendet werden.

JSON-Darstellung
{
  "fixedDelay": string,
  "percentage": integer
}
Felder
fixedDelay

string (Duration format)

Geben Sie eine feste Verzögerung vor dem Weiterleiten der Anfrage an.

Die Dauer in Sekunden mit bis zu neun Nachkommastellen und am Ende mit "s". Beispiel: "3.5s".

percentage

integer

Der Prozentsatz des Traffics, bei dem die Verzögerung eingefügt wird.

Der Wert muss zwischen [0, 100] liegen

Abbrechen

Spezifikation, wie Clientanfragen im Rahmen der Fehlerinjektion abgebrochen werden, bevor sie an ein Ziel gesendet werden.

JSON-Darstellung
{
  "httpStatus": integer,
  "percentage": integer
}
Felder
httpStatus

integer

Der HTTP-Statuscode, mit dem die Anfrage abgebrochen wird.

Der Wert muss zwischen 200 und 599 (jeweils einschließlich) liegen.

percentage

integer

Prozentsatz des Traffics, der abgebrochen wird.

Der Wert muss zwischen [0, 100] liegen

RetryPolicy

Die Spezifikationen für Wiederholungsversuche.

JSON-Darstellung
{
  "retryConditions": [
    string
  ],
  "numRetries": integer
}
Felder
retryConditions[]

string

  • connect-failure: Der Router wiederholt bei einem Fehler beim Herstellen einer Verbindung zu den Back-End-Diensten, z. B. aufgrund von Zeitüberschreitungen bei der Verbindung.
  • abgelehnter Stream: Der Router wiederholt den Vorgang, wenn der Backend-Dienst den Stream mit dem Fehlercode REFUSED_STREAM zurücksetzt. Dieser Typ zum Zurücksetzen bedeutet, dass Sie den Vorgang bedenkenlos wiederholen können.
  • abgebrochen: Der Router wiederholt den Vorgang, wenn der gRPC-Statuscode im Antwortheader auf „abgebrochen“ festgelegt ist.
  • Zeitlimit überschritten: Router wiederholt es, wenn der gRPC-Statuscode im Antwortheader auf Zeitüberschreitung eingestellt ist.
  • resource-exhausted: Der Router versucht noch einmal, den gRPC-Statuscode im Antwortheader auf „resource-exhausted“ zu setzen
  • Nicht verfügbar: Der Router versucht den Vorgang noch einmal, wenn der gRPC-Statuscode im Antwortheader auf „Nicht verfügbar“ festgelegt ist.
numRetries

integer (uint32 format)

Gibt die zulässige Anzahl von Wiederholungen an. Diese Zahl muss größer als 0 sein. Wenn keine Angabe erfolgt, wird standardmäßig 1 verwendet.

StatefulSessionAffinityPolicy

Die Spezifikation für die cookiebasierte zustandsorientierte Sitzungsaffinität, bei der die Datumsebene ein „Sitzungscookie“ mit dem Namen „GSSA“ bereitstellt, das einen bestimmten Zielhost codiert. Jede Anfrage mit diesem Cookie wird an diesen Host weitergeleitet, solange der Zielhost aktiv und fehlerfrei ist.

Das Sitzungscookie wird von der proxylosen gRPC-Mesh-Bibliothek oder dem Sidecar-Proxy verwaltet. Der Clientanwendungscode ist jedoch für das Kopieren des Cookies von jedem RPC in der Sitzung in den nächsten verantwortlich.

JSON-Darstellung
{
  "cookieTtl": string
}
Felder
cookieTtl

string (Duration format)

Erforderlich. Der Cookie-TTL-Wert für den von der Datenebene generierten Set-Cookie-Header. Die Lebensdauer des Cookies kann auf einen Wert zwischen 1 und 86.400 Sekunden (24 Stunden) festgelegt werden.

Die Dauer in Sekunden mit bis zu neun Nachkommastellen und am Ende mit "s". Beispiel: "3.5s".

Methoden

create

Erstellt eine neue GRPCRoute in einem bestimmten Projekt und an einem bestimmten Standort.

delete

Löscht eine einzelne GRPCRoute.

get

Ruft Details zu einer einzelnen GRPCRoute ab.

list

Listet GRPC-Routen in einem bestimmten Projekt und an einem bestimmten Standort auf.

patch

Aktualisiert die Parameter einer einzelnen GRPCRoute.