אוטומציה של הפריסה

במסמך הזה מופיעה סקירה כללית של אוטומציה של פריסה.

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

מידע נוסף על המשאבים שמשמשים לאוטומציה של הפצה ב-Cloud Deploy

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

פעולות שאפשר להפוך לאוטומטיות

ב-Cloud Deploy, אפשר להפוך לאוטומטיות את הפעולות הבאות שקשורות להפצה ולהשקה:

  • קידום גרסה באופן אוטומטי

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

  • קידום גרסה לפי לוח זמנים

    אתם יכולים להגדיר את Cloud Deploy כך שיקדם את הגרסה שלכם בהתאם ללוח זמנים של cron.

  • העברת השקה לשלב הבא

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

  • תיקון פריסה

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

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

איך אוטומציה עובדת?

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

זהו התהליך הכללי להגדרה ולהפעלה של אוטומציה:

  1. מגדירים פעולות אוטומטיות

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

  2. אתם רושמים את האוטומציה הזו באמצעות gcloud deploy apply.

    כך נוצר משאב האוטומציה.

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

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

    אם ההשקה תצליח והאוטומציה תהיה promoteReleaseRule:

    1. ההפעלה ממתינה להצלחת ההשקה ביעד המקור. יעד המקור הוא selector.targets שהוגדר לפעולות אוטומטיות, ולא ב-AutomationRule.

    2. אם מוגדר זמן wait, ההרצה ממתינה גם לזמן הזה.

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

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

    1. ההרצה ממתינה לשלב המקור שזוהה, אם יש כזה.

      המאפיין sourcePhase הוא אופציונלי, ואם לא מציינים שלבי מקור, כל שלב בהשקה מתקדם באופן אוטומטי. ההתקדמות האוטומטית של השלב מתרחשת כשהשלב במקור הוא IN_PROGRESS, בכפוף לזמן wait.

    2. אם מוגדר זמן wait, ההרצה ממתינה גם לזמן הזה.

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

    3. ההשקה תתקדם אוטומטית משלב המקור לשלב הבא בהשקה.

    4. אם יש שלב נוסף של מקור, הוא יטופל באותו אופן, כולל אותו זמן המתנה, אם רלוונטי.

    אם ההשקה נכשלת, ויש אוטומציה עם כלל repairRollout:

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

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

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

    2. אם הניסיון הראשון נכשל, ההפעלה ממתינה למשך הזמן שמוגדר wait, ואז מנסה שוב.

    3. הניסיונות החוזרים יתבצעו עד ש-Cloud Deploy ימצה את attempts הניסיונות החוזרים.

      אם כל הניסיונות נכשלים, והמכסה של attempts מוצתה, ההשקה נכשלת.

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

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

משאבים בנושא אוטומציה

יש שני משאבים ב-Cloud Deploy שמיועדים במיוחד לאוטומציה:

  • אוטומציה

    Automation הוא משאב צאצא של צינור העברת נתונים, והוא כולל את הפרטים הבאים:

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

    ההגדרה של משאב האוטומציה מתוארת במסמך מידע על משאב האוטומציה.

    כשמריצים את הפקודה gcloud deploy apply בקובץ שכולל הגדרת אוטומציה (kind: Automation),‏ Cloud Deploy יוצר משאב אוטומציה שמקשר בין צינור העברת נתונים ויעד או יעדים לבין כללי אוטומציה אחד או יותר.

  • הרצת פעולה אוטומטית

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

    הפעלת האוטומציה נוצרת כשאוטומציה מופעלת.

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

כללי אוטומציה

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

מידע נוסף על כללי אוטומציה

תפקידים והרשאות שנדרשים בניהול הזהויות והרשאות הגישה (IAM)

בנוסף להרשאות שנדרשות להרצת צינור אספקת נתונים של Cloud Deploy ולביצוע המשימות שרוצים להפוך לאוטומטיות (כמו קידום השקה), יש כמה הרשאות שנדרשות כדי לבצע פעולות מסוימות במשאבי Automation ו-AutomationRun:

  • clouddeploy.automations.create
  • clouddeploy.automations.delete
  • clouddeploy.automations.get
  • clouddeploy.automations.list
  • clouddeploy.automations.update
  • clouddeploy.automationRuns.cancel
  • clouddeploy.automationRuns.get
  • clouddeploy.automationRuns.list

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

במאמר תפקידים והרשאות ב-IAM מופיע מידע נוסף, כולל התפקידים ב-Cloud Deploy שכוללים את ההרשאות האלה.

יצירת פעולות אוטומטיות

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

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

הגדרת פעולות אוטומטיות

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

הגדרת כלל אוטומטי

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

במאמר שימוש בכללים אוטומטיים מפורטים כל הכללים הזמינים.

השעיית פעולה אוטומטית

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

  1. בהגדרות Automation, מעדכנים את המאפיין suspended ל-true.

  2. מריצים את הפקודה gcloud deploy apply מול קובץ ההגדרות.

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

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