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 d'erreur 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 puissiez identifier pour un champ d'application de sauvegarde ou de restauration.
  • 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) :
      • Créateur de sauvegarde : crée des sauvegardes manuelles et les restaure. Demandez à votre 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 lors de la sauvegarde et restaure toutes les ressources lors de la restauration :

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

Remplacez les éléments suivants :

  • USER_CLUSTER_NS : espace de noms du cluster d'utilisateur dans lequel réside votre application protégée.
  • PROTECTED_APP_NAME : nom de votre ProtectedApplication.

Cet exemple inclut les valeurs suivantes pour ProtectedApplication :

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. Il s'agit de l'application à laquelle s'applique la spécification de protection des données.
  • selector : si type est défini sur Selector, spécifie le sélecteur de libellés permettant de 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.

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

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

Remplacez les éléments suivants :

  • BACKUP_PLAN : nom de votre plan de sauvegarde.
  • USER_CLUSTER : nom de votre cluster d'utilisateur.
  • CRON_SCHEDULE : planification crontab indiquant quand planifier les sauvegardes, par exemple "*/30 * * * *". L'intervalle minimal entre les sauvegardes planifiées est de 10 minutes.
  • BACKUP_SCHEDULE_STATUS : si la valeur est true, les sauvegardes périodiques ne sont pas planifiées.
  • PROTECTED_APP_NAME : nom que vous avez attribué à votre ressource ProtectedApplication.
  • BACKUP_REPOSITORY : nom du dépôt de sauvegarde que vous utilisez pour stocker les sauvegardes.
  • BACKUP_DELETE_LOCK_DAYS : empêche la suppression de la sauvegarde pendant le nombre de jours spécifié après sa création (par exemple, 10 days).
  • BACKUP_RETAIN_DAYS : définit le nombre total de jours de conservation de la sauvegarde. Passé ce délai, la sauvegarde est automatiquement supprimée. Si vous définissez une valeur trop élevée, vous risquez de manquer d'espace de stockage. Si vous définissez une valeur trop basse, vous risquez de perdre des données. Si cette valeur n'est pas spécifiée, elle est définie sur 35 par défaut. Les règles de conservation ne remplacent pas celles de l'emplacement de stockage et ne peuvent pas dépasser 90 jours.

Étapes suivantes