במאמר הזה מוסבר איך להגדיר פריסות קנרית מותאמות אישית ולהשתמש בהן כדי לפרוס את האפליקציות שלכם לכל סוגי היעדים באמצעות Cloud Deploy.
איך פועלים פריסות קנרית בהתאמה אישית
כשפורסים באמצעות אסטרטגיית פריסה של גרסה ראשונית (canary) מותאמת אישית, Cloud Deploy לא משנה את המניפסטים כדי להקל על הגדרת איזון תעבורת הנתונים שנבחרה. במקום זאת, אתם אחראים לספק מניפסטים שמוחלים על זמן הריצה של היעד בכל שלב של קנרי.
בודקים שיש לכם את ההרשאות הנדרשות
בנוסף להרשאות אחרות של ניהול זהויות והרשאות גישה שנדרשות לשימוש ב-Cloud Deploy, אתם צריכים את ההרשאות הבאות כדי לבצע פעולות נוספות שעשויות להידרש לפריסה של גרסה ראשונית (canary):
clouddeploy.rollouts.advanceclouddeploy.rollouts.ignoreJobclouddeploy.rollouts.cancelclouddeploy.rollouts.retryJobclouddeploy.jobRuns.getclouddeploy.jobRuns.listclouddeploy.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, זה נחשב קנרי אוטומטי בהתאמה אישית.
המאמרים הבאים
אפשר לנסות את המדריך להתחלת העבודה עם פריסה של גרסה ראשונית (canary).