自訂應用程式的備份與還原作業

本頁面說明如何使用 ProtectedApplication 資源,在 Google Distributed Cloud (GDC) 氣隙環境中自訂備份和還原作業的行為。

本頁說明的步驟為選用步驟,不影響工作負載的備份和還原設定。ProtectedApplication 資源是命名空間中的選用 Kubernetes 資源,可自訂個別有狀態應用程式的備份和還原作業。如果沒有 ProtectedApplication 資源,則適用下列限制:

  • 您將備份和還原範圍的精細程度限制在命名空間層級。
  • 備份執行期間,工作負載不會發生排清和靜止作業。這可能會導致還原後,具有多個磁碟的虛擬機器無法保持當機一致性。

ProtectedApplication 資源是選用的 Kubernetes 命名空間資源,用於自訂個別有狀態應用程式的備份和還原作業。ProtectedApplication 資源會定義哪些 Kubernetes 資源屬於應用程式例項。您可以使用 kubectl 指令手動設定專屬的協調程序,在下列情況下備份及還原這些應用程式:

  • 識別命名空間中的一組資源,這些資源可能會獨立於該命名空間中的其他資源進行備份或還原。ProtectedApplication 是您可為備份或還原範圍識別的最精細命名空間實體。
  • 每當 ProtectedApplication 屬於備份範圍時,提供專門的備份協調作業。具體來說,如果 ProtectedApplication 包含 PersistentVolumeClaim (PVC) 資源 (直接或透過 StatefulSet 的範本),您可以在備份磁碟區前後執行掛鉤。Hook 是在應用程式容器中執行的指令。這些掛鉤通常用於清除、靜止或取消靜止作業,並提供應用程式一致性備份。

事前準備

如要使用 ProtectedApplication 資源,您必須具備下列條件:

  • 建立備份方案前,請務必定義 ProtectedApplication 資源。詳情請參閱「規劃備份作業集」。
  • 必要的「身分與存取權」角色:

    • 平台管理員 (PA) 使用者:
      • 使用者叢集備份管理員:管理使用者叢集中的備份資源,例如備份和還原方案。請要求機構 IAM 管理員授予您「使用者叢集備份管理員」角色 (user-cluster-backup-admin)。
    • 應用程式運算子 (AO) 使用者:
      • 備份建立者:建立手動備份及還原。請專案 IAM 管理員授予您備份建立者 (backup-creator) 角色。
    • 詳情請參閱「角色定義」。

部署受保護的應用程式資源

以下是 Deployment 規格的範例,其中包含 ProtectedApplication 資源,可在備份期間備份與應用程式相關聯的所有資源,並在還原期間還原所有資源:

apiVersion: v1
kind: Namespace
metadata:
  name: USER_CLUSTER_NS
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: protected-application-deployment
  namespace: USER_CLUSTER_NS
  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: USER_CLUSTER_NS
  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_APP_NAME
  namespace: USER_CLUSTER_NS
spec:
  resourceSelection:
    type: Selector
    selector:
      matchLabels:
        app: protected
  components:
    - name: application-deployment
      resourceKind: Deployment
      resourceNames:
        - protected-application-deployment
      strategy:
        type: BackupAllRestoreAll

更改下列內容:

  • USER_CLUSTER_NS:受保護應用程式所在使用者叢集中的命名空間。
  • PROTECTED_APP_NAMEProtectedApplication 的名稱。

這個範例包含 ProtectedApplication 的下列值:

說明
resourceSelection 定義如何識別屬於受保護應用程式的資源:
  • type: 指定下列其中一項:
    • ApplicationName:在相同命名空間內備份 sig-apps 應用程式。
    • Selector:備份相同命名空間中符合指定選取器的資源。
  • applicationName:如果 typeApplicationName,則指定相同命名空間中 sig-apps 應用程式的名稱。這是資料保護規格適用的應用程式。
  • selector:如果 typeSelector,則指定標籤選取器,選取相同命名空間內的資源。
components 受保護應用程式的元件清單,例如部署作業或有狀態集:
  • name:元件的專屬名稱。
  • resourceKind:請選擇 DeploymentStatefulSet
  • resourceNames:命名空間中 resourceKind 的名稱清單。

backupScope 中,指定 selectedApplications 清單中的 ProtectedApplication。例如:

apiVersion: backup.gdc.goog/v1
kind: BackupPlan
metadata:
  name: BACKUP_PLAN
  namespace: USER_CLUSTER_NS
spec:
  clusterName: USER_CLUSTER
  backupSchedule:
    cronSchedule: CRON_SCHEDULE
    paused: BACKUP_SCHEDULE_STATUS
  backupConfig:
    backupScope:
      selectedApplications:
        namespacedNames:
        - name: PROTECTED_APP_NAME
          namespace: USER_CLUSTER_NS
    backupRepository: BACKUP_REPOSITORY
    retentionPolicy:
      backupDeleteLockDays: BACKUP_DELETE_LOCK_DAYS
      backupRetainDays: BACKUP_RETAIN_DAYS

更改下列內容:

  • BACKUP_PLAN:備份計畫名稱。
  • USER_CLUSTER:使用者叢集名稱。
  • CRON_SCHEDULE:指出何時排定備份作業的 crontab 時間表,例如 "*/30 * * * *"。排定備份作業的時間間隔下限為 10 分鐘。
  • BACKUP_SCHEDULE_STATUS:如果 true,系統不會排定定期備份。
  • PROTECTED_APP_NAME:您為 ProtectedApplication 資源指定的名稱。
  • BACKUP_REPOSITORY:用於儲存備份資料的備份存放區名稱。
  • BACKUP_DELETE_LOCK_DAYS:在備份建立後,防止刪除備份的天數,例如 10 days
  • BACKUP_RETAIN_DAYS:定義備份的保留天數總計。之後就會自動刪除。如果將這個值設為較大的數字,可能會導致儲存空間耗盡;如果設為較小的數字,則可能增加資料遺失的風險。如未指定,預設值為 35。資料保留政策不會覆寫儲存位置的資料保留政策,且不得超過 90 天。

後續步驟