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

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

אחרי שיוצרים גיבוי, אפשר ליצור שחזור של הגיבוי הזה, שמתחיל את השחזור של כל המכונה הווירטואלית. למכונה הווירטואלית ששוחזרה ולדיסקים שמשויכים אליה יש שמות שונים, בהתאם למה שציינתם בשדה New VM instance name במסוף GDC או בשדה restoredResourceName בממשק לתכנות יישומים (API).

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

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

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

מוודאים שיש לכם גיבוי קיים. מידע נוסף זמין במאמר יצירת תוכנית גיבוי.

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

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

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

  • יוצר גיבויים (backup-creator): יוצר, מקבל, מציג, צופה, מעדכן, מתקן ומוחק בקשות לגיבוי ידני ובקשות לשחזור ידני.

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

פועלים לפי השלבים כדי לאמת את הגישה.

יצירת שחזור למכונות וירטואליות

שחזור גיבוי של VM באמצעות מסוף GDC או ה-API.

המסוף

  1. נכנסים למסוף GDC.
  2. בתפריט הניווט, לוחצים על Backup for Virtual Machines.
  3. בוחרים פרויקט.
  4. לוחצים על הכרטיסייה גיבויים.
  5. ברשימת הגיבויים, מוצאים את הגיבוי שרוצים לשחזר ולוחצים על Restore.
  6. בשדה New VM instance name, מזינים שם למופע של מכונה וירטואלית חדשה שבה רוצים לשחזר את הגיבוי.
  7. אופציונלי: בשדה התיאור New VM instance, מזינים תיאור.
  8. מזינים שם לשחזור.
  9. לוחצים על שחזור.

API

מגדירים משאב מותאם אישית של VirtualMachineRestoreRequest כדי להתחיל את תהליך השחזור. הגיבוי שאליו מתייחסים בשדה virtualMachineBackup הוא משאב בהתאמה אישית של VirtualMachineBackup שנוצר על ידי VirtualMachineBackupRequest. דוגמה לVirtualMachineRestoreRequest:

מגדירים משאב בהתאמה אישית של VirtualMachineRestoreRequest כדי להתחיל את תהליך השחזור:

apiVersion: virtualmachine.gdc.goog/v1
kind: VirtualMachineRestoreRequest
metadata:
  name: RESTORE_REQUEST_NAME
  namespace: PROJECT_NAME
spec:
  virtualMachineBackup: VM_BACKUP_NAME
  restoreName: RESTORE_NAME
  restoredResourceName: RESTORED_RESOURCE_NAME
  restoredResourceDescription: RESTORED_RESOURCE_DESCRIPTION

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

  • ‫VM_BACKUP_NAME: השם של ה-VirtualMachineBackup שממנו רוצים לשחזר.
  • ‫PROJECT_NAME: השם של הפרויקט ב-GDC.
  • ‫RESTORE_REQUEST_NAME: השם שרוצים לתת לבקשת השחזור שמופעלת.
  • ‫RESTORE_NAME: השם שרוצים לתת לשחזור שמתחילים.
  • ‫RESTORED_RESOURCE_NAME: השם שרוצים לתת למכונה הווירטואלית שמשחזרים.
  • ‫RESTORED_RESOURCE_DESCRIPTION: הערות לגבי הסיבה לביצוע השחזור.

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

איך רואים את השחזור של המכונות הווירטואליות

כדי להציג רשימה של שחזורים באמצעות מסוף GDC:

  1. נכנסים למסוף GDC.
  2. בתפריט הניווט, לוחצים על Backup for Virtual Machines.
  3. בוחרים פרויקט.
  4. לוחצים על הכרטיסייה שחזורים.
  5. לוחצים על שחזור ברשימה כדי לראות את הפרטים שלו.

מחיקת שחזור

מוחקים את השחזור באמצעות מסוף GDC או kubectl.

המסוף

  1. נכנסים למסוף GDC.
  2. בתפריט הניווט, לוחצים על Backup for Virtual Machines.
  3. בוחרים פרויקט.
  4. לוחצים על הכרטיסייה שחזורים.
  5. ברשימת השחזורים, מוצאים את השחזור שרוצים למחוק ולוחצים על Delete Restore.
  6. בשדה Restore name, מזינים את שם השחזור שרוצים למחוק.
  7. לוחצים על מחיקת השחזור.

kubectl

  1. מציגים את השחזורים הקיימים:

    kubectl get virtualmachinerestores.virtualmachine.gdc.goog -n PROJECT_NAME
    

    מחליפים את PROJECT_NAME בשם הפרויקט.

  2. ברשימה, מוצאים את השחזור שרוצים למחוק.

  3. מחיקת השחזור:

    kubectl delete virtualmachinerestores.virtualmachine.gdc.goog RESTORE_NAME -n PROJECT_NAME
    

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

    • ‫RESTORE_NAME: שם השחזור.
    • ‫PROJECT_NAME: שם הפרויקט.