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

Cette page explique comment utiliser les ressources ProtectedApplication pour personnaliser le comportement des sauvegardes et des restaurations dans Google Distributed Cloud (GDC) air-gapped.

Les étapes décrites sur cette page sont facultatives et ne sont pas nécessaires pour configurer correctement la sauvegarde et la restauration de vos charges de travail. Les ressources ProtectedApplication sont des ressources Kubernetes facultatives dans les espaces de noms qui personnalisent la sauvegarde et la restauration des 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 ni de mise au repos n'est effectuée sur les charges de travail lors de l'exécution de la sauvegarde.Par conséquent, les machines virtuelles comportant plusieurs disques peuvent ne pas être cohérentes en cas de plantage 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.
  • Pour fournir une orchestration de sauvegarde spécialisée chaque fois que ProtectedApplication relève du champ d'application d'une sauvegarde. En particulier, si le ProtectedApplication contient des ressources PersistentVolumeClaim (PVC) directement ou via un modèle à partir 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

Pour utiliser les ressources ProtectedApplication, vous devez disposer des éléments suivants :

  • Vous devez définir la ressource ProtectedApplication avant de créer un plan de sauvegarde. Pour en savoir plus, consultez Planifier un ensemble de sauvegardes.
  • Rôle d'identité et d'accès nécessaire :

    • Pour les utilisateurs administrateurs de plate-forme :
      • Administrateur de sauvegarde de cluster d'utilisateur : gère les ressources de sauvegarde telles que les plans de sauvegarde et de restauration dans les clusters d'utilisateur. Demandez à votre administrateur IAM de l'organisation de vous attribuer le rôle Administrateur de la sauvegarde du cluster utilisateur (user-cluster-backup-admin).
    • Pour les utilisateurs Application Operator (AO) :
      • Backup Creator : crée des sauvegardes manuelles et les restaure. Demandez à l'administrateur IAM du projet de vous accorder le rôle Créateur de sauvegardes (backup-creator).
    • Pour en savoir plus, consultez Définitions des rôles.

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

Voici 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 pendant 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

Spécifiez le ProtectedApplication dans la liste des selectedApplications dans le 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 valeurs suivantes :
    • ApplicationName : sauvegarde une application sig-apps dans le même espace de noms.
    • Selector : sauvegarde les ressources qui correspondent à 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 de libellés 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 et StatefulSet.
  • resourceNames : liste des noms identifiant le resourceKind dans l'espace de noms.

Étapes suivantes