פריסות של גרסה ראשונית (canary) בהתאמה אישית

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

איך פועלים פריסות קנרית בהתאמה אישית

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

בודקים שיש לכם את ההרשאות הנדרשות

בנוסף להרשאות אחרות של ניהול זהויות והרשאות גישה שנדרשות לשימוש ב-Cloud Deploy, אתם צריכים את ההרשאות הבאות כדי לבצע פעולות נוספות שעשויות להידרש לפריסה של גרסה ראשונית (canary):

  • clouddeploy.rollouts.advance
  • clouddeploy.rollouts.ignoreJob
  • clouddeploy.rollouts.cancel
  • clouddeploy.rollouts.retryJob
  • clouddeploy.jobRuns.get
  • clouddeploy.jobRuns.list
  • clouddeploy.jobRuns.terminate

במאמר תפקידים והרשאות ב-IAM מוסבר אילו תפקידים זמינים כוללים את ההרשאות האלה.

הכנת skaffold.yaml

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

הדוגמה הבאה היא של הגדרת skaffold.yaml שמשמשת קנרי מותאם אישית:

apiVersion: skaffold/v4beta7
kind: Config
profiles:
- name: canary-25
  manifests:
    rawYaml:
    - canary-25-resources.yaml
- name: canary-50
  manifests:
    rawYaml:
    - canary-50-resources.yaml
- name: stable
  manifests:
    rawYaml:
    - stable-resources.yaml

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

כשמגדירים קנרי בהתאמה אישית, מציינים את ההגדרות הבאות בהגדרת צינור ההפצה:

  • שמות של שלבי השקה

    בפריסת קנרית אוטומטית לחלוטין, Cloud Deploy נותן שמות לשלבים (לדוגמה, canary-25, canary-75, stable). לעומת זאת, בפריסת קנרית בהתאמה אישית, אפשר לתת לכל שלב שם כלשהו, כל עוד הוא ייחודי בין כל השלבים של פריסת הקנרית הזו, והוא עומד בהגבלות על מזהי משאבים. אבל שם השלב הסופי (100%) חייב להיות stable.

  • יעדים באחוזים לכל שלב

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

  • פרופילי Skaffold לשימוש בשלב

    אפשר להשתמש בפרופיל Skaffold נפרד לכל שלב, או באותו פרופיל, או בכל שילוב אחר. כל פרופיל יכול להשתמש בהגדרת שירות שונה של Cloud Run. אפשר גם להשתמש ביותר מפרופיל אחד בשלב מסוים. ‫Cloud Deploy משלב אותם.

  • האם יש משימת אימות לשלב

  • האם יש משימות לפני או אחרי הפריסה לשלב

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

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

strategy:
  canary:
    # Custom configuration for each canary phase
    customCanaryDeployment:
      phaseConfigs:
      - phaseId: "PHASE1_NAME"
        percentage: PERCENTAGE1
        profiles: [ "PROFILE_NAME" ]
        verify:
          tasks: [TASKS]
        predeploy:
          tasks: [TASKS]
        postdeploy:
          tasks: [TASKS]
      - 
      - phaseId: "stable"
        percentage: 100
        profiles: [ "LAST_PROFILE_NAME" ]
        verify:
          tasks: [TASKS]
        predeploy:
          tasks: [TASKS]
        postdeploy:
          tasks: [TASKS]

ב-YAML הזה

  • PHASE1_NAME

    הוא שם השלב. כל שם של שלב צריך להיות ייחודי.

  • [ "PROFILE_NAME" ]

    השם של הפרופיל שבו רוצים להשתמש בשלב. אתם יכולים להשתמש באותו פרופיל לכל שלב, או בפרופיל אחר לכל שלב, או בכל שילוב אחר. בנוסף, אפשר לציין יותר מפרופיל אחד. ‫Cloud Deploy משתמש בכל הפרופילים שציינתם, בנוסף לפרופיל או למניפסט שמשמשים את השלב הכולל.

  • stable

    השלב האחרון חייב להיקרא stable.

  • PERCENTAGE1

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

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

  • כדי להפעיל ווים של פריסה מוקדמת, צריך להגדיר את פסקה predeploy. אם תעשו את זה, תתווסף predeploy משימה לשלב.

  • כדי להפעיל postdeploy hooks, צריך להגדיר את ה-stanza‏ postdeploy. אם תעשו את זה, תתווסף postdeploy משימה לשלב.

  • הנכס tasks בקטע verify, predeploy ו-postdeploy מורכב ממשימה אחת או יותר שיופעלו כחלק מהעבודה הזו. כל המשימות שהוגדרו יפעלו ברצף לפי הסדר שבו הן הוגדרו.

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

שימו לב: ההגדרה של קנרי מותאם אישית לא כוללת קטע runtimeConfig. אם כוללים את runtimeConfig, זה נחשב קנרי אוטומטי בהתאמה אישית.

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