Personalizzare il backup e il ripristino per un'applicazione

Questa pagina descrive come utilizzare le risorse ProtectedApplication per personalizzare il comportamento di backup e ripristino in Google Distributed Cloud (GDC) air-gapped.

I passaggi descritti in questa pagina sono facoltativi e non sono necessari per configurare correttamente il backup e il ripristino dei tuoi carichi di lavoro. Le risorse ProtectedApplication sono risorse Kubernetes facoltative negli spazi dei nomi che personalizzano il backup e il ripristino di singole applicazioni stateful. Senza risorse ProtectedApplication, si applicano le seguenti limitazioni:

  • Limiti la granularità dell'ambito di backup e ripristino al livello dello spazio dei nomi.
  • Durante l'esecuzione del backup non vengono eseguite operazioni di flush e quiescenza sui workload.Ciò potrebbe comportare che le macchine virtuali con più dischi non siano coerenti con gli arresti anomali dopo il ripristino.

Le risorse ProtectedApplication sono risorse dello spazio dei nomi Kubernetes facoltative utilizzate per personalizzare il backup e il ripristino di singole applicazioni stateful. La risorsa ProtectedApplication definisce quali risorse Kubernetes appartengono a un'istanza dell'applicazione. Puoi configurare manualmente un'orchestrazione specializzata utilizzando il comando kubectl per creare un backup e un ripristino di queste applicazioni nei seguenti scenari:

  • Per identificare un insieme di risorse in uno spazio dei nomi che potrebbero essere sottoposte a backup o ripristinate indipendentemente dalle altre risorse dello stesso spazio dei nomi. Un ProtectedApplication è l'entità dello spazio dei nomi più granulare che puoi identificare per un ambito di backup o ripristino.
  • Per fornire un'orchestrazione del backup specializzata ogni volta che ProtectedApplication rientra nell'ambito di un backup. In particolare, se ProtectedApplication contiene risorse PersistentVolumeClaim (PVC) direttamente o tramite un modello di un StatefulSet, puoi eseguire hook prima e dopo il backup dei volumi. Gli hook sono comandi che vengono eseguiti nei container delle applicazioni. Questi hook vengono spesso utilizzati per operazioni di flush, quiescenza o annullamento della quiescenza e forniscono un backup coerente con l'applicazione.

Prima di iniziare

Per utilizzare le risorse ProtectedApplication, devi disporre di:

  • Devi definire la risorsa ProtectedApplication prima di creare un piano di backup. Per saperne di più, consulta Pianificare un insieme di backup.
  • Il ruolo di identità e accesso necessario:

    • Per gli utenti con ruolo di amministratore della piattaforma:
      • Amministratore backup cluster utente: gestisce le risorse di backup come i piani di backup e ripristino nei cluster utente. Chiedi all'amministratore IAM dell'organizzazione di concederti il ruolo Amministratore backup cluster utente (user-cluster-backup-admin).
    • Per gli utenti con ruolo Operatore applicazione (AO):
      • Backup Creator: crea backup manuali ed esegue ripristini. Chiedi all'amministratore IAM del progetto di concederti il ruolo Backup Creator (backup-creator).
    • Per saperne di più, consulta Definizioni dei ruoli.

Esegui il deployment delle risorse dell'applicazione protette

Ecco un esempio di specifica Deployment con una risorsa ProtectedApplication che esegue il backup di tutte le risorse associate all'applicazione durante il backup e ripristina tutte le risorse durante il ripristino:

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

Sostituisci quanto segue:

  • USER_CLUSTER_NS: lo spazio dei nomi all'interno del cluster utente in cui risiede l'applicazione protetta.
  • PROTECTED_APP_NAME: il nome del tuo ProtectedApplication.

Questo esempio include i seguenti valori per ProtectedApplication:

Valore Descrizione
resourceSelection Definisce come identificare le risorse che appartengono all'applicazione protetta:
  • type: Specifica uno dei seguenti valori:
    • ApplicationName: esegue il backup di un'applicazione sig-apps all'interno dello stesso spazio dei nomi.
    • Selector: Esegue il backup delle risorse che corrispondono a un selettore specifico all'interno dello stesso spazio dei nomi.
  • applicationName: se type è ApplicationName, specifica il nome dell'applicazione sig-apps all'interno dello stesso spazio dei nomi. Questa è l'applicazione a cui si applica la specifica di protezione dei dati.
  • selector: se type è Selector, specifica il selettore di etichette per selezionare le risorse all'interno dello stesso spazio dei nomi.
components L'elenco dei componenti per l'applicazione protetta, come deployment o set stateful:
  • name: il nome univoco del componente.
  • resourceKind: scegli tra Deployment o StatefulSet.
  • resourceNames: l'elenco dei nomi che identificano resourceKind nello spazio dei nomi.

Specifica ProtectedApplication nell'elenco di selectedApplications in backupScope. Ad esempio:

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

Sostituisci quanto segue:

  • BACKUP_PLAN: il nome del piano di backup.
  • USER_CLUSTER: il nome del cluster utente.
  • CRON_SCHEDULE: una pianificazione crontab che indica quando pianificare i backup, ad esempio "*/30 * * * *". L'intervallo minimo tra i backup pianificati è di 10 minuti.
  • BACKUP_SCHEDULE_STATUS: se true, i backup periodici non vengono pianificati.
  • PROTECTED_APP_NAME: il nome che hai assegnato alla risorsa ProtectedApplication.
  • BACKUP_REPOSITORY: il nome del repository di backup che utilizzi per archiviare i backup.
  • BACKUP_DELETE_LOCK_DAYS: impedisce l'eliminazione del backup per il numero di giorni specificato dopo la creazione del backup, ad esempio 10 days.
  • BACKUP_RETAIN_DAYS: definisce il numero totale di giorni per conservare il backup. Trascorso questo periodo, il backup viene eliminato automaticamente. L'impostazione di un valore più alto potrebbe causare l'esaurimento dello spazio di archiviazione, mentre l'impostazione di un valore più basso può aumentare il rischio di perdita di dati. Se non specificato, questo valore è impostato su 35 per impostazione predefinita. I criteri di conservazione non sostituiscono quelli della posizione di archiviazione e non possono superare i 90 giorni.

Passaggi successivi