Knative serving מאפשר לכם לציין אילו גרסאות יקבלו תעבורת נתונים, ומה יהיה אחוז תעבורת הנתונים שיתקבל בכל גרסה. התכונה הזו מאפשרת לחזור לגרסה קודמת, להשיק גרסה בהדרגה (שנקראת גם פריסת כחול-ירוק (blue-green deployment)) ולפצל את התנועה בין כמה גרסאות. בדף הזה מוסבר איך להשתמש בתכונה הזו כדי לנהל את התנועה לגרסאות של Knative Serving.
חזרה לגרסה קודמת
כדי לחזור לגרסה קודמת:
המסוף
נכנסים אל Knative serving במסוף Google Cloud :
מאתרים את השירות ברשימת השירותים ולוחצים עליו.
לוחצים על הכרטיסייה Revisions (גרסאות) כדי לראות את רשימת הגרסאות הנוכחיות של השירות הזה.
ברשימת הגרסאות, לוחצים על סמל האליפסה משמאל לגרסה שרוצים לבטל:
לוחצים על ניהול תנועה כדי להציג את הטופס לניהול תנועה:
- בתפריט הנפתח, בוחרים את הגרסה הקודמת שאליה רוצים לחזור.
- מגדירים את אחוז התנועה של הגרסה הקודמת ל-100.
- מגדירים את אחוז החשיפות של הגרסה שמוצגת כרגע ל-0.
- לוחצים על Save.
שורת הפקודה
משתמשים בפקודה הבאה:
gcloud run services update-traffic SERVICE --to-revisions REVISION=100
- מחליפים את SERVICE בשם השירות.
- מחליפים את REVISION בשם של הגרסה שרוצים לחזור אליה.
YAML
אפשר להוריד את ההגדרה של שירות קיים לקובץ YAML באמצעות הפקודה gcloud run services describe והדגל --format=export.
אחר כך תוכלו לשנות את קובץ ה-YAML ולפרוס את השינויים האלה באמצעות הפקודה gcloud run services replace.
חשוב לוודא שמשנים רק את המאפיינים שצוינו.
מורידים את ההגדרה של השירות לקובץ בשם
service.yamlבסביבת העבודה המקומית:gcloud run services describe SERVICE --format export > service.yaml
מחליפים את SERVICE בשם של שירות Knative serving.
בקובץ המקומי, מעדכנים את המאפיין
trafficשנמצא בקטעspec:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: ... traffic: - revisionName: REVISION percent: 100החלפה
- REVISION בשם של הגרסה שרוצים לחזור אליה.
מחליפים את השירות בהגדרות החדשות באמצעות הפקודה הבאה:
gcloud run services replace service.yaml
השקה הדרגתית של שינוי
כדי להשיק גרסה חדשה בהדרגה (פריסת כחול-ירוק):
המסוף
נכנסים אל Knative serving במסוף Google Cloud :
מאתרים את השירות ברשימת השירותים ולוחצים עליו.
לוחצים על פריסת גרסה חדשה.
ממלאים את טופס הפריסה לפי הצורך, אבל מוודאים שתיבת הסימון עם התווית Serve this revision immediately (הצגת הגרסה הזו באופן מיידי) לא מסומנת.
לוחצים על פריסה.
לוחצים על ניהול תנועה.
הגרסה החדשה מופיעה ברשימה, אבל מוגדר לה אחוז של 0: כרגע היא לא מציגה מודעות לאף גולש. בטופס:
- מגדירים את האחוז הרצוי, למשל 5. שימו לב: האחוז של הגרסה שמוצגת כרגע יופחת אוטומטית באותו סכום.
- לוחצים על Save.
- חוזרים על השלבים של ניהול התנועה, אבל משנים את אחוזי התנועה ומגדילים אותם לפי הצורך לגרסה החדשה. אין צורך לפרוס מחדש כדי לשנות את אחוזי התנועה.
שורת הפקודה
כדי לפרוס את הגרסה שרוצים להשיק בהדרגה, צריך להגדיר אותה כך שלא תקבל תנועה בהתחלה. לשם כך משתמשים בפקודה
updateעם הפרמטר--no-traffic:gcloud run deploy --image IMAGE --no-traffic
מחליפים את IMAGE בתמונה שרוצים לפרוס.
מציינים את אחוז התנועה שהגרסה החדשה צריכה לטפל בו, לדוגמה, 5 אחוזים:
gcloud run services update-traffic SERVICE --to-revisions REVISION=PERCENTAGE
- מחליפים את SERVICE בשם השירות.
- מחליפים את REVISION בשם של הגרסה שפורסתם בהדרגה. כדי לציין את הגרסה האחרונה, אפשר להשתמש ב-
LATEST, לדוגמה,LATEST=5. - מחליפים את PERCENTAGE באחוז התנועה שרוצים לשלוח לגרסה החדשה, לדוגמה,
5כדי לשלוח 5% מהתנועה.
אחרי שהביצועים של הגרסה ישביעו רצון, חוזרים על שלב
update-trafficשלמעלה, אבל מגדילים את ערך האחוז לפי הצורך.
YAML
אפשר להוריד את ההגדרה של שירות קיים לקובץ YAML באמצעות הפקודה gcloud run services describe והדגל --format=export.
אחר כך תוכלו לשנות את קובץ ה-YAML ולפרוס את השינויים האלה באמצעות הפקודה gcloud run services replace.
חשוב לוודא שמשנים רק את המאפיינים שצוינו.
מורידים את ההגדרה של השירות לקובץ בשם
service.yamlבסביבת העבודה המקומית:gcloud run services describe SERVICE --format export > service.yaml
מחליפים את SERVICE בשם של שירות Knative serving.
מבצעים את שינויי ההגדרה הרצויים בשירות, כפי שמתואר בדפי ההגדרה השונים, ומציינים את שם הגרסה שרוצים לגרסה החדשה:
apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE template: metadata: annotations: ... name: REVISION-NAME ``` Replace- REVISION-NAME בשם שרוצים לתת לגרסה החדשה.
מתחת למאפיין
spec, מאתרים את המאפייןtrafficומעדכנים אותו כך שהגרסה החדשה תציג רק חלק קטן מהתנועה:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: ... traffic: - revisionName: REVISION-NEW percent: PERCENT-NEW - revisionName: REVISION-FORMER percent: PERCENT-FORMERהערה: סכום האחוזים צריך להיות 100. החלפה
- REVISION-NEW בשם של הגרסה שאתם משיקים בהדרגה.
- REVISION-FORMER עם השם של הגרסה שמוצגת כרגע.
- PERCENT-NEW עם אחוז התנועה שרוצים להפנות לגרסה החדשה,
לדוגמה, משתמשים ב-
10כדי להפנות 10% מהתנועה לגרסה הזו. - PERCENT-FORMER עם אחוז התנועה שרוצים לשלוח לגרסה הקודמת
חלוקת התנועה בין כמה גרסאות
כדי לפצל את התנועה בין שתי גרסאות או יותר:
המסוף
נכנסים אל Knative serving במסוף Google Cloud :
מאתרים את השירות ברשימת השירותים ולוחצים עליו.
לוחצים על ניהול תנועה.
הגרסה החדשה שמוצגת כרגע מופיעה ברשימה. בטופס:
- מגדירים את אחוז הגרסה שמוצגת כרגע לחלוקה הרצויה.
- בוחרים אחת מהגרסאות הקודמות באמצעות הרשימה הנפתחת ומגדירים את אחוז החלוקה הרצוי.
- כדי לפצל את התנועה בין כמה גרסאות, לוחצים על הוספת גרסה, בוחרים את הגרסה הרצויה ומגדירים את אחוז הפיצול הרצוי.
- לוחצים על Save.
שורת הפקודה
מציינים את הגרסאות ואת אחוז התנועה לכל גרסה ברשימה מופרדת בפסיקים:
gcloud run services update-traffic SERVICE --to-revisions LIST
מחליפים את:
- SERVICE בשם של השירות.
- LIST עם רשימה של גרסאות שמופרדות בפסיקים שרוצים להפנות אליהן תנועה, ואחוז התנועה המתאים לכל גרסה, כך שהסכום הכולל יהיה 100 אחוז:
REVISION1=PERCENTAGE1,REVISION2=PERCENTAGE2,REVISIONn=PERCENTAGEn
לדוגמה,hello2-00005-red=25,hello2-00001-bod=25,hello2-00002-nan=50.
YAML
אפשר להוריד את ההגדרה של שירות קיים לקובץ YAML באמצעות הפקודה gcloud run services describe והדגל --format=export.
אחר כך תוכלו לשנות את קובץ ה-YAML ולפרוס את השינויים האלה באמצעות הפקודה gcloud run services replace.
חשוב לוודא שמשנים רק את המאפיינים שצוינו.
מורידים את ההגדרה של השירות לקובץ בשם
service.yamlבסביבת העבודה המקומית:gcloud run services describe SERVICE --format export > service.yaml
מחליפים את SERVICE בשם של שירות Knative serving.
בקובץ המקומי, מעדכנים את מאפיין
trafficכך שהגרסה החדשה תשרת רק כמות קטנה של תנועה:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: ... traffic: - revisionName: REVISION-A percent: PERCENT-A - revisionName: REVISION-B percent: PERCENT-B - revisionName: REVISION-C percent: PERCENT-Cהערה: סכום האחוזים צריך להיות 100. החלפה
- REVISION-A, REVISION-B, REVISION-C עם הגרסאות שאתם מקצים להן תנועה.
- PERCENT-A, PERCENT-B, PERCENT-C עם האחוז של הגרסה המתאימה.
מחליפים את השירות בהגדרות החדשות באמצעות הפקודה הבאה:
gcloud run services replace service.yaml
שליחת כל התנועה לגרסה האחרונה
כשפורסים גרסה חדשה, אפשר להגדיר שהגרסה הזו וכל הגרסאות העתידיות יציגו 100% מהתנועה בהקדם האפשרי, בלי להתחשב בחלוקת התנועה הקיימת:
המסוף
נכנסים אל Knative serving במסוף Google Cloud :
מאתרים את השירות ברשימת השירותים ולוחצים עליו.
לוחצים על פריסת גרסה חדשה.
ממלאים את טופס הפריסה לפי הצורך, ומקפידים לסמן את התיבה Serve this revision immediately (הצגת הגרסה הזו באופן מיידי). הפעולה הזו תשנה את פיצול התנועה הקיים, והגרסה החדשה תוצג ל-100% מהתנועה.
לוחצים על פריסה.
שורת הפקודה
כדי לשלוח את כל התנועה לגרסה האחרונה שהופעלה:
gcloud run services update-traffic SERVICE --to-latest
מחליפים את SERVICE בשם השירות.
YAML
אפשר להוריד את ההגדרה של שירות קיים לקובץ YAML באמצעות הפקודה gcloud run services describe והדגל --format=export.
אחר כך תוכלו לשנות את קובץ ה-YAML ולפרוס את השינויים האלה באמצעות הפקודה gcloud run services replace.
חשוב לוודא שמשנים רק את המאפיינים שצוינו.
מורידים את ההגדרה של השירות לקובץ בשם
service.yamlבסביבת העבודה המקומית:gcloud run services describe SERVICE --format export > service.yaml
מחליפים את SERVICE בשם של שירות Knative serving.
בקובץ המקומי, מעדכנים את המאפיין
trafficשנמצא בקטעspec:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: ... traffic: - latestRevision: true percent: 100מחליפים את השירות בהגדרות החדשות באמצעות הפקודה הבאה:
gcloud run services replace service.yaml
שימוש בתגים לבדיקה, להעברת תנועה ולביטול שינויים
אחרי שפורסים שירות, אפשר ליצור גרסה חדשה ולהקצות לה תג שמאפשר גישה לגרסה בכתובת URL ספציפית בלי להפנות אליה תנועה. אחר כך תוכלו להשתמש בתג הזה כדי להעביר בהדרגה את התנועה לגרסה המתוקנת שתויגה, וכדי לבטל את השינויים בגרסה המתוקנת שתויגה.
תרחיש נפוץ לשימוש בתכונה הזו הוא בדיקה של גרסה חדשה של שירות לפני שהיא מתחילה לטפל בתעבורה. זהו רצף הפעולות האופייני:
- הרצת בדיקות שילוב בקונטיינר במהלך הפיתוח.
- פריסת מאגר התגים ב Google Cloud פרויקט שמשמש רק לבדיקות, לא להצגת מודעות, ובדיקה מול גרסה מתוקנת עם תגים.
- פורסים אותו בסביבת הייצור, בלי להציג תנועה, ובודקים אותו מול גרסה מתויגת בסביבת הייצור.
- מעבירים את התנועה לגרסה המתויגת.
פריסת גרסה חדשה עם תגים
כדי לפרוס גרסה חדשה של שירות קיים בסביבת ייצור:
gcloud run deploy myservice --image IMAGE_URL --no-traffic --tag TAG_NAME
מחליפים את:
- IMAGE_URL עם כתובת ה-URL של התמונה
- TAG_NAME בשם התג באותיות קטנות
התג מאפשר לכם לבדוק ישירות את הגרסה החדשה בכתובת URL ספציפית, בלי להפנות אליה תנועה. כתובת ה-URL לבדיקה מתחילה בשם התג שסיפקתם:
http://{TAG_NAME}---{SERVICE_NAME}.{NAMESPACE}.kuberun.{EXTERNAL_IP}.nip.io
לדוגמה, אם השתמשתם בשם התג green בשירות myservice, תבדקו את הגרסה המתויגת בכתובת ה-URL:
https://green---myservice.default.kuberun.11.111.11.111.nip.io
העברת תנועה לגרסה מתויגת
אחרי שמוודאים שהגרסה החדשה פועלת בצורה תקינה, אפשר להתחיל להעביר אליה תנועה באמצעות Google Cloud המסוף, שורת הפקודה gcloud או קובץ YAML:
המסוף
נכנסים אל Knative serving במסוף Google Cloud :
מחפשים את השירות ברשימת השירותים ולוחצים עליו:
בוחרים את הגרסה המתויגת שאליה רוצים לשלוח תנועה:
לוחצים על ניהול תנועה.
מאתרים את שם הגרסה שתויגה: היא מופיעה ברשימה אבל עם אחוז 0: כרגע לא מופנית אליה תנועה. בטופס Manage traffic* (ניהול תנועה):
- מגדירים את האחוז הרצוי, למשל 5. שימו לב: האחוז של הגרסה שמוצגת כרגע יופחת אוטומטית באותו סכום.
- לוחצים על Save.
- במהלך שעות או ימים, לפי הצורך, חוזרים על השלבים של ניהול תנועת הגולשים, אבל עם אחוזים שונים. מגדילים את האחוז לפי הצורך לגרסה המתויגת. אין צורך לפרוס מחדש כדי לשנות את אחוזי התנועה.
שורת הפקודה
כדי להעביר תנועה לתג גרסה ספציפי:
gcloud run deploy update-traffic myservice --tag TAG_NAME=TRAFFIC_PERCENT
החלפה
- TAG_NAME בשם התג שאליו מעבירים את התנועה
- TRAFFIC_PERCENT עם אחוז התנועה שרוצים שהגרסה המתויגת תציג, לדוגמה,
1.
YAML
אפשר להוריד את ההגדרה של שירות קיים לקובץ YAML באמצעות הפקודה gcloud run services describe והדגל --format=export.
אחר כך תוכלו לשנות את קובץ ה-YAML ולפרוס את השינויים האלה באמצעות הפקודה gcloud run services replace.
חשוב לוודא שמשנים רק את המאפיינים שצוינו.
מורידים את ההגדרה של השירות לקובץ בשם
service.yamlבסביבת העבודה המקומית:gcloud run services describe SERVICE --format export > service.yaml
מחליפים את SERVICE בשם של שירות Knative serving.
מבצעים את השינויים הרצויים בהגדרות השירות, כפי שמתואר בדפי ההגדרות השונים.
מתחת למאפיין
spec, מאתרים את המאפייןtrafficומעדכנים אותו עבור הגרסה המתויגת כך שהגרסה המתויגת תציג רק כמות קטנה של תנועה:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: ... traffic: - revisionName: REVISION tag: TAG_NAME percent: PERCENT-NEW - revisionName: REVISION-FORMER percent: PERCENT-FORMERהערה: סכום האחוזים צריך להיות 100. החלפה
- REVISION בשם של הגרסה המתויגת.
- TAG_NAME בשם התג שאתם משיקים בהדרגה.
- PERCENT-NEW עם אחוז התנועה שרוצים להפנות לגרסה המתויגת, לדוגמה, משתמשים ב-
10כדי להפנות 10% מהתנועה לגרסה הזו. - REVISION-FORMER עם השם של הגרסה שמוצגת כרגע.
- PERCENT-FORMER עם אחוז התנועה שרוצים לשלוח לגרסה הקודמת
מחליפים את השירות בהגדרות החדשות באמצעות הפקודה הבאה:
gcloud run services replace service.yaml