הרצת סקריפטים מותאמים אישית לטעינה בזמן ההפעלה

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

לפני שמתחילים

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

התקינו את ה-CLI של Google Cloud. אחר כך, אתחלו את ה-CLI של Google Cloud באמצעות הפקודה הבאה:

gcloud init

אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

התקינו את ה-CLI של Google Cloud. אחר כך, אתחלו את ה-CLI של Google Cloud באמצעות הפקודה הבאה:

gcloud init

אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

הכנת סקריפט לטעינה בזמן ההפעלה

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

  1. ב-Cloud Workstations מופעל קונטיינר תחנת העבודה שצוין, וגם כמה קונטיינרים של המערכת במכונה הווירטואלית של תחנת העבודה המארחת, כדי לוודא שתחנת העבודה פועלת בצורה תקינה. כל מאגרי התגים פועלים באמצעות containerd runtime ולקוח crictl.
  2. מריצים את כל הקונטיינרים הנוספים שהופעלו על ידי סקריפט לטעינה בזמן ההפעלה באמצעות containerd. ‫Docker מושבת במכונה הווירטואלית המארחת כדי למנוע הפרעות לשירות Docker Daemon שפועל בתוך קונטיינר תחנת העבודה.
  3. קונטיינרים ברמת המארח שהופעלו על ידי סקריפט לטעינה בזמן ההפעלה לא יכולים ליצור אינטראקציה עם הקונטיינר של תחנת העבודה הראשית. האינטראקציות הישירות האלה לא נתמכות כי הן עוקפות את הבדיקות של ניהול הזהויות והרשאות הגישה (IAM).

אחסון סקריפט לטעינה בזמן ההפעלה ב-Cloud Storage

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

  1. מעלים את התסריט לקטגוריה:

    gcloud storage cp LOCAL_SCRIPT_PATH gs://BUCKET_NAME/SCRIPT_NAME
    

    מחליפים את מה שכתוב בשדות הבאים:

    • LOCAL_SCRIPT_PATH: הנתיב המקומי לקובץ של סקריפט לטעינה בזמן ההפעלה.
    • BUCKET_NAME: שם הקטגוריה של Cloud Storage.
    • SCRIPT_NAME: השם שרוצים לתת לקובץ הסקריפט בדלי.
  2. חשוב לוודא שלחשבון השירות שבו נעשה שימוש בהגדרת תחנת העבודה יש הרשאות גישה לקובץ הסקריפט ולמאגר. אפשר גם להגדיר את הסקריפט כגלוי לכולם.

יצירת הגדרה אישית של תחנת עבודה

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

המסוף

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

  1. נכנסים לדף Workstation configurations במסוף Google Cloud .

    מעבר להגדרות של תחנות עבודה

  2. לוחצים על הוספה יצירה.

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

  4. בדף Machine settings (הגדרות המכונה), מגדירים את הגדרות המכונה ולוחצים על Continue (המשך).

  5. בדף הגדרות הסביבה, מרחיבים את הקטע אפשרויות מתקדמות של מאגרי תגים.

  6. בשדה Custom startup script (סקריפט לטעינה בזמן ההפעלה בהתאמה אישית), מזינים את הנתיב של סקריפט לטעינה בזמן ההפעלה ב-Cloud Storage (לדוגמה, gs://BUCKET_NAME/SCRIPT_NAME).

  7. משלימים את השלבים שנותרו ולוחצים על יצירה.

REST

כדי להגדיר סקריפט לטעינה בזמן ההפעלה בהתאמה אישית באמצעות API בארכיטקטורת REST, יוצרים את הגדרת תחנת העבודה ומגדירים את השדה startupScriptUri בהודעה host.gceInstance ל-URI של Cloud Storage של הסקריפט שלכם:

curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     -H "Content-Type: application/json" \
     -d '{
       "host": {
         "gceInstance": {
           "poolSize": 1,
           "startupScriptUri": "gs://BUCKET_NAME/SCRIPT_NAME",
           "serviceAccount": "SERVICE_ACCOUNT"
         }
       }
     }' \
     https://workstations.googleapis.com/v1alpha/projects/PROJECT_ID/locations/LOCATION/workstationClusters/CLUSTER_ID/workstationConfigs?workstation_config_id=CONFIG_ID

מחליפים את מה שכתוב בשדות הבאים:

  • SERVICE_ACCOUNT: כתובת האימייל של חשבון השירות שמשויך להגדרת תחנת העבודה.
  • PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
  • LOCATION: האזור שבו נמצא אשכול תחנות העבודה.
  • CLUSTER_ID: המזהה של אשכול תחנות העבודה.
  • CONFIG_ID: המזהה שרוצים להקצות להגדרת תחנת העבודה החדשה.

אימות ביצוע הסקריפט

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

  • יומני פלט של יציאה טורית 3: יומני פלט שנוצרו על ידי הסקריפט שלכם נשלחים אוטומטית אל הפלט של יציאה טורית 3. כדי למצוא את שם המכונה הווירטואלית שהוקצתה לתחנת העבודה, אפשר לעיין ביומני הפלטפורמה.
  • מתחברים למכונה הווירטואלית באמצעות SSH: אפשר להתחבר למכונה הווירטואלית של תחנת העבודה באמצעות SSH כדי לבצע ניפוי באגים נוסף בסקריפט, אם צריך.
  • בדיקות מוכנות: סקריפטים להפעלה הם מאמץ מיטבי ולא חוסמים את ההפעלה של תחנת העבודה. אם לוקח לסקריפט הרבה זמן לפעול או שהוא נכשל, יכול להיות שתחנת העבודה עדיין תסומן כ'מוכנה'. כדי לוודא שתחנת העבודה לא תסומן כ'מוכנה' עד שהסקריפט יושלם, כדאי להטמיע בדיקות מוכנות.

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