REST Resource: projects.locations.grpcRoutes

משאב: GrpcRoute

‫GrpcRoute הוא המשאב שמגדיר איך תעבורת נתונים של gRPC שמנותבת על ידי משאב Mesh או Gateway מנותבת.

ייצוג ב-JSON
{
  "name": string,
  "selfLink": string,
  "createTime": string,
  "updateTime": string,
  "labels": {
    string: string,
    ...
  },
  "description": string,
  "hostnames": [
    string
  ],
  "meshes": [
    string
  ],
  "gateways": [
    string
  ],
  "rules": [
    {
      object (RouteRule)
    }
  ]
}
שדות
name

string

מזהה. השם של משאב GrpcRoute. היא תואמת לתבנית projects/*/locations/global/grpcRoutes/<grpc_route_name>

createTime

string (Timestamp format)

פלט בלבד. חותמת הזמן שבה נוצר המשאב.

הפורמט הוא RFC 3339, והפלט שנוצר תמיד יהיה בפורמט Z עם 0, 3, 6 או 9 ספרות אחרי הנקודה. אפשר להשתמש גם בהיסטים אחרים חוץ מ-Z. דוגמאות: "2014-10-02T15:01:23Z", ‏ "2014-10-02T15:01:23.045123456Z" או "2014-10-02T15:01:23+05:30".

updateTime

string (Timestamp format)

פלט בלבד. חותמת הזמן של מועד העדכון של המשאב.

הפורמט הוא RFC 3339, והפלט שנוצר תמיד יהיה בפורמט Z עם 0, 3, 6 או 9 ספרות אחרי הנקודה. אפשר להשתמש גם בהיסטים אחרים חוץ מ-Z. דוגמאות: "2014-10-02T15:01:23Z", ‏ "2014-10-02T15:01:23.045123456Z" או "2014-10-02T15:01:23+05:30".

labels

map (key: string, value: string)

זה שינוי אופציונלי. קבוצת תגי תוויות שמשויכים למשאב GrpcRoute.

אובייקט שמכיל רשימה של "key": value זוגות. לדוגמה: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

description

string

זה שינוי אופציונלי. תיאור של המשאב בטקסט חופשי. אורך מקסימלי של 1,024 תווים.

hostnames[]

string

חובה. שמות מארחים של שירותים עם יציאה אופציונלית שמתארת את התעבורה במסלול הזה.

פורמט: [:]

שם המארח הוא שם הדומיין שמוגדר במלואו של מארח ברשת. ההגדרה הזו תואמת להגדרה של שם מארח ב-RFC 1123, עם שני חריגים בולטים: – אסור להשתמש בכתובות IP. – שם מארח יכול להתחיל בתווית של תו כללי לחיפוש (*.). התווית של התו הכללי לחיפוש חייבת להופיע לבד כתווית הראשונה.

שם המארח יכול להיות 'מדויק', כלומר שם דומיין ללא הנקודה שמסיימת את שם המארח ברשת (למשל, foo.example.com), או 'תו כללי לחיפוש', כלומר שם דומיין שמתחיל בתו כללי לחיפוש (למשל, *.example.com).

שימו לב: בהתאם ל-RFC1035 ול-RFC1123, תווית חייבת לכלול תווים אלפאנומריים באותיות קטנות או '-', ולהתחיל ולהסתיים בתו אלפאנומרי. אסור להשתמש בסימני פיסוק אחרים.

למסלולים שמשויכים לרשת Mesh או לשער צריך להיות שם מארח ייחודי. אם תנסו לצרף כמה מסלולים עם שמות מארחים סותרים, המערכת תדחה את ההגדרה.

לדוגמה, אפשר לשייך את המסלולים של שמות המארחים *.foo.bar.com ו-*.bar.com לאותו מסלול, אבל אי אפשר לשייך שני מסלולים ל-*.bar.com או ל-bar.com.

אם מציינים יציאה, לקוחות gRPC צריכים להשתמש ב-URI של הערוץ עם היציאה כדי להתאים לכלל הזה (למשל, xds:///service:123), אחרת הם צריכים לספק את ה-URI ללא יציאה (למשל, xds:///service).

meshes[]

string

זה שינוי אופציונלי. השדה Meshes מגדיר רשימה של רשתות שאליהן מצורף GrpcRoute, כאחד מכללי הניתוב לניתוב הבקשות שמטופלות על ידי הרשת.

כל הפניה לרשת צריכה להתאים לתבנית: projects/*/locations/global/meshes/<mesh_name>

gateways[]

string

זה שינוי אופציונלי. השדה Gateways מגדיר רשימה של שערים שאליהם מצורף GrpcRoute, כאחד מכללי הניתוב לניתוב הבקשות שהשער משרת.

כל הפניה לשער צריכה להתאים לתבנית: projects/*/locations/global/gateways/<gateway_name>

rules[]

object (RouteRule)

חובה. רשימה של כללים מפורטים שמגדירים איך לנתב את התנועה.

ב-GrpcRoute יחיד, תתבצע הפעולה GrpcRoute.RouteAction שמשויכת ל-GrpcRoute.RouteRule הראשון שתואם. צריך לספק לפחות כלל אחד.

RouteRule

הסבר על ניתוב תנועה.

ייצוג ב-JSON
{
  "matches": [
    {
      object (RouteMatch)
    }
  ],
  "action": {
    object (RouteAction)
  }
}
שדות
matches[]

object (RouteMatch)

זה שינוי אופציונלי. התאמות מגדירות תנאים שמשמשים להתאמת הכלל לבקשות gRPC נכנסות. כל התאמה היא עצמאית, כלומר הכלל הזה יתאים אם תנאי ההתאמה יתקיים באחת מההתאמות. אם לא מציינים שדה של התאמות, הכלל הזה יתאים לתנועה ללא תנאי.

action

object (RouteAction)

חובה. כלל מפורט שמגדיר איך לנתב את תעבורת הנתונים. חובה למלא את השדה הזה.

RouteMatch

קריטריונים להתאמת תנועה. התאמה של RouteMatch תיחשב כהתאמה אם כל השדות שסופקו תואמים.

ייצוג ב-JSON
{
  "headers": [
    {
      object (HeaderMatch)
    }
  ],
  "method": {
    object (MethodMatch)
  }
}
שדות
headers[]

object (HeaderMatch)

זה שינוי אופציונלי. מציינים אוסף של כותרות שצריך למצוא להן התאמה.

method

object (MethodMatch)

זה שינוי אופציונלי. שיטת gRPC להתאמה. אם השדה הזה ריק או מושמט, הוא יתאים לכל השיטות.

MethodMatch

מציין התאמה לשיטה.

ייצוג ב-JSON
{
  "type": enum (Type),
  "grpcService": string,
  "grpcMethod": string,
  "caseSensitive": boolean
}
שדות
type

enum (Type)

זה שינוי אופציונלי. קובע איך להתאים לשם. אם לא מציינים ערך, המערכת משתמשת בערך ברירת המחדל EXACT.

grpcService

string

חובה. שם השירות שרוצים להתאים לו. אם לא מצוין ערך, המדיניות תחול על כל השירותים.

grpcMethod

string

חובה. שם השיטה שרוצים להשוות אליה. אם לא מצוין ערך, יתבצע התאמה לכל השיטות.

caseSensitive

boolean

זה שינוי אופציונלי. מציין שההתאמות הן תלויות אותיות רישיות. ערך ברירת המחדל הוא true. אי אפשר להשתמש ב-caseSensitive עם סוג של REGULAR_EXPRESSION.

סוג

סוג ההתאמה.

טיפוסים בני מנייה (enum)
TYPE_UNSPECIFIED לא צוין.
EXACT ההתאמה תהיה רק לשם המדויק שצוין.
REGULAR_EXPRESSION המערכת תפרש את grpcMethod ואת grpcService כביטויי Regular. יש תמיכה בתחביר RE2.

HeaderMatch

התאמה לאוסף של כותרות.

ייצוג ב-JSON
{
  "type": enum (Type),
  "key": string,
  "value": string
}
שדות
type

enum (Type)

זה שינוי אופציונלי. מציין איך להתאים לערך של הכותרת. אם לא מציינים ערך, המערכת משתמשת בערך ברירת המחדל EXACT.

key

string

חובה. המפתח של הכותרת.

value

string

חובה. הערך של הכותרת.

סוג

סוג ההתאמה.

טיפוסים בני מנייה (enum)
TYPE_UNSPECIFIED לא צוין.
EXACT ההתאמה תהיה רק לערך המדויק שצוין.
REGULAR_EXPRESSION יתאימו לנתיבים שתואמים לתחילית שצוינה בערך. יש תמיכה בתחביר RE2.

RouteAction

מציינת איך לנתב תנועה תואמת.

ייצוג ב-JSON
{
  "destinations": [
    {
      object (Destination)
    }
  ],
  "faultInjectionPolicy": {
    object (FaultInjectionPolicy)
  },
  "timeout": string,
  "retryPolicy": {
    object (RetryPolicy)
  },
  "statefulSessionAffinity": {
    object (StatefulSessionAffinityPolicy)
  },
  "idleTimeout": string
}
שדות
destinations[]

object (Destination)

זה שינוי אופציונלי. שירותי היעד שאליהם התנועה תועבר. אם מציינים כמה יעדים, התנועה תפוצל בין שירותי ה-Backend בהתאם לשדה המשקל של היעדים האלה.

faultInjectionPolicy

object (FaultInjectionPolicy)

זה שינוי אופציונלי. המפרט להזרקת תקלות שמוחדר לתנועה כדי לבדוק את העמידות של לקוחות לכשל בשירות היעד. כחלק מהזרקת תקלות, כשלקוחות שולחים בקשות ליעד, יכול להיות שיווצרו עיכובים באחוז מסוים מהבקשות לפני שהן יישלחו לשירות היעד. באופן דומה, אפשר להפסיק בקשות מלקוחות עבור אחוז מסוים מהבקשות.

לקוחות שהוגדרה להם מדיניות faultInjectionPolicy יתעלמו מההגדרות timeout ו-retryPolicy

timeout

string (Duration format)

זה שינוי אופציונלי. מציינת את הזמן הקצוב לתפוגה של הנתיב שנבחר. הזמן הקצוב לתפוגה מחושב מהרגע שבו הבקשה עובדה במלואה (כלומר, סוף הזרם) ועד שהתשובה עובדה במלואה. הזמן הקצוב לתפוגה כולל את כל הניסיונות החוזרים.

משך זמן בשניות עם עד תשע ספרות אחרי הנקודה העשרונית, שמסתיים ב-'s'. דוגמה: "3.5s".

retryPolicy

object (RetryPolicy)

זה שינוי אופציונלי. המדיניות הזו מגדירה את מדיניות הניסיון החוזר שמשויכת למסלול הזה.

statefulSessionAffinity

object (StatefulSessionAffinityPolicy)

זה שינוי אופציונלי. מציין זיקה למשך פעילות הסשן עם שמירת מצב שמבוססת על קובצי Cookie.

idleTimeout

string (Duration format)

זה שינוי אופציונלי. מציינים את הזמן הקצוב לתפוגה של חוסר פעילות עבור המסלול שנבחר. הזמן הקצוב לתפוגה במצב המתנה מוגדר כפרק הזמן שבו לא נשלחים או מתקבלים בייטים בחיבור במעלה הזרם או במורד הזרם. אם לא מגדירים את משך הזמן הקצוב ללא פעילות, ברירת המחדל היא שעה אחת. אם מגדירים את הערך ל-0s, פסק הזמן מושבת.

משך זמן בשניות עם עד תשע ספרות אחרי הנקודה העשרונית, שמסתיים ב-'s'. דוגמה: "3.5s".

יעד

היעד שאליו תנותב התנועה.

ייצוג ב-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
}
שדות
שדה איחוד destination_type. מציין את סוג היעד שאליו תנותב התנועה. הערך destination_type יכול להיות רק אחד מהבאים:
serviceName

string

חובה. כתובת ה-URL של שירות היעד שאליו תנותב תנועת הגולשים. חובה להפנות אל BackendService או אל ServiceDirectoryService.

weight

integer

זה שינוי אופציונלי. מציין את שיעור הבקשות שמועברות לחלק האחורי שאליו מתייחס השדה serviceName. החישוב מתבצע באופן הבא: משקל חלקי סכום המשקלים ברשימת היעדים הזו. לערכים שאינם אפס, יכול להיות שיהיה אפסילון מסוים מהפרופורציה המדויקת שמוגדרת כאן, בהתאם לדיוק שההטמעה תומכת בו.

אם מציינים רק serviceName אחד והמשקל שלו גדול מ-0, ‏ 100% מהתנועה מועברים לקצה העורפי הזה.

אם מציינים משקלים לשם שירות אחד, צריך לציין משקלים לכל שמות השירותים.

אם לא מציינים משקלים לכל השירותים, התנועה מתחלקת ביניהם באופן שווה.

FaultInjectionPolicy

המפרט להזרקת תקלות שמוחדר לתנועה כדי לבדוק את העמידות של לקוחות לכשל בשירות היעד. כחלק מהזרקת תקלות, כשלקוחות שולחים בקשות ליעד, יכול להיות שיווצרו עיכובים באחוז מסוים מהבקשות לפני שהן יישלחו לשירות היעד. באופן דומה, אפשר להפסיק בקשות מלקוחות עבור אחוז מסוים מהבקשות.

ייצוג ב-JSON
{
  "delay": {
    object (Delay)
  },
  "abort": {
    object (Abort)
  }
}
שדות
delay

object (Delay)

המפרט להוספת עיכוב לבקשות של לקוחות.

abort

object (Abort)

המפרט לביטול בקשות ללקוח.

השהיה

הגדרה של אופן העיכוב של בקשות לקוח כחלק מהחדרת תקלות לפני שהן נשלחות ליעד.

ייצוג ב-JSON
{
  "fixedDelay": string,
  "percentage": integer
}
שדות
fixedDelay

string (Duration format)

מציינים השהיה קבועה לפני העברת הבקשה.

משך זמן בשניות עם עד תשע ספרות אחרי הנקודה העשרונית, שמסתיים ב-'s'. דוגמה: "3.5s".

percentage

integer

אחוז התנועה שיוזרק לה עיכוב.

הערך צריך להיות בין 0 ל-100

ביטול

הגדרה של אופן ביטול הבקשות של הלקוח כחלק מהחדרת תקלות לפני שהן נשלחות ליעד.

ייצוג ב-JSON
{
  "httpStatus": integer,
  "percentage": integer
}
שדות
httpStatus

integer

קוד סטטוס של HTTP ששימש לביטול הבקשה.

הערך צריך להיות בין 200 ל-599 כולל.

percentage

integer

אחוז התנועה שיבוטל.

הערך צריך להיות בין 0 ל-100

RetryPolicy

המפרט של ניסיונות חוזרים. מציינים תנאי אחד או יותר שכלל הניסיון החוזר הזה חל עליהם. הערכים החוקיים הם:

ייצוג ב-JSON
{
  "retryConditions": [
    string
  ],
  "numRetries": integer
}
שדות
retryConditions[]

string

  • connect-failure: הנתב ינסה שוב להתחבר לשירותי ה-Backend אם החיבור ייכשל, למשל בגלל פסק זמן לחיבור.
  • refused-stream: הנתב ינסה שוב אם שירות הקצה העורפי יאפס את הזרם עם קוד השגיאה REFUSED_STREAM. סוג האיפוס הזה מציין שאפשר לנסות שוב.
  • בוטלה: הנתב ינסה שוב אם קוד הסטטוס של gRPC בכותרת התגובה מוגדר כבוטל
  • deadline-exceeded: הנתב ינסה שוב אם קוד הסטטוס של gRPC בכותרת התגובה מוגדר כ-deadline-exceeded
  • resource-exhausted: הנתב ינסה שוב אם קוד הסטטוס של gRPC בכותרת התגובה מוגדר כ-resource-exhausted
  • לא זמין: הנתב ינסה שוב אם קוד הסטטוס של gRPC בכותרת התגובה מוגדר כ'לא זמין'
numRetries

integer (uint32 format)

מציין את מספר הניסיונות החוזרים המותר. המספר הזה חייב להיות גדול מ-0. אם לא מציינים ערך, ברירת המחדל היא 1.

StatefulSessionAffinityPolicy

המפרט של זיקה לסשן מבוססת-Cookie עם שמירת מצב שבה מישור הנתונים מספק 'קובץ Cookie זמני' עם השם GSSA שמקודד מארח יעד ספציפי, וכל בקשה שמכילה את קובץ ה-Cookie הזה תופנה למארח הזה כל עוד מארח היעד פעיל ותקין.

ספריית ה-gRPC proxyless mesh או קובץ העזר החיצוני ינהלו את קובץ ה-Cookie הזמני, אבל קוד אפליקציית הלקוח אחראי להעתקת קובץ ה-Cookie מכל RPC בסשן אל ה-RPC הבא.

ייצוג ב-JSON
{
  "cookieTtl": string
}
שדות
cookieTtl

string (Duration format)

חובה. ערך ה-TTL של קובץ ה-Cookie בכותרת Set-Cookie שנוצרת על ידי מישור הנתונים. אפשר להגדיר את אורך החיים של קובץ ה-Cookie לערך בין 1 ל-86,400 שניות (24 שעות), כולל.

משך זמן בשניות עם עד תשע ספרות אחרי הנקודה העשרונית, שמסתיים ב-'s'. דוגמה: "3.5s".

Methods

create

יוצרת GrpcRoute חדש בפרויקט ובמיקום נתונים.

delete

מחיקת GrpcRoute יחיד.

get

קבלת פרטים של GrpcRoute יחיד.

getIamPolicy

מקבלת את מדיניות בקרת הגישה למשאב.

list

הצגת רשימה של GrpcRoutes בפרויקט ובמיקום נתונים.

patch

עדכון הפרמטרים של GrpcRoute יחיד.

setIamPolicy

הגדרת מדיניות בקרת הגישה במשאב שצוין.

testIamPermissions

מחזירה את ההרשאות שיש לפונקציית קריאה חוזרת (caller) במשאב שצוין.