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

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

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

אם אתם בוחרים להשתמש בסקריפטים לטעינה בזמן ההפעלה, ודאו שהסקריפט תואם לשינויים בתמונה של מערכת ההפעלה שמותאמת לקונטיינרים (COS), כי ה-VM המארח מקבל עדכוני מערכת שוטפים על סמך COS.

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

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

gcloud init

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

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

  1. ב-Cloud Workstations פועלים קונטיינר תחנת העבודה שציינתם וכמה קונטיינרים של המערכת ב-VM של תחנת העבודה המארחת, כדי לוודא שתחנת העבודה פועלת כמו שצריך. כל הקונטיינרים פועלים באמצעות סביבת זמן הריצה containerd והלקוח crictl.
  2. מריצים קונטיינרים נוספים שהופעלו על ידי הסקריפט לטעינה בזמן ההפעלה באמצעות containerd. ‫Docker מושבת במכונה הווירטואלית המארחת כדי למנוע הפרעה לדמון של Docker שפועל בתוך הקונטיינר של תחנת העבודה.
  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 .

    כניסה לדף Workstation configurations

  2. לוחצים על add Create.

  3. בדף Basic information, נותנים שם להגדרה, בוחרים אשכול של תחנות עבודה ולוחצים על Continue.

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

  5. בדף Environment settings, מרחיבים את הקטע Advanced container options.

  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. כדי למצוא את שם ה-VM שהוקצה לתחנת העבודה, אפשר לעיין ביומני הפלטפורמה.
  • חיבור למכונה הווירטואלית באמצעות SSH: אתם יכולים להתחבר למכונה הווירטואלית של תחנת העבודה באמצעות SSH כדי להמשיך בניפוי הבאגים של הסקריפט, אם צריך.
  • בדיקות מוכנות: סקריפטים לטעינה בזמן ההפעלה פועלים כמיטב היכולת ולא חוסמים את ההפעלה של תחנת העבודה. אם הסקריפט פועל במשך זמן רב או נכשל, יכול להיות שסביבת העבודה עדיין תסומן כמוכנה. כדי לוודא שתחנת העבודה לא תסומן כמוכנה עד שהסקריפט יסתיים, כדאי להטמיע בדיקות מוכנות.

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