REST Resource: projects.locations.grpcRoutes

Ressource: GrpcRoute

GrpcRoute ist die Ressource, die definiert, wie 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. Es 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.

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, der angibt, wann 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 der GrpcRoute-Ressource zugeordnet 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 voll qualifizierte Domainname eines Netzwerkhosts. Dies entspricht der RFC 1123-Definition eines Hostnamens mit zwei Ausnahmen: – Ein Hostname kann mit einem Platzhalterlabel (*.) vorangestellt werden. Das Platzhalterlabel muss als erstes Label allein stehen.

Hostname kann „genau“ sein Dabei handelt es sich um einen Domainnamen ohne den abschließenden Punkt eines Netzwerkhosts (z. B. foo.example.com) oder um einen „Platzhalter“. Dabei handelt es sich um einen Domainnamen mit einem vorangestellten 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.

Beispielsweise ist es zulässig, Routen für die Hostnamen *.foo.bar.com und *.bar.com derselben Route zuzuordnen. Es ist jedoch nicht möglich, zwei Routen beide entweder mit *.bar.com oder beide 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 angeben (d. h. „xds:///service“).

meshes[]

string

Optional. Mit „Meshes“ wird eine Liste von Meshes definiert, an die diese GrpcRoute angehängt ist. Dies ist eine der Routingregeln für die Weiterleitung der vom Mesh gesendeten Anfragen.

Jeder Verweis auf das Mesh-Netzwerk sollte dem Muster projects/*/locations/global/meshes/<mesh_name> entsprechen.

gateways[]

string

Optional. Gateways definieren eine Liste von Gateways, an die diese GRPCRoute angehängt ist, als eine der Routingregeln zur Weiterleitung der vom Gateway bereitgestellten Anfragen.

Jeder Gateway-Verweis sollte diesem Muster entsprechen: projects/*/locations/global/gateways/<gateway_name>

rules[]

object (RouteRule)

Erforderlich. Eine Liste detaillierter 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. Übereinstimmungen definieren Bedingungen, die zum Abgleichen der Regel mit eingehenden gRPC-Anfragen verwendet werden. Jede Übereinstimmung ist unabhängig, d.h. diese Regel wird angewendet, wenn EINE der Übereinstimmungen erfüllt ist. Wenn kein Übereinstimmungsfeld angegeben ist, wird diese Regel bedingungslos auf den Traffic angewendet.

action

object (RouteAction)

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

RouteMatch

Kriterien für den Trafficabgleich. Eine RouteMatch-Übereinstimmung wird festgestellt, 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, werden alle Methoden gefunden.

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 der Abgleich mit dem Namen durchgeführt wird. Wenn nicht angegeben, der Standardwert „EXACT“ verwendet wird.

grpcService

string

Erforderlich. Name des Dienstes für den Abgleich. Wenn nicht angegeben, werden alle Dienste abgeglichen.

grpcMethod

string

Erforderlich. Name der Methode für den Abgleich. Wenn kein Wert angegeben ist, gilt dies für alle Methoden.

caseSensitive

boolean

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

Typ

Die Art der Übereinstimmung.

Enums
TYPE_UNSPECIFIED Nicht angegeben.
EXACT Stimmt nur mit dem angegebenen Namen überein.
REGULAR_EXPRESSION „grpcMethod“ und „grpcService“ werden als reguläre Ausdrücke interpretiert. Die RE2-Syntax wird unterstützt.

HeaderMatch

Eine Übereinstimmung 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 durchgeführt wird. Wenn keine Angabe erfolgt, 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 angegeben.
EXACT Es wird nur eine genaue Übereinstimmung mit dem angegebenen Wert gefunden.
REGULAR_EXPRESSION Übereinstimmt mit Pfaden, 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 der Traffic weitergeleitet werden soll. Wenn mehrere Ziele angegeben werden, wird der Traffic gemäß dem Gewichtsfeld 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 Zieldienstausfällen zu testen. Im Rahmen der Fehlerinjektion können bei der Übertragung von Anfragen von Clients an ein Ziel Verzögerungen für einen Prozentsatz der 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.

Zeitüberschreitung und Wiederholungsrichtlinie werden von Clients ignoriert, die mit einer FehlerinjectionPolicy 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. am 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 dieser Route zugeordnet ist.

statefulSessionAffinity

object (StatefulSessionAffinityPolicy)

Optional. Gibt die cookiebasierte zustandsorientierte Sitzungsaffinität an.

idleTimeout

string (Duration format)

Optional. Gibt das Zeitlimit für die Inaktivität für die ausgewählte Route an. Das Zeitlimit bei Inaktivität ist als Zeitraum definiert, in dem keine Byte über die Upstream- oder Downstream-Verbindung gesendet oder empfangen werden. Wenn die Richtlinie nicht konfiguriert ist, beträgt die standardmäßige Zeitüberschreitung bei Inaktivität 1 Stunde. Wenn dieser Wert auf 0 s 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 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. Der Wert wird wie folgt berechnet: – Gewichtung/Summe(Gewichtungen in dieser Zielliste). Bei Werten ungleich Null kann je nach der von einer Implementierung unterstützten Genauigkeit ein gewisses Epsilon zu dem hier definierten Anteil vorliegen.

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

Wenn für einen Dienstnamen Gewichtungen angegeben werden, müssen sie für alle 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 Traffic eingeführt wurde, um die Ausfallsicherheit von Clients gegenüber dem Ausfall des Zieldienstes zu testen. Im Rahmen der Fehlerinjektion können bei der Übertragung von Anfragen von Clients an ein Ziel Verzögerungen für einen Prozentsatz der 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 für die Verzögerung von Clientanfragen.

abort

object (Abort)

Die Spezifikation zum Abbrechen 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 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 die Verzögerung eingeschleust wird.

Der Wert muss zwischen [0, 100] liegen

Abbrechen

Gibt an, 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 wurde.

Der Wert muss zwischen 200 und 599 liegen.

percentage

integer

Der Prozentsatz der Zugriffe, die abgebrochen werden.

Der Wert muss zwischen [0, 100] liegen.

RetryPolicy

Die Spezifikationen für Wiederholungsversuche.

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

string

  • Verbindungsfehler: Der Router wiederholt den Vorgang, wenn keine Verbindung zu den Backend-Diensten hergestellt werden kann, z. B. aufgrund einer Zeitüberschreitung bei der Verbindung.
  • abgelehnter Stream: Der Router wiederholt den Stream, wenn der Back-End-Dienst den Stream mit dem Fehlercode REFused_STREAM zurücksetzt. Dieser zurückgesetzte Typ gibt an, dass ein neuer Versuch sicher ist.
  • Abgebrochen: Der Router wiederholt den Vorgang, wenn der gRPC-Statuscode im Antwortheader auf "Abgebrochen" gesetzt ist
  • Deadline-exceeded: Der Router wiederholt den Vorgang, wenn der gRPC-Statuscode im Antwort-Header auf Deadline-exceeded gesetzt ist.
  • resource-exhausted: Der Router versucht es noch einmal, wenn der gRPC-Statuscode im Antwortheader auf „resource-exhausted“ festgelegt ist.
  • unavailable: Der Router versucht es noch einmal, wenn der gRPC-Statuscode im Antwortheader auf „unavailable“ (nicht verfügbar) gesetzt ist.
numRetries

integer (uint32 format)

Gibt die zulässige Anzahl an Wiederholungsversuchen an. Diese Zahl muss > 0. Wenn keine Angabe erfolgt, wird der Standardwert 1 verwendet.

StatefulSessionAffinityPolicy

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

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

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

string (Duration format)

Erforderlich. Der TTL-Wert für Cookies für den Set-Cookie-Header, der von der Datenebene generiert wird. 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 Grpc-Route.

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 Grpc-Route.

setIamPolicy

Legt die Zugriffskontrollrichtlinie für die angegebene Ressource fest.

testIamPermissions

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