REST Resource: projects.locations.grpcRoutes

Ressource: GrpcRoute

GrpcRoute ist die Ressource, die definiert, wie gRPC-Traffic weitergeleitet wird, der von einer Mesh- oder Gateway-Ressource 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

Kennung. Name der GrpcRoute-Ressource. Sie stimmt mit dem Muster projects/*/locations/global/grpcRoutes/<grpc_route_name> überein.

createTime

string (Timestamp format)

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

Verwendet RFC 3339, wobei die generierte Ausgabe immer Z-normalisiert ist und 0, 3, 6 oder 9 Nachkommastellen verwendet. Andere Offsets als „Z“ werden ebenfalls akzeptiert. Beispiele: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" oder "2014-10-02T15:01:23+05:30".

updateTime

string (Timestamp format)

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

Verwendet RFC 3339, wobei die generierte Ausgabe immer Z-normalisiert ist und 0, 3, 6 oder 9 Nachkommastellen verwendet. Andere Offsets als „Z“ werden ebenfalls akzeptiert. Beispiele: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" oder "2014-10-02T15:01:23+05:30".

labels

map (key: string, value: string)

Optional. Eine Reihe 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 den Traffic beschreibt.

Format: [:]

Der Hostname ist der vollständig 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 Platzhalterlabel muss als erstes Label allein stehen.

Der Hostname kann „precise“ (genau) sein, d. h. ein Domainname ohne den abschließenden Punkt eines Netzwerkhosts (z. B. foo.example.com), oder „wildcard“ (Platzhalter), d. h. 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 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.

Beispiel: Es ist zulässig, Routen für die Hostnamen *.foo.bar.com und *.bar.com derselben Route zuzuordnen. Es ist jedoch nicht möglich, zwei Routen sowohl *.bar.com als auch bar.com zuzuordnen.

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

meshes[]

string

Optional. „Meshes“ definiert eine Liste von Meshes, an die diese GrpcRoute angehängt ist, als eine der Routingregeln zum Weiterleiten der Anfragen, die vom Mesh verarbeitet werden.

Jede Mesh-Referenz muss dem Muster projects/*/locations/global/meshes/<mesh_name> entsprechen.

gateways[]

string

Optional. „Gateways“ definiert eine Liste von Gateways, an die diese GrpcRoute angehängt ist, als eine der Routingregeln zum Weiterleiten der vom Gateway verarbeiteten Anfragen.

Jede Gateway-Referenz muss dem Muster projects/*/locations/global/gateways/<gateway_name> entsprechen.

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, wie Traffic weitergeleitet wird.

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

object (RouteMatch)

Optional. Mit Übereinstimmungen werden Bedingungen definiert, die zum Abgleichen der Regel mit eingehenden gRPC-Anfragen verwendet werden. Jede Übereinstimmung ist unabhängig. Diese Regel ergibt also eine Übereinstimmung, wenn EINE der Übereinstimmungen erfüllt ist. Wenn kein „matches“-Feld angegeben ist, wird diese Regel immer auf Traffic angewendet.

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. Eine RouteMatch-Übereinstimmung liegt vor, 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, mit der abgeglichen werden soll. Wenn dieses Feld leer ist oder weggelassen wird, werden alle Methoden abgeglichen.

MethodMatch

Gibt einen Abgleich mit einer Methode an.

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

enum (Type)

Optional. Gibt an, wie der Abgleich mit dem Namen durchgeführt wird. Wenn keine Angabe erfolgt, wird der Standardwert „EXACT“ verwendet.

grpcService

string

Erforderlich. Name des Dienstes, der abgeglichen werden soll. Wenn nicht angegeben, werden alle Dienste abgeglichen.

grpcMethod

string

Erforderlich. Name der Methode für den Abgleich. Wenn nicht angegeben, wird mit allen Methoden abgeglichen.

caseSensitive

boolean

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

Typ

Der Typ der Übereinstimmung.

Enums
TYPE_UNSPECIFIED Nicht angegeben.
EXACT Es wird nur der exakt angegebene Name abgeglichen.
REGULAR_EXPRESSION Interpretiert „grpcMethod“ und „grpcService“ als reguläre Ausdrücke. Die 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 der Abgleich mit dem Wert des Headers erfolgt. Wenn nichts angegeben ist, wird der Standardwert EXACT verwendet.

key

string

Erforderlich. Der Schlüssel der Kopfzeile.

value

string

Erforderlich. Der Wert des Headers.

Typ

Die Art der Übereinstimmung.

Enums
TYPE_UNSPECIFIED Nicht angegeben.
EXACT Es wird nur der exakt angegebene Wert abgeglichen.
REGULAR_EXPRESSION Entspricht Pfaden, die dem durch den Wert angegebenen Präfix entsprechen. Die RE2-Syntax wird unterstützt.

RouteAction

Gibt an, wie abgeglichener Traffic weitergeleitet werden soll.

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 entsprechend dem Feld „weight“ dieser Ziele auf die Backend-Dienste aufgeteilt.

faultInjectionPolicy

object (FaultInjectionPolicy)

Optional. Die Spezifikation für die Fehlerinjektion, die in den Traffic eingeführt wird, um die Ausfallsicherheit von Clients bei einem Ausfall des Zieldienstes zu testen. Im Rahmen der Fehlerinjektion können Verzögerungen bei einem Prozentsatz von Anfragen eingeführt werden, bevor diese Anfragen an den Zieldienst gesendet werden. Ebenso können Anfragen von Clients für einen bestimmten Prozentsatz der Anfragen abgebrochen werden.

„timeout“ und „retryPolicy“ werden von Clients ignoriert, die mit einer „faultInjectionPolicy“ 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 mit dieser Route verknüpfte Richtlinie für Wiederholungsversuche an.

statefulSessionAffinity

object (StatefulSessionAffinityPolicy)

Optional. Gibt die cookiebasierte zustandsorientierte Sitzungsaffinität an.

idleTimeout

string (Duration format)

Optional. Gibt das Leerlauf-Zeitlimit für die ausgewählte Route an. Das Leerlauftimeout wird als der Zeitraum definiert, in dem weder in der Upstream- noch in der Downstream-Verbindung Bytes gesendet oder empfangen werden. Wenn nicht festgelegt, beträgt das Standard-Leerlauftimeout 1 Stunde. Wenn der Wert auf „0s“ gesetzt ist, 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 sich entweder auf einen BackendService oder einen ServiceDirectoryService beziehen.

weight

integer

Optional. Gibt den Anteil der Anfragen an, die an das Backend weitergeleitet werden, auf das im Feld „serviceName“ verwiesen wird. Der Wert wird so berechnet: - Gewicht/Summe(Gewichte in dieser Zielliste). Bei Werten ungleich null kann es je nach Genauigkeit der Implementierung eine Abweichung vom hier definierten genauen Anteil geben.

Wenn nur ein serviceName angegeben ist und dieser ein Gewicht von mehr als 0 hat, wird 100% des Traffics an dieses Backend weitergeleitet.

Wenn Gewichte für einen Dienstnamen angegeben werden, müssen sie für alle angegeben werden.

Wenn für alle Dienste keine Gewichte angegeben sind, wird der Traffic gleichmäßig auf alle verteilt.

FaultInjectionPolicy

Die Spezifikation für die Fehlerinjektion, die in den Traffic eingeführt wird, um die Ausfallsicherheit von Clients bei einem Ausfall des Zieldienstes zu testen. Im Rahmen der Fehlerinjektion können Verzögerungen bei einem Prozentsatz von Anfragen eingeführt werden, bevor diese Anfragen an den Zieldienst gesendet werden. Ebenso 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 von Verzögerungen bei Clientanfragen.

abort

object (Abort)

Die Spezifikation für das Abbrechen von Clientanfragen.

Verzögerung

Gibt an, 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 an, bevor die Anfrage weitergeleitet wird.

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 eine Verzögerung eingefügt wird.

Der Wert muss zwischen 0 und 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, der zum Abbrechen der Anfrage verwendet wurde.

Der Wert muss zwischen 200 und 599 liegen.

percentage

integer

Der Prozentsatz des Traffics, der abgebrochen wird.

Der Wert muss zwischen 0 und 100 liegen.

RetryPolicy

Die Spezifikationen für Wiederholungsversuche. Gibt eine oder mehrere Bedingungen an, für die diese Wiederholungsregel gilt. Gültige Werte sind:

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

string

  • connect-failure: Der Router versucht bei Fehlern bei der Verbindung zu Backend-Diensten, z. B. aufgrund von Zeitüberschreitungen bei der Verbindung, die Verbindung noch einmal herzustellen.
  • refused-stream: Der Router versucht es noch einmal, wenn der Backend-Dienst den Stream mit dem Fehlercode REFUSED_STREAM zurücksetzt. Diese Art von Zurücksetzung weist darauf hin, dass es sicher ist, es noch einmal zu versuchen.
  • cancelled: Der Router versucht es noch einmal, wenn der gRPC-Statuscode im Antwortheader auf „cancelled“ gesetzt ist.
  • deadline-exceeded: Der Router versucht es noch einmal, wenn der gRPC-Statuscode im Antwortheader auf „deadline-exceeded“ gesetzt ist.
  • resource-exhausted: Der Router versucht es noch einmal, wenn der gRPC-Statuscode im Antwortheader auf „resource-exhausted“ gesetzt ist.
  • unavailable: Der Router versucht es noch einmal, wenn der gRPC-Statuscode im Antwortheader auf „unavailable“ gesetzt ist.
numRetries

integer (uint32 format)

Gibt die zulässige Anzahl an Wiederholungsversuchen 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 Datenebene ein Sitzungscookie mit dem Namen „GSSA“ bereitstellt, in dem ein bestimmter Zielhost codiert ist. Jede Anfrage, die dieses Cookie enthält, wird an diesen Host weitergeleitet, solange der Zielhost aktiv und fehlerfrei ist.

Die proxylose gRPC-Mesh-Bibliothek oder der Sidecar-Proxy verwalten das Sitzungscookie. Der Clientanwendungscode ist jedoch dafür verantwortlich, das Cookie von jedem RPC in der Sitzung in den nächsten zu kopieren.

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

string (Duration format)

Erforderlich. Der TTL-Wert für das Cookie 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 angegebenen Projekt und an einem angegebenen Ort.

delete

Löscht eine einzelne GrpcRoute.

get

Ruft Details zu einer einzelnen GrpcRoute ab.

getIamPolicy

Ruft die Zugriffssteuerungsrichtlinie für eine Ressource ab.

list

Listet GrpcRoutes in einem angegebenen Projekt und an einem angegebenen Standort auf.

patch

Aktualisiert die Parameter einer einzelnen GrpcRoute.

setIamPolicy

Legt die Zugriffskontrollrichtlinie für die angegebene Ressource fest.

testIamPermissions

Gibt die Berechtigungen des Aufrufers für die angegebene Ressource zurück.