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

במאמר הזה מוסבר איך לייבא קובצי אימג' של דיסקים של מכונות וירטואליות (VM) ל-Google Distributed Cloud (GDC) עם air gap.

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

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

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

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

הכנת הסביבה

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

בקשת תפקידים ב-IAM

כדי לקבל את ההרשאות שדרושות לייבוא דיסקים וירטואליים, בקשו מהאדמין של הפרויקט ב-IAM להקצות לכם את התפקידים הבאים בפרויקט:

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

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

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

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

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

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

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

gdcloud

הפקודה import בודקת אם קובץ האימג' שסופק על ידי GDC מכיל את החבילות הנדרשות להגדרת פרטי הכניסה לחיבור למכונה באמצעות Secure Shell ‏ (SSH) ופרוטוקול Remote Desktop ‏ (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: משך הזמן שבו הייבוא יכול להימשך לפני שהוא נכשל עם השגיאה TIMEOUT. לדוגמה, אם מציינים 2h, התהליך נכשל אחרי שעתיים. הזמן הקצוב לתפוגה שמוגדר כברירת מחדל הוא 1h.

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

API

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

  1. יוצרים משאב VirtualMachineImageImport בהתאמה אישית ב-Management API server כדי להתחיל את תהליך הייבוא של קובץ האימג':

    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
    

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

    • ‫MANAGEMENT_API_SERVER: קובץ ה-kubeconfig של שרת ה-API לניהול.
    • ‫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 עד שתמחקו אותו ידנית.

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