פריסה למספר יעדים בו-זמנית

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

אפשר להשתמש בהטמעה מקבילה עם כל סוג יעד שנתמך ב-Cloud Deploy.

למה כדאי להשתמש בהטמעה מקבילה

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

הפריסה המקבילה הזו יכולה להיות חלק מתהליך רגיל של צינור העברת נתונים:
dev -> staging -> prod [prod1, prod2, prod3, prod4, ...].

משאבי Cloud Deploy שמשמשים לפריסה מקבילה

בפריסה מקבילה נעשה שימוש במשאבים המיוחדים הבאים של Cloud Deploy:

  • כמה יעדים

    יעד מרובה הוא יעד שהוגדר עם המאפיין multiTarget ברמה העליונה של קובץ ה-YAML של הגדרת היעד, ובמקום להפנות אל אשכול או שירות בזמן ריצה, הוא מפנה אל יעד אחד או יותר אחרים באמצעות multiTarget.targetIds.

  • יעדי צאצא

    יעד צאצא הוא כל יעד שמקושר ליעד מרובה באמצעות multiTarget.targetIds.

  • השקות של בקרים

    השקת בקר היא השקה שמתאימה למספר יעדים.

    מידע נוסף על מה שאפשר ומה שאי אפשר לעשות עם השקת בקר מופיע בקטע מגבלות.

  • השקות לילדים

    במאמר מגבלות מפורט מידע נוסף על מה שאפשר ומה שאי אפשר לעשות בהשקה מצומצמת לילדים.

הגדרת פריסה מקבילה

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

  • נכסים עם כמה יעדים כוללים את המאפיין multiTarget.
  • יעדי הבן לא כוללים את המאפיין multiTarget, אבל יש הפניה אליהם מהיעד המרובה באמצעות המאפיין multiTarget.targetIds.
  • אפשר להגדיר את היעד המרובה לאישור, אבל לא את יעדי הילדים, שלא יכולים לכלול את requireApproval:true.

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

הגדרת שיטת בידינג כוללת עם כמה יעדים

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

ההגדרה של כמה יעדים כוללת את המאפיין multiTarget. במודעות עם כמה יעדים אי אפשר להשתמש במאפיינים gke,‏ run או anthosCluster. ההגדרה של יעד מרובה זהה לכל סביבת זמן הריצה שבה אתם משתמשים.

בקובץ ה-YAML של צינור ההפצה או בקובץ YAML נפרד, יוצרים את הגדרת היעד הבסיסית, כולל multiTarget:

apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
 name: TARGET_NAME
description: TARGET_DESCRIPTION
multiTarget:
 targetIds: [ CHILD_TARGET1, CHILD_TARGET2, CHILD_TARGETn ]

בקובץ ה-YAML הזה...

  • TARGET_NAME הוא השם של היעד המרובה הזה, שמשמש במאפיין stages.targetId של הגדרת צינור העברת הנתונים.

  • CHILD_TARGET1, CHILD_TARGET2,...CHILD_TARGETn הם שמות היעדים המשניים שאליהם מתבצעת הפריסה הרב-יעדית הזו. כל שם תואם למאפיין name בהגדרת היעד של הילד.

הנוכחות של המאפיין multiTarget.targetIds הופכת את היעד הזה ליעד מרובה.

הגדרת יעדי הילדים

לכל יעד שזוהה כצאצא בהגדרת ריבוי היעדים, מגדירים יעד נוסף כצאצא:

בקובץ ה-YAML של צינור ההפצה או בקובץ YAML נפרד, יוצרים את הגדרת היעד הבסיסית:

GKE

apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
 name: CHILD_TARGET1
description: TARGET_DESCRIPTION
gke:
 cluster: projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_NAME

בקובץ ה-YAML הזה...

  • CHILD_TARGET1 הוא השם של יעד הצאצא הזה. השם תואם לאחד מהחברים ברשימת היעדים במאפיין multiTarget.targetIds בהגדרת היעד המרובה.

  • הערך של המאפיין gke.cluster הוא שם המשאב של האשכול שאליו מתייחס היעד הזה, כולל מזהה הפרויקט, האזור ושם האשכול.

היעד הזה מוגדר כמו יעד GKE רגיל. הדבר היחיד שהופך את היעד הזה ליעד צאצא הוא העובדה שהוא מוזכר במאפיין multiTarget.targetIds ביעד המרובה.

Cloud Run

apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
 name: CHILD_TARGET1
description: TARGET_DESCRIPTION
run:
 location: projects/PROJECT_ID/locations/REGION

בקובץ ה-YAML הזה...

  • CHILD_TARGET1 הוא השם של יעד הצאצא הזה. השם תואם לאחד מהחברים ברשימת היעדים במאפיין multiTarget.targetIds בהגדרת היעד המרובה.

  • הערך של המאפיין run.location הוא שם המשאב של שירות Cloud Run שאליו מתייחס היעד הזה, כולל מזהה הפרויקט והאזור.

היעד הזה מוגדר כמו יעד רגיל של Cloud Run. הדבר היחיד שהופך את היעד הזה ליעד צאצא הוא העובדה שהוא מפנה אל המאפיין multiTarget.targetIds ביעד המרובה.

אשכולות GKE מצורפים

apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
 name: CHILD_TARGET1
description: TARGET_DESCRIPTION
anthosCluster:
 membership: projects/PROJECT_ID/locations/global/memberships/MEMBERSHIP_NAME

בקובץ ה-YAML הזה...

יעד בהתאמה אישית

apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
 name: CHILD_TARGET1
description: TARGET_DESCRIPTION
customTarget:
  customTargetType: CUSTOM_TARGET_TYPE_NAME

בקובץ ה-YAML הזה...

העברת פרמטרים של פריסה ליעדים

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

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

מידע נוסף על פרמטרים של פריסה

יצירת הגרסה

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

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

הודעות Pub/Sub בתגובה לפעולות Cloud Deploy מבחינות בין השקות של בקרים לבין השקות של רכיבים.

מגבלות

  • יעד מרובה יכול לכלול עד 100 יעדי צאצא.

  • לכל יעדי הצאצא של יעד יחיד עם כמה יעדים צריך להיות זמן ריצה זהה של היעד (למשל, כולם GKE או כולם Cloud Run).

  • בצינור להעברת נתונים, לטירגוט צאצא יכול להיות רק טירגוט אב מרובה אחד.

  • למטרה מרובת-יעדים לא יכולים להיות יעדי צאצאים, והיא לא יכולה להפנות לעצמה או למטרה מרובת-יעדים אחרת כיעדי צאצאים.

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

  • אם יעדי הצאצא הם יעדים מותאמים אישית, כולם חייבים להפנות לאותו CustomTargetType.

  • למאגרי ברירת מחדל יש מגבלות על מספר החיבורים בו-זמנית, אבל למאגרים פרטיים אין.

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

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

    אם אתם צריכים לפרוס בו-זמנית ליותר יעדים מהמגבלה שצוינה במסמכי התיעוד של Cloud Build, יש לכם שתי אפשרויות:

סביבות הפעלה ופריסה מקבילה

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

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

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

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

מידע נוסף על סביבות הפעלה ב-Cloud Deploy זמין במאמר שימוש בסביבות הפעלה של Cloud Deploy.

חזרה מפריסה מקבילה

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

אישורים לפריסה מקבילה

בדומה לכל היעדים, אתם יכולים להגדיר את הפריסה המקבילה כך שיידרשו אישורים. עם זאת, בפריסה מקבילה אפשר להגדיר אישור רק במודול multi-target. האישור או הדחייה משפיעים על כל יעדי הצאצאים יחד.

צפייה בהטמעה מקבילה במסוף Google Cloud

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

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

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

שימוש בפריסה מקבילה עם אסטרטגיית פריסה

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

המאמרים הבאים