במאמר הזה מוסבר איך להריץ תוכניות או פעולות שרירותיות לפני או אחרי הפריסה.
אתם יכולים להגדיר את Cloud Deploy כך שיבצע פעולות לפני הפריסה, פעולות אחרי הפריסה או את שתי הפעולות. התוכניות האלה, שמופעלות בצורה הזו, נקראות 'ווים'. ה-hooks שלפני הפריסה ואחרי הפריסה מופעלים כמשימות לפני הפריסה ואחרי הפריסה בהשקה.
אפשר להגדיר כל ווּב-הוּק להפעלה בסביבת ביצוע ספציפית של Cloud Deploy, אבל אם אתם פורסים ל-Google Kubernetes Engine, אתם יכולים גם להגדיר אותו להפעלה באשכול GKE שבו אתם פורסים את האפליקציה.
ההנחה היא ש-deploy hooks הם אידמפוטנטיים. אם מריצים פעולה מסוימת יותר מפעם אחת, לא תהיה לכך השפעה נוספת.
איך פועלים ווים של פריסה?
בקטע הבא מוסבר איך פועלות נקודות ההרחבה של הפריסה ב-Cloud Deploy ואיך מגדירים אותן:
אתם מגדירים ווּקים בשלב אחד או יותר בתהליך של צינור העברת הנתונים.
לפני שהמשימה של פריסת ההשקה מתבצעת, Cloud Deploy מריץ את כל המשימות שהוגדרו בהגדרה של
predeployבהתקדמות של צינור עיבוד הנתונים.ה-hook
predeployתמיד מופעל כעבודה הראשונה בשלב.אחרי שמריצים את משימת הפריסה של ההשקה, Cloud Deploy מריץ את כל המשימות שהוגדרו בהגדרת
postdeployבהתקדמות של צינור עיבוד הנתונים.
הפעולות של וו פריסה מבוצעות בסביבת ההפעלה של Cloud Deploy.
שימוש ב-deploy hooks עם פריסה של גרסה ראשונית (canary)
כשמגדירים deploy hooks לפריסה של גרסה ראשונית (canary), יש כמה דברים שחשוב לדעת:
בשלב של צינור העברת הנתונים, ההגדרה של ה-hook (
predeployו-postdeploy) נמצאת בקטעstrategy.canary.canaryDeploymentאוstrategy.canary.customCanaryDeployment.phaseConfigs, ולא בקטעstrategy.standard.בפריסת קנרית אוטומטית, ווים של
predeployמופעלים לפני הפריסה רק בשלב הראשון, וווים שלpostdeployמופעלים אחרי הפריסה רק בשלב האחרון (יציב).
הגדרת צינור עיבוד הנתונים להרצת hooks
מגדירים את ה-hooks לפני ואחרי הפריסה בשלב אחד או יותר של התקדמות בצינור.
כך מגדירים שלבי hooks לפני ואחרי פריסה בשלב של צינור עיבוד נתונים כשמשתמשים באסטרטגיית פריסה של standard:
serialPipeline:
stages:
- targetId: hooks-staging
profiles: []
strategy:
standard:
predeploy:
tasks: [TASKS]
postdeploy:
tasks: [TASKS]
בקובץ ה-YAML הזה:
TASKS
רשימה של משימות אחת או יותר שרוצים להפעיל כחלק מה-hooks של predeploy או postdeploy. אם מציינים יותר ממשימה אחת, הן מתבצעות ברצף, לפי הסדר שבו הן מוגדרות. העבודה (לפני הפריסה או אחרי הפריסה) נכשלת במשימה הראשונה שנכשלת, והמשימות שנותרו לא מופעלות.
הפעלת ה-hooks באשכול האפליקציות
כברירת מחדל, ווים של פריסה פועלים בסביבת ההפעלה של Cloud Deploy. אפשר גם להגדיר את Skaffold להפעיל deploy hooks באותו אשכול שבו האפליקציה פועלת.
כדי להפעיל hooks באשכול האפליקציות, צריך להגדיר אותם כ-customActions בקובץ skaffold.yaml, ולהפנות אליהם באמצעות actions בקטע predeploy או postdeploy בהגדרת השלב של צינור ההפצה:
serialPipeline:
stages:
- targetId: hooks-staging
profiles: []
strategy:
standard:
predeploy:
actions: ["my-predeploy-action"]
postdeploy:
actions: ["my-postdeploy-action"]
האפשרות הזו זמינה רק לפריסות ב-GKE, ולא ב-Cloud Run. פריסות ב-Cloud Run יכולות להריץ hooks רק בסביבת ההפעלה של Cloud Deploy.
כדי להגדיר את ה-hook להרצה באשכול, צריך לכלול את ה-stanza executionMode.kubernetesCluster בקובץ ההגדרות skaffold.yaml, בתוך ה-stanza customActions של כל פעולה שרוצים להריץ באשכול:
customActions:
- name: ACTION_NAME
containers:
- name: CONTAINER_NAME
image: IMAGE
command: [COMMANDS_TO_RUN]
args: [LIST_OF_ARGS]
executionMode:
kubernetesCluster: {}