Personnaliser les opérations de sauvegarde et de restauration pour une application

Ce document explique comment utiliser les ressources ProtectedApplication pour personnaliser le comportement de sauvegarde et de restauration dans Google Distributed Cloud (GDC) avec air gap.

Ces étapes sont facultatives et ne sont pas nécessaires pour configurer la sauvegarde et la restauration de vos charges de travail. Les ressources ProtectedApplication sont des ressources Kubernetes facultatives dans des espaces de noms qui personnalisent la sauvegarde et la restauration d'applications avec état individuelles. Sans ressources ProtectedApplication, les restrictions suivantes s'appliquent :

  • Vous limitez la précision du champ d'application de la sauvegarde et de la restauration au niveau de l'espace de noms.
  • Aucune opération de vidage et de mise au repos n'est effectuée sur les charges de travail pendant l'exécution de la sauvegarde.Par conséquent, les machines virtuelles dotées de plusieurs disques peuvent ne pas être cohérentes après la restauration.

Les ressources ProtectedApplication sont des ressources d'espace de noms Kubernetes facultatives utilisées pour personnaliser la sauvegarde et la restauration des applications avec état individuelles. La ressource ProtectedApplication définit les ressources Kubernetes qui appartiennent à une instance d'application. Vous pouvez configurer manuellement une orchestration spécialisée à l'aide de la commande kubectl pour créer une sauvegarde et une restauration de ces applications dans les scénarios suivants :

  • Pour identifier un ensemble de ressources dans un espace de noms pouvant être sauvegardées ou restaurées indépendamment des autres ressources de cet espace de noms. Un ProtectedApplication est l'entité d'espace de noms la plus précise que vous pouvez identifier pour un champ d'application de sauvegarde ou de restauration.
  • Fournir une orchestration de sauvegarde spécialisée chaque fois que l'opération ProtectedApplication se produit dans le cadre d'une sauvegarde. En particulier, si ProtectedApplication contient des ressources PersistentVolumeClaim (PVC) directement ou via un modèle d'un StatefulSet, vous pouvez exécuter des hooks avant et après la sauvegarde des volumes. Les hooks sont des commandes qui s'exécutent dans les conteneurs d'application. Ces hooks sont souvent utilisés pour les opérations de vidage, de suspension ou de reprise, et fournissent une sauvegarde cohérente au niveau de l'application.

Avant de commencer

Définissez la ressource ProtectedApplication avant de créer un plan de sauvegarde. Pour en savoir plus, consultez Planifier un ensemble de sauvegardes.

Demander des rôles IAM

Pour utiliser les ressources ProtectedApplication, demandez à votre administrateur d'organisation IAM ou à votre administrateur de projet IAM de vous attribuer l'un des rôles suivants :

  • Administrateur de sauvegarde de cluster d'utilisateur (user-cluster-backup-admin) : crée, obtient, liste, surveille, met à jour, corrige et supprime des ressources de sauvegarde telles que des plans de sauvegarde et de restauration dans les clusters d'utilisateur. Contactez l'administrateur de l'organisation IAM pour demander ce rôle.

  • Créateur de sauvegardes (backup-creator) : crée, obtient, liste, surveille, met à jour, corrige et supprime les requêtes de sauvegarde manuelle et les requêtes de restauration manuelle. Contactez l'administrateur de projet IAM pour demander ce rôle.

Déployer des ressources d'application protégée

L'extrait YAML suivant est un exemple de spécification Deployment avec une ressource ProtectedApplication qui sauvegarde toutes les ressources associées à l'application pendant la sauvegarde et restaure toutes les ressources lors de la restauration :

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: {}

Spécifiez ProtectedApplication dans la liste des selectedApplications de backupScope. Exemple :

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

Cet exemple inclut les valeurs suivantes :

Valeur Description
resourceSelection Définit comment identifier les ressources appartenant à l'application protégée :
  • type: Spécifiez l'une des options suivantes :
    • ApplicationName : sauvegarde une application sig-apps dans le même espace de noms.
    • Selector : sauvegarde les ressources correspondant à un sélecteur donné dans le même espace de noms.
  • applicationName : si type est défini sur ApplicationName, spécifie le nom de l'application sig-apps dans le même espace de noms.
  • selector : si type est défini sur Selector, spécifie le sélecteur d'étiquettes pour sélectionner les ressources dans le même espace de noms.
components Liste des composants de l'application protégée, tels que les déploiements ou les ensembles avec état :
  • name : nom unique du composant.
  • resourceKind : choisissez entre Deployment ou StatefulSet.
  • resourceNames : liste des noms identifiant le resourceKind dans l'espace de noms.

Étapes suivantes