ייבוא דיסקים וירטואליים

במאמר הזה מתוארים השלבים לייבוא תמונות דיסק של מכונות וירטואליות (VM) ל-Google Distributed Cloud ‏ (GDC) עם פער אוויר.

כדי לחסוך זמן, אתם יכולים לייבא את הדיסקים הווירטואליים הקיימים שלכם, שלרוב נקראים דיסקים מוזהבים או תמונות מוזהבות, אל Distributed Cloud ולהשתמש בתמונה שנוצרת כדי ליצור מכונות וירטואליות. כלי הייבוא תומך בפורמטים של תמונות RAW ו-QCOW.

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

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

לפני שממשיכים, חשוב לוודא שיש לכם:

הכנת הסביבה

  • ה-CLI של gcloud הורד, הותקן והוגדר. כל פקודות ה-CLI ל-GDC משתמשות ב-CLI‏ gdcloud או kubectl, ונדרשת סביבת מערכת הפעלה (OS).

שליחת בקשה לתפקידים ב-IAM

צריך לפנות לאדמין של IAM בפרויקט ולבקש את התפקידים הבאים בפרויקט:

  • Virtual Machine Project Admin (project-vm-admin): יצירה, שינוי, הצגה ומחיקה של מכונות וירטואליות במרחב השמות של הפרויקט.

  • צפייה בפרויקט(project-viewer): צפייה בכל המשאבים במרחב השמות של הפרויקט.

  • אדמין של פרויקט תמונות של מכונות וירטואליות (project-vm-image-admin): יצירה, הצגה ומחיקה של תמונות של מכונות וירטואליות במרחב השמות של הפרויקט.

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

ייבוא דיסקים וירטואליים

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

כדי לייבא את הדיסקים הווירטואליים, משתמשים ב-CLI של gcloud או ב-Virtual Machine Manager API.

gdcloud

הפקודה import בודקת שלתמונה שסופקה על ידי GDC יש את החבילות הנדרשות להגדרת פרטי הכניסה לחיבור למכונה באמצעות Secure Shell‏ (SSH) ו-Remote Desktop Protocol‏ (RDP). האיסור הזה כולל חבילות לסביבת האורח.

הפקודה גם מתקינה חבילות של פרוטוקול זמן רשת (NTP) ושל cloud-init כדי שהמופע יפעל בצורה תקינה ב-GDC.

  • כדי ליצור תמונה שאפשר להפעיל ממנה את המחשב, משתמשים בפקודה gdcloud compute images import:
gdcloud compute images import IMAGE_NAME \
  --source-file=SOURCE_FILE \
  --os=IMAGE_OS \
  --timeout=TIMEOUT

מחליפים את המשתנים הבאים:

  • ‫IMAGE_NAME: השם של תמונת היעד. השם לא יכול להיות ארוך מ-35 תווים.
  • ‫SOURCE_FILE: קובץ הדיסק הווירטואלי. הקובץ הזה הוא קובץ מקומי בתחנת העבודה שלכם. אפשר לציין נתיב מוחלט או יחסי.
  • ‫IMAGE_OS: מערכת ההפעלה בדיסק לייבוא.
  • ‫TIMEOUT: משך הזמן שייבוא יכול להימשך לפני שהוא נכשל עם הודעת השגיאה 'פסק זמן'. לדוגמה, אם מציינים 2h, התהליך ייכשל אחרי שעתיים. הזמן הקצוב לתפוגה שמוגדר כברירת מחדל הוא 1h.

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

API

כדי לייבא דיסק וירטואלי דרך ה-API, מבצעים את הפעולות הבאות:

  1. כדי להתחיל את תהליך ייבוא התמונות, צריך ליצור אובייקט VirtualMachineImageImport בשרת Management API:

    kubectl --kubeconfig MANAGEMENT_API_SERVER \
      -n PROJECT_ID \
      apply -f - <<EOF
    apiVersion: virtualmachine.gdc.goog/v1
    kind: VirtualMachineImageImport
    metadata:
      name: IMAGE_NAME
      namespace: PROJECT_ID
    spec:
      source:
        objectStorage:
          bucketRef:
            name: vm-images-bucket
          objectName: SOURCE_FILE
      imageMetadata:
        name: IMAGE_NAME
        operatingSystem: IMAGE_OS
        minimumDiskSize: DISK_SIZE
    EOF
    

    מחליפים את המשתנים הבאים:

    • ‫IMAGE_NAME: השם של התמונה לייבוא. השם יכול לכלול עד 35 תווים.
    • ‫PROJECT_ID: מזהה הפרויקט שאליו רוצים לייבא את התמונה.
    • ‫SOURCE_FILE: השם של קובץ המקור שמכיל את ההעלאה של הדיסק הווירטואלי לאחסון אובייקטים. הערך הזה הוא החלק בנתיב של אחסון האובייקטים שאחרי vm-images-bucket/.
    • ‫IMAGE_OS: מערכת ההפעלה בדיסק לייבוא.
    • ‫DISK_SIZE: גודל המינימום של הדיסק שצריך ליצור עם התמונה הזו. להשתמש ב-20% לפחות של שטח אחסון נוסף מעבר לגודל של מערכת הקבצים של התמונה המקורית. לדוגמה, צריך להשתמש בערך 12G לפחות עבור דיסק וירטואלי עם גודל מקורי של מערכת קבצים של 10G.
  2. כדי לעקוב אחר התקדמות הייבוא, שולחים שאילתה לגבי הסטטוס של אובייקט VirtualMachineImageImport:

    kubectl --kubeconfig MANAGEMENT_API_SERVER \
      -n PROJECT_ID \
      get virtualmachineimageimport.virtualmachine.gdc.goog IMAGE_NAME \
      -o jsonpath='{.status}'
    

פינוי משאבים

תהליך הייבוא כולל העלאה של קובץ הדיסק הווירטואלי לאחסון אובייקטים. אם משתמשים ב-gdcloud CLI, האובייקט מנוקה כשהפקודה מסתיימת, בין אם היא הסתיימה בהצלחה ובין אם לא. אם הפקודה מופסקת או אם מייבאים את התמונה באמצעות ה-API, יכול להיות שקובץ הדיסק הווירטואלי יישאר בקטגוריה של אחסון האובייקטים בשם vm-images-bucket עד שתמחקו את הקובץ באופן ידני.

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