התאמה אישית של גיבוי ושחזור לאפליקציה

במאמר הזה מוסבר איך להשתמש במשאבי ProtectedApplication כדי להתאים אישית את ההתנהגות של הגיבוי והשחזור ב-Google Distributed Cloud (GDC)‎ עם air gap.

השלבים האלה הם אופציונליים ולא נדרשים כדי להגדיר בהצלחה גיבוי ושחזור של עומסי העבודה. משאבי ProtectedApplication הם משאבי Kubernetes אופציונליים במרחבי שמות, שמאפשרים להתאים אישית את הגיבוי והשחזור של אפליקציות עם שמירת מצב (stateful) ספציפיות. בלי משאבי ProtectedApplication, חלות ההגבלות הבאות:

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

משאבי ProtectedApplication הם משאבים אופציונליים של מרחב שמות ב-Kubernetes, שמשמשים להתאמה אישית של הגיבוי והשחזור של אפליקציות ספציפיות עם שמירת מצב. המשאב ProtectedApplication מגדיר אילו משאבים ב-Kubernetes שייכים למכונה של האפליקציה. אתם יכולים להגדיר באופן ידני תזמור מיוחד באמצעות הפקודה kubectl כדי ליצור גיבוי ושחזור של האפליקציות האלה בתרחישים הבאים:

  • כדי לזהות קבוצת משאבים במרחב שמות שאפשר לגבות או לשחזר בנפרד מהמשאבים האחרים באותו מרחב שמות. ‫ProtectedApplication הוא הישות הכי מפורטת של מרחב השמות שאפשר לזהות בהיקף של גיבוי או שחזור.
  • כדי לספק תזמור גיבוי מיוחד בכל פעם ש-ProtectedApplication נכלל בהיקף הגיבוי. באופן ספציפי, אם ProtectedApplication מכיל משאבי PersistentVolumeClaim (PVC) ישירות או באמצעות תבנית מ-StatefulSet, אפשר להריץ הוקים לפני ואחרי הגיבוי של אמצעי האחסון. הוקים הם פקודות שפועלות בקונטיינרים של אפליקציות. ה-hooks האלה משמשים בדרך כלל לפעולות flush,‏ quiesce או unquiesce, ומספקים גיבוי עקבי לאפליקציה.

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

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

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

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

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

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

פריסת משאבי אפליקציה מוגנים

קטע הקוד הבא ב-YAML הוא דוגמה למפרט של Deployment עם משאב ProtectedApplication שמגבה את כל המשאבים שמשויכים לאפליקציה במהלך הגיבוי, ומשחזר את כל המשאבים במהלך השחזור:

apiVersion: v1
kind: Namespace
metadata:
  name: "applications"
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: protected-application-deployment
  namespace: applications
  labels:
    app: protected
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 2
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 80
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: unprotected-application-deployment
  namespace: applications
  labels:
    app: unprotected
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 2
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 80
---

apiVersion: gkebackup.gke.io/v1
kind: ProtectedApplication
metadata:
  name: protected-application-test
  namespace: applications
spec:
  applicationName: protectedApplication
  resourceSelection:
    type: Selector
    selector:
      matchLabels:
        app: protected
  components:
    - name: protect-application-deployment
      resourceKind: Deployment
      resourceNames:
        - protected-application-deployment
      strategy:
        type: BackupAllRestoreAll
        backupAllRestoreAll: {}

מציינים את ProtectedApplication ברשימה של selectedApplications ב-backupScope. לדוגמה:

apiVersion: backup.gdc.goog/v1
kind: BackupPlan
metadata:
  name: protected-application-backupplan-test
  namespace: applications
spec:
  clusterName: "cluster-sample"
  backupSchedule:
    cronSchedule: "*/30 * * * *"
    paused: true
  backupConfig:
    backupScope:
      selectedApplications:
        namespacedNames:
        - name: protected-application-test
          namespace: applications
    backupRepository: "backup-repository"
  retentionPolicy:
    backupDeleteLockDays: 10
    backupRetainDays: 10

הדוגמה הזו כוללת את הערכים הבאים:

ערך תיאור
resourceSelection מגדירה איך לזהות משאבים ששייכים לאפליקציה המוגנת:
  • type: מציינים אחת מהאפשרויות הבאות:
    • ‫ApplicationName: גיבוי של אפליקציית sig-apps באותו מרחב שמות.
    • ‫Selector: גיבוי משאבים שתואמים לבורר נתון באותו מרחב שמות.
  • ‫applicationName: אם הערך של type הוא ApplicationName, מציין את השם של האפליקציה sig-apps באותו מרחב שמות.
  • ‫selector: אם הערך של type הוא Selector, מציין את בורר התוויות לבחירת משאבים באותו מרחב שמות.
components רשימת הרכיבים של האפליקציה המוגנת, כמו פריסות או קבוצות עם שמירת מצב:
  • ‫name: השם הייחודי של הרכיב.
  • ‫resourceKind: בוחרים בין Deployment לבין StatefulSet.
  • ‫resourceNames: רשימת השמות שמזהים את resourceKind במרחב השמות.

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