במאמר הזה מוסבר איך משתמשים במדיניות פריסה כדי להגביל פעולות ידניות או אוטומטיות בצינור אספקה.
מדיניות פריסה היא משאב של Cloud Deploy שבו אפשר להשתמש כדי להגביל פעולות ידניות או אוטומטיות שמתבצעות בצינור עיבוד נתונים או ביעד נבחרים (או בכל צינורות עיבוד הנתונים או היעדים).
אילו התנהגויות אפשר להגביל?
אתם יכולים ליצור כללי פריסה כדי להגביל את Cloud Deploy או למנוע ממנו לבצע פעולות מסוימות בהשקות. לדוגמה, מדיניות יכולה למנוע יצירת פריסה עבור צינור מסירה נתון במהלך תקופה מסוימת. לדוגמה, אפשר להשתמש במאפיין הזה להגבלות עונתיות.
איך מתבצעת הערכה של כללי המדיניות ואיך אוכפים אותם
לכל פעולה ידנית או אוטומטית, Cloud Deploy מבצע את הפעולות הבאות:
בודק את ההרשאות לניהול זהויות וגישה (IAM).
אם למשתמש או לחשבון השירות אין הרשאות IAM מתאימות, הפעולה לא מתבצעת ואין צורך להעריך את מדיניות הפריסה.
הפונקציה בודקת אם יש מדיניות רלוונטית לטירגוט או לצינור העברת הנתונים, ואם יש מדיניות כזו, היא מוערכת.
Cloud Deploy בודק את הפעולה שמתבצעת כדי לראות אם הכלל הזה רלוונטי.
כלומר, האם סוג הפעולה והגורם המפעיל תואמים למדיניות?
Cloud Deploy בודק את טווחי התאריכים והשעות שהוגדרו במדיניות כדי לראות אם המדיניות הזו בתוקף בזמן הבקשה.
אם המדיניות בתוקף והכלל חל על צינור ההעברה או על היעד והפעולה, הכלל נאכף והפעולה נחסמת.
דרישות ומגבלות
לכל מדיניות צריך להיות לפחות סלקטור אחד.
לכל מדיניות צריך להיות לפחות כלל אחד.
כל מזהי הכללים חייבים להיות ייחודיים במדיניות פריסה.
כל כלל חייב לכלול לפחות
timeWindowsאחד, ובתוךtimeWindowsצריך להיותoneTimeWindowsאוweeklyWindows.פרטים נוספים על שימוש בבלוקים של זמן מופיעים במאמר בנושא תאריכים ושעות.
אפשר להגדיר עד 1,000 מדיניות פריסה לכל פרויקט או מיקום.
תפקידים והרשאות שנדרשים בניהול הזהויות והרשאות הגישה (IAM)
בנוסף להרשאות שנדרשות כדי להפעיל צינור העברה (pipeline) של Cloud Deploy ולבצע את המשימות שמוגבלות על ידי המדיניות, יש כמה הרשאות שנדרשות כדי לבצע פעולות מסוימות במשאב המדיניות:
clouddeploy.deployPolicies.createclouddeploy.deployPolicies.deleteclouddeploy.deployPolicies.getclouddeploy.deployPolicies.listclouddeploy.deployPolicies.updateclouddeploy.deployPolicies.override
ההרשאות האלה כלולות בתפקיד roles/clouddeploy.policyAdmin.
בנוסף, התפקיד roles/clouddeploy.policyOverrider כולל את ההרשאה .override.
יצירת מדיניות פריסה
כדי ליצור משאב של מדיניות פריסה, מבצעים את השלבים הבאים:
יוצרים קובץ YAML עם ההגדרה של מדיניות הפריסה.
ההגדרה כוללת כותרת שמזהה את המשאב כמדיניות פריסה. השדה
nameהוא שדה חובה.apiVersion: deploy.cloud.google.com/v1 kind: DeployPolicy metadata: name: description:מוסיפים הפניה לצינורות העברת הנתונים וליעדים שהמדיניות חלה עליהם (
selectors).מידע נוסף על סלקטורים של מדיניות ועל אופן ההגדרה שלהם זמין במאמרים פריסת סלקטורים של מדיניות והפניה לסכימת ההגדרה.
מוסיפים מדיניות אחת או יותר
rules.כל כלל מתאר הגבלה ואת הנסיבות שבהן ההגבלה נאכפת. מידע נוסף על כללי מדיניות ועל אופן ההגדרה שלהם זמין במאמרים בנושא פריסת כללי מדיניות והפניה לסכימת ההגדרות.
מחילים את הקובץ כדי ליצור את המדיניות:
gcloud deploy apply --file=FILENAME \ --region=REGION \ --project=PROJECT_IDכאשר
FILENAMEהוא שם קובץ ה-YAML שמכיל את ההגדרה שלDeployPolicy, REGIONהוא האזור שבו רוצים ליצור את משאב מדיניות הפריסה, ו-PROJECT_IDהוא הפרויקט שבו רוצים ליצור את המשאב.
צינורות ההפצה או יעדי ההפצה שאליהם מתייחסים מוגבלים עכשיו בהתאם לכללים במשאב deploy-policy.
פריסת סלקטורים של מדיניות
סלקטורים, שמוגדרים בהגדרות של מדיניות הפריסה, קובעים אילו צינורות העברה ויעדים מושפעים מכלל נתון.
בורר מוגדר בפסקה selectors בהגדרות של מדיניות הפריסה, כמאפיין ברמה העליונה:
selectors:
- deliveryPipeline:
id:
labels:
target:
id:
labels:
ב-YAML של ההגדרה הזו, deliveryPipeline.id מקבל את השם של צינור ההפצה, ו-target.id מקבל את השם של היעד (בשני המקרים, metadata.name).
אפשר להשתמש בלחצן id: * כדי לבחור את כל צינורות ההפצה או את כל יעדי הטירגוט. הערה: * הוא ערך שדה מיוחד שמאפשר לבחור הכול. לא ניתן להשתמש בתו כללי שרירותי. אפשר גם להשתמש בתוויות כדי להתאים צינורות העברה או יעדים או את שניהם.
בתוך בורר נתון, הפריטים מחוברים באמצעות AND. הבוררים מופרדים באמצעות OR. כלומר, כדי שבקשה מסוימת תוגבל על ידי המדיניות, היא צריכה לחול על סלקטור אחד לפחות. אבל בתוך הבורר הזה, הבקשה צריכה להתאים לכל הפריטים.
פריסת כללי מדיניות
כל מדיניות פריסה כוללת כלל מדיניות אחד או יותר, שמגדירים איזו פעולה מוגבלת בצינור העברת התוכן או ביעד שנבחרו. הכלל גם מגדיר באילו נסיבות הוא יחול.
אלה הכללים שזמינים:
rolloutRestriction
הכלל rolloutRestriction מונע את ביצוע הפעולות שצוינו בהשקה ביעדים שנבחרו, שמשמשים את צינורות ההפצה שנבחרו. הכלל הזה משתמש בחלון זמן שמגדיר מתי אי אפשר ליצור פריסה עבור צינור העברת התוכן והיעד שנבחרו. במאמר תאריכים ושעות מוסבר איך מציינים תאריכים ושעות בכללים של מדיניות הפריסה.
אפשר להגביל את הפעולות הבאות בזמן שהכלל בתוקף:
ADVANCEאי אפשר להקדים את השלבים של ההשקה.
APPROVEאי אפשר לאשר את המבצע בהשקה.
CANCELאי אפשר לבטל השקות.
CREATEאי אפשר ליצור השקות. אם מדיניות מסוימת מונעת את הפעולה הזו, אפשר ליצור מהדורה, אבל המהדורה הזו לא תתחיל השקה.
IGNORE_JOBאי אפשר להתעלם ממשרות.
RETRY_JOBאי אפשר לנסות שוב להריץ משימות.
ROLLBACKאי אפשר לבטל השקות.
TERMINATE_JOBRUNאי אפשר להפסיק הרצות של משימות
במאמר הפניה לסכימת ההגדרות מוסבר על מבנה ה-YAML של הכלל הזה.
תאריכים ושעות בכלל rolloutRestriction
מגדירים בלוקים של תאריכים ושעות כדי לציין חלונות זמן חוזרים ולא חוזרים שבהם מדיניות הפריסה בתוקף.
אלה הדרישות לציון תאריכים ושעות:
התאריכים מוצגים בפורמט
yyyy-mm-dd.כשמציינים שעה ביום, תחילת היום היא
00:00וסוף היום הוא24:00.בפרמטר
oneTimeWindows, התאריכים חייבים לכלול את השעה. במקרה שלweeklyWindows, אפשר להשמיט את השעה ביום. אבל אם כוללים אתstartTime, צריך לכלול גם אתendTime, ולהיפך.לדוגמה, הקפאה רק בימי ראשון תיראה כך:
- daysOfWeek: [SUNDAY] startTime: "00:00" endTime: "24:00"אפשר גם:
- daysOfWeek: [SUNDAY]אבל לא זה:
- daysOfWeek: [SUNDAY] startTime: "00:00"חובה לכלול אזור זמן, בפסקה
timeWindows.לדוגמה:
timeZone: America/New_York.
חלונות זמן לא חוזרים
חלון זמן שלא חוזר על עצמו מתחיל ומסתיים ביום ובשעה ספציפיים. אפשר להשתמש בזה לכל פרק זמן שבו רוצים להגביל את ההשקות.
חלונות זמן לא חוזרים מוגדרים באמצעות פסקה oneTimeWindows.
חלונות זמן חוזרים
חלון זמן חוזר מתאר בלוק זמן חוזר שבו רוצים להגביל את ההשקות. לדוגמה, אפשר להשתמש בזה כדי להגביל את ההשקות לסופי שבוע.
חלונות זמן חוזרים מוגדרים באמצעות פסקה weeklyWindows.
דוגמאות
בקטע הזה מופיעות כמה דוגמאות לשימוש בתאריכים ובשעות כדי להגדיר מתי מדיניות הפריסה נאכפת.
הקפאה שנתית
אם יש תקופה בשנה שבה אתם רוצים להקפיא את ההשקות, אתם יכולים להגדיר oneTimeWindows חסימה לשם כך. אם התאריכים צפויים משנה לשנה, עדיין תצטרכו להשתמש בכמה חסימות oneTimeWindow.
קובץ ה-YAML הבא מציג חלון זמן חד-פעמי (לא חוזר) לאכיפת מדיניות פריסה להקפאה שנתית:
timeWindows:
timeZone: "America/New_York"
oneTimeWindows:
- start: "2024-12-22 17:00"
end: "2025-01-02 09:00"
קובץ ה-YAML הזה מתאר חלון זמן מ-22 בדצמבר 2024 בשעה 17:00 עד 2 בינואר 2025 בשעה 9:00.
הקפאה חוזרת בסופי שבוע
קובץ ה-YAML הבא מציג חלון זמן חוזר לאכיפת מדיניות פריסה שמגבילה את ההשקות בסופי שבוע, מיום שישי בשעה 17:00 עד יום שני בבוקר בשעה 9:00:
timeWindows:
timeZone: "America/New_York"
weeklyWindows:
- daysOfWeek: [FRIDAY]
startTime: "17:00"
endTime: "24:00"
- daysOfWeek: [SATURDAY, SUNDAY]
startTime: "00:00"
endTime: "24:00"
- daysOfWeek: [MONDAY]
startTime: "00:00"
endTime: "09:00"
עדכון מדיניות פריסה
כדי לעדכן מדיניות פריסה:
עורכים את קובץ ה-YAML של הגדרות המדיניות.
אם יצרתם את המדיניות באמצעות Google Cloud המסוף, תוכלו לקבל את הגדרות ה-YAML על ידי בחירה בכרטיסייה YAML בדף פרטי פריסת המדיניות. אחר כך תוכלו להעתיק את הטקסט הזה לקובץ באופן מקומי ולערוך אותו שם.
מחילים את הקובץ כדי לעדכן את המדיניות:
gcloud deploy apply --file=FILENAME \ --region=REGION \ --project=PROJECT_IDהפעולה הזו מעדכנת את משאב מדיניות הפריסה עם ההגדרה החדשה.
מדיניות הפריסה מוערכת כשמנסים לבצע את הפעולה המוגבלת, ולכן כל הפעולות האלה שמתבצעות על כל המשאבים של Cloud Deploy כפופות למדיניות המעודכנת. כלומר, לא נשאר שום שריד מההגבלות הקודמות.
לדוגמה, אם יש לכם בלוק restrictRollouts לכל חודש דצמבר, וב-14 בדצמבר אתם מעדכנים את המדיניות כך שההגבלה תסתיים ב-15 בדצמבר, ההשקות לא ייחסמו יותר אחרי 15 בדצמבר.
שינוי המדיניות מברירת המחדל
במקרה הצורך, אפשר לבטל מדיניות פריסה. לדוגמה, אם יש בעיה בפריסה בסביבת הייצור ואתם צריכים לבטל אותה, אבל יש מדיניות פריסה שמונעת פריסות, אתם יכולים לעקוף את המדיניות הזו כדי לבטל את הפריסה הבעייתית.
כדי לבטל מדיניות פריסה, אתם צריכים את הרשאת ה-IAM clouddeploy.deployPolicies.override.
אפשר לבטל את המדיניות באמצעות ה-CLI של gcloud או באמצעות מסוףGoogle Cloud :
console
במסוף Google Cloud , מנסים לבצע פעולה שנחסמת על ידי מדיניות.
מוצגת תיבת דו-שיח שמציינת שהפעולה נחסמה על ידי מדיניות הפריסה. בתיבת הדו-שיח הזו מופיע קישור למדיניות הספציפית שמונעת את הפעולה הזו.
בשדה הטקסט, מקלידים את שם המדיניות ולוחצים על Attempt to override policies (ניסיון לעקוף את המדיניות).
אם יש לכם הרשאה לבטל את המדיניות, Cloud Deploy יבצע את הפעולה.
CLI של gcloud
כדי לבטל מדיניות פריסה באמצעות ה-CLI של gcloud, מוסיפים את האפשרות --override-deploy-policies לפקודה של כל פעולה שהמדיניות הזו מונעת. לדוגמה, הפקודה הבאה מקדמת גרסה, ומבטלת מדיניות פריסה ספציפית שאחרת הייתה מונעת את הקידום:
gcloud deploy releases promote --release=my-release-001 \
--project=my-policy-testing-project \
--region=us-central1 \
--delivery-pipeline=my-pipeline \
--to-target=prod-target \
--override-deploy-policies=my-deploy-policy
מחיקת מדיניות פריסה
כדי למחוק מדיניות פריסה:
console
במסוף Google Cloud , עוברים לדף Deploy policies של Cloud Deploy.
בדף מופיעה רשימה של כללי הפריסה שזמינים בפרויקט הנוכחי, אם יש כאלה.
לוחצים על לחצן הפעולות ליד המדיניות שרוצים למחוק ואז על מחיקת מדיניות הפריסה.
כדי לאשר את המחיקה, מקלידים את השם של מדיניות הפריסה ולוחצים על אישור.
המדיניות נמחקה, ועכשיו אפשר לבצע את כל הפעולות שהמדיניות הגבילה.
CLI של gcloud
כדי למחוק מדיניות פריסה באמצעות ה-CLI של gcloud, מריצים את הפקודה הבאה:
gcloud deploy deploy-policies delete \
--project=[PROJECT] \
--region=[REGION] \
[POLICY_NAME]
מחליפים את מה שכתוב בשדות הבאים:
[POLICY_NAME]השם של המדיניות כפי שהוגדר בקובץ הגדרת המדיניות.
[PROJECT]מזהה הפרויקט ב- Google Cloud שבו יצרתם את מדיניות הפריסה.
[REGION]האזור שבו יצרתם את מדיניות הפריסה.
אחרי שמוחקים את משאב מדיניות הפריסה, צינורות העיבוד לפריסה ויעדי הפריסה המושפעים כבר לא כפופים למדיניות, ולא יוגבלו אלא אם הם מושפעים ממדיניות פריסה אחרת.
רישום ביומן של מדיניות הפריסה
כשמדיניות פריסה מוערכת, נוצרות רשומות ביומן הפלטפורמה לפעולות הבאות:
הערכת מדיניות
יומני הפלטפורמה נכתבים כשבקשה נבדקת ונמצא שהיא מפרה את המדיניות. יומן נכתב גם כשבקשה מפרה את המדיניות, אבל הבקשה מאושרת כי המדיניות מושהית או שבוטלה. לא נכתב יומן כשהבקשה מאושרת כי לא הייתה הפרה של המדיניות.
כשל בהתראה של Pub/Sub בעקבות שינוי במשאב של מדיניות פריסה.
המאמרים הבאים
פרטים על הגדרת מדיניות הפריסה זמינים בסכימת קובץ התצורה.