במאמר הזה מוסבר איך ליצור, לערוך ולמחוק תוכנית שחזור ב-Google Distributed Cloud (GDC) עם air gap.
תוכניות שחזור הן תרחישי שחזור שהוגדרו מראש לסדרת גיבויים תואמת. בתוכניות שחזור אפשר להקצות הרשאות למשתמשים עם התפקיד "יוצר גיבוי" כדי להשתמש בהגדרות האלה.
יוצרי גיבויים יכולים לשחזר גיבוי במהירות ובאופן עצמאי כשמתרחש אירוע. לדוגמה, יכול להיות שנתונים קבועים ייפגמו בגלל עדכון תוכנה באפליקציה שנפרסה, וכתוצאה מכך מרחב השמות של האפליקציה יהיה במצב לא תקין ויהיה צורך בשחזור.
במהלך השחזור, אפשר להחיל קבוצה של כללי החלפה שמשמשים להתאמה של קבוצת משאבים ולהחלפת הערך הנוכחי של מאפיין במשאבים האלה בערך חדש. לדוגמה, כלל החלפה יכול לשנות את מרחב השמות של המשאבים שגובו במהלך השחזור, כדי להעביר עומס עבודה ממרחב שמות אחד לאחר.
לפני שמתחילים
בקשת תפקידים ב-IAM
כדי ליצור תוכנית שחזור, בקשו ממנהל החשבון הארגוני שלכם ב-IAM להקצות לכם את התפקיד אדמין גיבוי של אשכול משתמשים (user-cluster-backup-admin). התפקיד הזה יוצר, מקבל, מציג, צופה, מעדכן, מתקן ומוחק משאבי גיבוי כמו תוכניות גיבוי ותוכניות שחזור באשכולות של משתמשים.
אם אתם מפעילים של אפליקציה, בקשו מאדמין עם הרשאות אדמין לגיבוי אשכולות של משתמשים ליצור בשבילכם תוכנית שחזור.
יצירת תוכנית שחזור
יוצרים תוכנית שחזור באמצעות מסוף GDC או ה-API.
המסוף
- נכנסים למסוף GDC.
- בתפריט הניווט, לוחצים על Backup for Clusters.
- לוחצים על Create Restore Plan.
- בקטע Restore plan basics, מבצעים את הפעולות הבאות ולוחצים על Next:
- בקטע Restore plan name, מזינים את שם תוכנית השחזור.
- (אופציונלי) בשדה Restore plan description, מזינים תיאור לתוכנית השחזור.
- ברשימה Source cluster, בוחרים את אשכול המקור לתוכנית השחזור.
- ברשימה Project, בוחרים את הפרויקט של תוכנית השחזור.
- בוחרים את הפרויקט שמצורף לאשכול המקור.
- בשדה תוכנית גיבוי, בוחרים תוכנית גיבוי לאשכול קיים שתואמת לגיבויים שרוצים לשחזר.
- בשדה Target cluster, בוחרים את אשכול היעד שבו רוצים לשחזר את הגיבוי.
- בקטע Choose namespaced resources, מבצעים את הפעולות הבאות ולוחצים על Next:
- בוחרים אילו מרחבי שמות לשחזר:
- לוחצים על Selected namespaced resources כדי לציין את מרחבי השמות בגיבוי שרוצים לשחזר.
- לוחצים על Edit cluster namespaces ואז על Add cluster namespace כדי להזין מרחב שמות.
- לוחצים על Selected protected applications כדי להוסיף משאבים על ידי ציון מרחב השמות ושם האפליקציה.
- לוחצים על Selected namespaced resources כדי לציין את מרחבי השמות בגיבוי שרוצים לשחזר.
- בוחרים איך לטפל בהתנגשויות:
- לוחצים על Fail on conflict (non-destructive) כדי שהשחזור ייכשל אם מרחבי השמות שמיועדים לשחזור מגיבוי כבר קיימים באשכול היעד.
- לוחצים על Rollback (destructive) כדי למחוק את מרחבי השמות הקיימים לפני שמשחזרים את מרחבי השמות החדשים, אם מרחבי שמות כלשהם שמיועדים לשחזור מגיבוי כבר קיימים באשכול היעד.
- בוחרים איך לשחזר את נתוני הנפח:
- לוחצים על Provision new volumes and restore volume data from backup כדי לשחזר את נתוני אמצעי האחסון מהגיבוי בדיסק אחסון מתמיד חדש.
- לוחצים על Don't restore volume data כדי להקצות נפח אחסון מתמיד חדש. אם אשכול היעד מכיל אמצעי אחסון קבוע לא מאוגד שעומד בדרישות של
PersistentVolumeClaim, האשכול מאוגד לאמצעי האחסון. - לוחצים על Reuse existing volumes containing your data כדי לא לשחזר את נתוני הגיבוי של אמצעי האחסון. כל
PersistentVolumeClaimsקשורים לאמצעי אחסון שמפנים לדיסקים קיימים מסוג Persistent Disk.
- בוחרים אילו מרחבי שמות לשחזר:
- אופציונלי: בקטע Choose cluster-scoped resources, מבצעים את הפעולות הבאות ולוחצים על Next:
- לוחצים על Don't restore cluster-scoped resources כדי להשאיר את הגרסה הקיימת של המשאב ללא שינוי.
- כדי לשחזר את המשאבים האלה, לוחצים על Restore cluster-scoped resources לפי GroupKind.
- לוחצים על Edit GroupKinds כדי להוסיף עוד משאבים ברמת האשכול. מזינים את קבוצת ה-API ואת סוג האובייקט כדי להתאים משאבים בסוגים האלה.
- לוחצים על Preserve existing resources כדי ליצור משאבים אם הם לא קיימים באשכול היעד.
- לוחצים על Overwrite resources in target cluster כדי למחוק משאב אם הוא כבר קיים באשכול היעד, ולשחזר את העותק מהגיבוי.
- אופציונלי: בקטע Add substitution rules, מבצעים את השלבים הבאים ולוחצים על Next:
- לוחצים על הוספת כלל חדש.
- בתיבה Cluster namespaces, מקלידים רשימה של מרחבי שמות כדי להתאים משאבים בתוך מרחבי השמות האלה.
- כדי להוסיף GroupKinds, לוחצים על Add GroupKind ומזינים את API group ואת Object kind כדי להתאים משאבים בתוך הסוגים האלה.
- בשדה JSON path, מקלידים את נתיב ה-JSON שמזהה את השדות במשאבים התואמים שעליהם חלה ההחלפה.
- בשדה תבנית הערך המקורי, מקלידים את התבנית המקורית להשוואה עם הערך החדש.
- בשדה ערך חדש, מקלידים את הערך החדש שיחליף את הערך הנוכחי של המאפיינים התואמים.
- לוחצים על Save.
- לוחצים על יצירה.
API
יוצרים משאב בהתאמה אישית של ClusterRestorePlan כדי לתכנן שחזורים מ-ClusterBackupPlan קיים. ה-ClusterRestorePlan מקצה את קבוצת המשאבים ומרחבי השמות המדויקים שיוצר הגיבוי יכול לשחזר. הנה דוגמה ל-ClusterRestorePlan:
apiVersion: backup.gdc.goog/v1
kind: ClusterRestorePlan
metadata:
name: RESTORE_PLAN_NAME
namespace: PROJECT_NAME
spec:
targetCluster:
targetClusterType: UserCluster
targetClusterName:
kind: "Cluster"
name: CLUSTER_NAME
description: RESTORE_PLAN_DESCRIPTION
clusterBackupPlanName: CLUSTER_BACKUP_PLAN_NAME
clusterRestoreConfig:
volumeDataRestorePolicy: RestoreVolumeDataFromBackup
clusterResourceConflictPolicy: UseBackupVersion
namespacedResourceRestoreMode: DeleteAndRestore
namespacedResourceRestoreScope:
selectedNamespaces:
namespaces: [NAME_SPACE]
clusterBackupRepositoryRef: CLUSTER_BACKUP_REPOSITORY
substitutionRules:
- newValue: NEW_CONFIG_VALUE
originValuePattern: VALUE_PATTERN
target:
groupKinds:
jsonPath: '{.metadata.name}'
namespaces:
- NAME_SPACE
- newValue: NEW_CONFIG_VALUE
originValuePattern: VALUE_PATTERN
target:
groupKinds:
jsonPath: '{.metadata.name}'
namespaces:
- NAME_SPACE
מחליפים את מה שכתוב בשדות הבאים:
- מחליפים את
RESTORE_PLAN_NAMEבשם של תוכנית השחזור. - מחליפים את
PROJECT_NAMEבשם הפרויקט ב-GDC. - מחליפים את
CLUSTER_NAMEבשם של האשכול.
בדוגמה הזו נעשה שימוש בערכים הבאים:
ערך |
מאפיין |
תיאור |
|---|---|---|
targetClusterName |
שם אשכול המקור בפרויקט שמשויך לתוכנית הזו. | |
description |
תיאור שהמשתמש סיפק למטרה של ClusterRestorePlan. |
|
clusterBackupPlanName |
שם ה-ClusterBackupPlan שרוצים לשחזר. ה-ClusterBackupPlan חייב להיות באותו מרחב שמות של ה-ClusterRestorePlan. |
|
clusterRestoreConfig |
הגדרת תהליך השחזור. | |
volumeDataRestorePolicy |
מציינים אחת מהאפשרויות הבאות:
|
|
clusterResourceConflictPolicy |
מציינת את ההתנהגות לטיפול בקונפליקטים במשאבי האשכול, למשל אם המשאב כבר קיים באשכול. מציינים אחת מהאפשרויות הבאות:
|
|
namespacedResourceRestoreMode |
מטפל במצב שבו קבוצות המשאבים עם מרחב השמות שמשוחזרות כבר קיימות באשכול היעד. מציינים אחת מהאפשרויות הבאות:
|
|
namespacedResourceRestoreScope |
מציינת אילו Namespaces או
ProtectedApplications מותר לשחזר.
|
|
clusterBackupRepositoryRef |
מציין את המאגר שבו יאוחסנו המשאבים של Restore. המאגר הזה יכול להיות שונה מהמאגר שממנו הגיע הגיבוי. המאגר חייב להיות מאגר ReadWrite באשכול. |
|
substitutionRules |
כללים להחלפת ערכים במשאבי Kubernetes שגובו במהלך השחזור. רשימה ריקה פירושה שלא תתבצע החלפה.
כללי ההחלפה מופעלים ברצף לפי הסדר שבו הם מוגדרים.
הסדר הזה חשוב, כי שינויים שבוצעו על ידי כלל מסוים עשויים להשפיע על לוגיקת ההתאמה של הכלל הבא. כל כלל מציין target, originValuePattern להתאמה (VALUE_PATTERN) וnewValue (NEW_CONFIG_VALUE) להחלפה. ה-target יכול לכלול namespaces כדי להגדיר את היקף הכלל (NAME_SPACE). |
אחרי שיוצרים ClusterRestorePlan, משתמשים עם התפקיד "יצירת גיבויים" יכולים לשחזר גיבויים באופן ידני.
הצגת תוכנית שחזור
איך מציגים תוכנית שחזור באמצעות מסוף GDC:
- נכנסים למסוף GDC.
- בתפריט הניווט, לוחצים על Backup for Clusters.
- לוחצים על Select project כדי לבחור ארגון או פרויקט, בהתאם לתפקיד שלכם:
- אדמין לגיבוי של אשכול משתמשים: בוחרים ארגון כדי לראות את כל תוכניות השחזור בארגון, או בוחרים פרויקט כדי לראות את כל תוכניות השחזור בפרויקט.
- Backup Creator: בוחרים פרויקט כדי לראות את כל תוכניות השחזור בפרויקט.
- לוחצים על הכרטיסייה Restore Plans.
- לוחצים על תוכנית שחזור ברשימה כדי לראות את הפרטים שלה.
עריכה של תוכנית שחזור
אם למאגר הגיבויים שמשויך לתוכנית השחזור שרוצים לערוך יש ערך בשדה Linked Cluster(read-only) כשתוכנית השחזור נוצרת, היא נוצרת פעמיים. תוכנית השחזור מופצת גם לאשכולות לקריאה וכתיבה וגם לאשכולות לקריאה בלבד.
כשעורכים את תוכנית השחזור שבבעלות מאגר גיבויים שמוגדרים בו גם אשכולות לקריאה-כתיבה וגם אשכולות לקריאה בלבד, צריך לערוך את תוכנית השחזור שבה TARGET CLUSTER מוגדר לאשכול לקריאה-כתיבה.
עריכת תוכנית שחזור באמצעות מסוף GDC:
- נכנסים למסוף GDC.
- בתפריט הניווט, לוחצים על Backup for Clusters.
- לוחצים על Select project כדי לבחור ארגון או פרויקט, בהתאם לתפקיד שלכם:
- אדמין לגיבוי של אשכול משתמשים: בוחרים ארגון כדי לראות את כל תוכניות השחזור בארגון, או בוחרים פרויקט כדי לראות את כל תוכניות השחזור בפרויקט.
- Backup Creator: בוחרים פרויקט כדי לראות את כל תוכניות השחזור בפרויקט.
- לוחצים על הכרטיסייה Restore Plans.
- לוחצים על השם של תוכנית השחזור שרוצים לערוך.
- לוחצים על הכרטיסייה הגדרת התוכנית כדי לראות את השדות שאפשר לשנות.
לוחצים על סמל העריכה edit לצד Namespaced resources כדי לערוך את המשאב:
בקטע Choose namespaced resources, בוחרים את המשאבים עם מרחב השמות בגיבוי שרוצים לשחזר:
בוחרים באפשרות Selected namespaced resources כדי לשחזר משאבים ממרחבי השמות שנבחרו בגיבוי:
- בוחרים באפשרות Edit Cluster Namespaces כדי לבחור את מרחב השמות של האשכול.
- בשדה Cluster namespace 1, מזינים את השם של מרחב השמות.
- לוחצים על הלחצן שמירה.
בוחרים באפשרות Selected protected applications כדי לשחזר משאבים מהאפליקציות המוגנות שנבחרו בגיבוי:
- בוחרים באפשרות Edit Protected Applications כדי לבחור את מרחב השמות ואת האפליקציה המוגנת.
- בשדה מרחב שמות 1, מזינים את השם של מרחב השמות.
- בשדה Protected application 1, מזינים את שם האפליקציה המוגנת.
- לוחצים על הלחצן שמירה.
לוחצים על סמל העריכה edit לצד Cluster-scoped resources כדי לערוך את המשאב:
אופציונלי: בקטע Choose cluster-scoped resources, בוחרים את המשאבים ברמת האשכול שרוצים לשחזר על ידי ציון קבוצות ה-API ו-
GroupKinds, ומחליטים איך לפתור את ההתנגשויות:- בוחרים באפשרות Don't restore cluster-scoped resources כדי להסיר משאבים ברמת האשכול מתהליך השחזור.
בוחרים באפשרות Restore cluster-scoped resources by GroupKind כדי לשחזר את המשאבים לפי ה-
GroupKindשצוין:כדי לציין
GroupKind, לוחצים על הכפתור Edit GroupKind.לוחצים על הכפתור Add GroupKind.
מזינים את השם של
GroupKind.לוחצים על הלחצן שמירה.
בקטע Conflict handling, בוחרים איזו פעולה לבצע אם המשאב כבר קיים באשכול היעד:
- בוחרים באפשרות Preserve existing resources כדי ליצור משאבים אם הם עדיין לא קיימים באשכול.
- בוחרים באפשרות החלפת משאבים קיימים כדי למחוק את כל המשאבים הקיימים שנמצאו, ולהחליף את המשאב הזה במשאב ששוחזר.
לוחצים על הכפתור שמירה כדי לאשר את השינויים.
בקטע Substitution rules, לוחצים על הכפתור Add New Rule כדי להוסיף כלל החלפה חדש:
- בשדה Cluster namespaces, מזינים את השם של מרחב השמות של האשכול שעליו רוצים להחיל את כלל ההחלפה.
- לוחצים על הכפתור Add GroupKind כדי להחיל את הכלל הזה על אובייקט
GroupKindמסוים. - בשדה JSON path, מזינים את הנתיב למאפיין המשאב שרוצים להחליף, בפורמט JSON.
- בשדה תבנית הערך המקורי, מזינים ביטוי רגולרי שתואם לערך המקורי של המאפיין.
- בשדה ערך חדש, מזינים את הערך שיוחלף בשדה היעד. אם השדה הזה ריק, שדה היעד יוסר מהמשאב.
- לוחצים על Save כדי לסיים את יצירת כלל ההחלפה החדש.
בקטע כללי החלפה, לוחצים על סמל העריכה edit כדי לערוך כלל החלפה קיים.
בקטע Substitution rules, לוחצים על סמל המחיקה delete כדי למחוק כלל החלפה קיים.
מחיקה של תוכנית שחזור
אפשר למחוק את RestorePlans דרך מסוף GDC או על ידי מחיקת המשאב ישירות משרת ה-API של Kubernetes. הפעולה הזו מנקה את כל פריטי המידע שמשויכים ל-RestorePlan ממאגר האובייקטים.
המסוף
- נכנסים למסוף GDC.
- בתפריט הניווט, לוחצים על Backup for Clusters.
- לוחצים על Select project כדי לבחור ארגון או פרויקט, בהתאם לתפקיד שלכם:
- User Cluster Backup Admin: בוחרים ארגון כדי לראות את כל תוכניות השחזור בארגון, או בוחרים פרויקט כדי לראות את כל תוכניות השחזור בפרויקט.
- יוצר הגיבוי: בוחרים פרויקט כדי לראות את כל תוכניות השחזור בפרויקט.
- לוחצים על הכרטיסייה Restore Plans.
- לוחצים על השם של תוכנית השחזור שרוצים למחוק.
- לוחצים על הלחצן delete מחיקה.
- מזינים את שם תוכנית השחזור בשדה.
- לוחצים על Delete כדי לאשר את המחיקה של תוכנית השחזור.
API
מוחקים את המשאב של תוכנית השחזור:
kubectl delete clusterRestoreplan RESTORE_PLAN_NAME -n NAMESPACE
מחליפים את מה שכתוב בשדות הבאים:
-
RESTORE_PLAN_NAME: השם של תוכנית השחזור. -
NAMESPACE: מרחב השמות שמכיל את תוכנית השחזור.