יצירת קובץ אימג' של מכונה וירטואלית (VM)

בדף הזה מוסבר איך ליצור קובץ image ציבורי של מכונה למוצר שלכם כדי להפעיל אותו ב-Compute Engine.

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

מומלץ להתחיל ביצירת תמונה בפרויקט הפיתוח, ואז להעביר אותה לפרויקט הציבורי אחרי Partner Engineer של Google יאמת את התמונה.

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

  1. מורידים את Google Cloud SDK.

יצירת מכונה וירטואלית של מוצר בסיסי

כדי ליצור תמונת מכונה בהתאמה אישית ל-Cloud Marketplace, צריך לבצע את השלבים הבאים (שמתוארים בקטעים הבאים):

  • משתמשים באחת מתמונות הבסיס הציבוריות הנתמכות של Google כדי ליצור מכונת VM, ומתקינים את החבילות וההגדרות הספציפיות לאפליקציה.

    אפשר לבחור תמונה שמשתמשת במעבדי Arm או תמונה שמשתמשת במעבדי x86. אפשר גם לכלול כמה תמונות, שמטרגטות סוגים שונים של מכונות, במוצר VM אחד. מידע נוסף על פלטפורמות CPU ועל סוגי המכונות שתומכים בהן זמין במאמר פלטפורמות CPU.

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

יצירת תמונה של מכונה וירטואלית עם רישיון

  1. משתמשים ב-gcloud כדי להגדיר ברירות מחדל ל-Google Cloud CLI:

    gcloud config set project <project_id>
    gcloud config set compute/zone <zone>
  2. יוצרים מופע ראשי שמשמש להתקנת התוכנה, ולאחר מכן ממירים אותו לתמונה לשימוש ב-Cloud Marketplace. מידע נוסף על יצירת מכונה זמין במאמר יצירה והפעלה של מכונה.

    gcloud compute instances create ${INSTANCE} --scopes
    https://www.googleapis.com/auth/cloud-platform 
  3. מתקינים את התוכנה ומתאימים אותה אישית. כוללים את כל סקריפטי ההפעלה הנדרשים, כמו אלה ליצירת פרטי הרשאה.

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

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

  4. מפנים מקום בדיסק. כשיוצרים אימג' של מכונה וירטואלית ישירות מהמכונה הווירטואלית, ספריות המשתמשים ומפתחות ה-SSH מועברים גם הם למכונות הווירטואליות של הלקוחות. לכן, צריך לנקות את דיסק הקלט כשיוצרים את האימג' של המכונה הווירטואלית.

    כדי לנקות את הדיסק:

    1. בתפריט VM Instances של Compute Engine, לוחצים על שם המכונה שרוצים לנקות ואז על Edit.

    2. גוללים למטה, מבטלים את הסימון בתיבת הסימון מחיקת דיסק האתחול כשמוחקים את המכונה ולוחצים על שמירה. משתמשים בדיסק כדי ליצור את התמונה.

    3. מוחקים את המכונה הווירטואלית (VM) ושומרים את הדיסק. תתבקשו לאשר את המחיקה. לא בוחרים באפשרות גם מחיקת דיסק האתחול.

    4. עכשיו צריך ליצור מופע חדש של מכונה וירטואלית. מרחיבים את האפשרויות ניהול, דיסק, רשת ומפתחות SSH.

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

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

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

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

    1. פותחים את Producer Portal במסוף Google Cloud :

      https://console.cloud.google.com/producer-portal?project=YOUR_PROJECT_ID
      

      מחליפים את YOUR_PROJECT_ID במזהה של פרויקט הפיתוח או הפרויקט הציבורי. מומלץ להתחיל ביצירת תמונה בפרויקט הפיתוח, ואז להעביר אותה לפרויקט הציבורי אחרי ש-Partner Engineer של Google יאמת את התמונה.

    2. לוחצים על שם המוצר.

    3. עוברים לקטע חבילת פריסה. בקטע VM license (רישיון למכונה וירטואלית), רושמים את השם. משתמשים בשם הרישיון הזה בשלב הבא, כשיוצרים את התמונה.

  6. כדי ליצור תמונה עם רישיון, מריצים את הפקודה הבאה gcloud:

    gcloud compute images create CREATE_IMAGE_NAME \
     --project PUBLIC_PROJECT_NAME \
     --source-disk projects/DEV_PROJECT_NAME/zones/SOURCE_DISK_ZONE/disks/SOURCE_DISK_NAME \
     --licenses LICENSE_NAME \
     --description ADD_DESCRIPTION

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

    • ‫CREATE_IMAGE_NAME: השם של התמונה והארכיטקטורות של המעבד שהיא תומכת בהן, בפורמט who-vmOS-image-architecture-date, כשמחליפים את architecture ב-Arm או ב-x86_64, בהתאם לארכיטקטורת המעבד שהתמונה תומכת בה. בכל פעם שמעדכנים את התמונה של המוצר, צריך להשתמש בשם חדש וייחודי.

    • ‫PUBLIC_PROJECT_NAME: מזהה הפרויקט הציבורי שלכם ב-Cloud Marketplace. צריכה להיות לכם הרשאה של אדמין של Compute Storage (roles/compute.storageAdmin) בפרויקט הזה.

    • ‫LICENSE_NAME: שם הרישיון של מוצר ה-VM שרשמתם בשלב הקודם.

    • ‫DEV_PROJECT_NAME: מזהה הפרויקט שיצרתם לפיתוח ולבדיקות ב-Cloud Marketplace. צריך להיות לכם תפקיד משתמש בתמונת Compute (roles/compute.imageUser) בפרויקט הזה.

    • ‫SOURCE_DISK_ZONE: האזור של דיסק המקור.

    • ‫SOURCE_DISK_NAME: השם של דיסק המקור.

    • ‫ADD_DESCRIPTION: תיאור טקסטואלי אופציונלי של התמונה שנוצרת.

הגדרת התמונה כציבורית

במוצרים שאינם Terraform ושלא משתמשים בתמונות בבעלות Marketplace, אתם צריכים להפוך את התמונה לזמינה לציבור כדי שהלקוחות יוכלו לפרוס אותה במופעים שלהם ב-Compute Engine. כדי להפוך את התמונה לציבורית, משתמשים במסוףGoogle Cloud או ב-Google Cloud CLI:

המסוף

  1. בפרויקט הציבורי, בקטע Compute Engine, עוברים לדף Images.

    כניסה לדף Images

  2. בוחרים את התמונה, כמו שמוצג בהמשך:

  3. אם חלונית המידע לא מוצגת בפינה השמאלית העליונה, לוחצים על Show Info Panel.

  4. בחלונית המידע, בשדה Add Members, מזינים את כתובת האימייל של המשתמש allAuthenticatedUsers ובתפריט Select a role בוחרים באפשרות Compute Image User.

  5. לוחצים על הוספה כדי שהתמונה תהיה גלויה לכולם.

שורת פקודה

משתמשים בפקודה gcloud הבאה ב-Cloud Shell או במחשב המקומי:

gcloud compute images add-iam-policy-binding IMAGE_NAME --member=allAuthenticatedUsers --role=roles/compute.imageUser

יצירת פרטי כניסה להרשאה

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

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

במאמר יצירת חבילת הפריסה מוסבר איך ליצור פרטי כניסה לאימות.

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

curl -H "Metadata-Flavor: Google" \
http://metadata/computeMetadata/v1/instance/attributes/PASSWORD_NAME

בדיקת תמונת המכונה הווירטואלית

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

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

curl -s -H "Metadata-Flavor: Google" http://metadata.google.internal/computeMetadata/v1/instance/licenses/?recursive=true

מוודאים ש-Python 2.6 ואילך מותקן:

python -V

בודקים שהחבילות הבאות מותקנות:

gcloud --version
ssh -V
ps aux | grep sshd
curl -V
ps aux | grep dhcp

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