1.9. La restauration de l’OADP


1.9.1. La restauration des applications

Les sauvegardes d’applications sont restaurées en créant une ressource personnalisée de restauration (CR). Découvrez la création d’un CR de restauration.

Il est possible de créer des crochets de restauration pour exécuter des commandes dans un conteneur dans un pod en éditant le CR Restaurer. Découvrez Créer des crochets de restauration.

L’OADP sauvegarde les ressources applicatives en fonction du type, de l’espace de noms ou de l’étiquette. Cela signifie que vous pouvez afficher les ressources une fois la sauvegarde terminée. De même, vous pouvez voir les objets restaurés en fonction de l’espace de noms, du volume persistant (PV) ou de l’étiquette après la fin d’une opération de restauration. Afin de prévisualiser les ressources à l’avance, vous pouvez effectuer un cycle sec des opérations de sauvegarde et de restauration.

Conditions préalables

  • L’opérateur OADP a été installé.

Procédure

  1. Afin de prévisualiser les ressources incluses dans la sauvegarde avant d’exécuter la sauvegarde réelle, exécutez la commande suivante:

    $ velero backup create <backup-name> --snapshot-volumes false 
    1
    Copy to Clipboard Toggle word wrap
    1
    Indiquez la valeur du paramètre --snapshot-volumes comme false.
  2. Afin de connaître plus de détails sur les ressources de sauvegarde, exécutez la commande suivante:

    $ velero describe backup <backup_name> --details 
    1
    Copy to Clipboard Toggle word wrap
    1
    Indiquez le nom de la sauvegarde.
  3. Afin de prévisualiser les ressources incluses dans la restauration avant d’exécuter la restauration réelle, exécutez la commande suivante:

    $ velero restore create --from-backup <backup-name> 
    1
    Copy to Clipboard Toggle word wrap
    1
    Indiquez le nom de la sauvegarde créée pour examiner les ressources de sauvegarde.
    Important

    La commande de création de la restauration velero crée des ressources de restauration dans le cluster. Après avoir examiné les ressources, vous devez supprimer les ressources créées dans le cadre de la restauration.

  4. Afin de connaître plus de détails sur les ressources de restauration, exécutez la commande suivante:

    $ velero describe restore <restore_name> --details 
    1
    Copy to Clipboard Toggle word wrap
    1
    Indiquez le nom de la restauration.

1.9.1.2. Création d’un CR de restauration

La restauration d’une ressource personnalisée de sauvegarde (CR) en créant un CR de restauration.

Conditions préalables

  • Il faut installer l’API OpenShift pour l’opérateur de protection des données (OADP).
  • Le DataProtectionApplication CR doit être dans un état prêt.
  • Il faut avoir un Velero Backup CR.
  • La capacité de volume persistant (PV) doit correspondre à la taille demandée au moment de la sauvegarde. Ajustez la taille demandée si nécessaire.

Procédure

  1. Créer un CR Restaurer, comme dans l’exemple suivant:

    apiVersion: velero.io/v1
    kind: Restore
    metadata:
      name: <restore>
      namespace: openshift-adp
    spec:
      backupName: <backup> 
    1
    
      includedResources: [] 
    2
    
      excludedResources:
      - nodes
      - events
      - events.events.k8s.io
      - backups.velero.io
      - restores.velero.io
      - resticrepositories.velero.io
      restorePVs: true 
    3
    Copy to Clipboard Toggle word wrap
    1
    Le nom du Backup CR.
    2
    Facultatif : Spécifiez un éventail de ressources à inclure dans le processus de restauration. Les ressources peuvent être des raccourcis (par exemple, po pour les pods) ou entièrement qualifiés. En cas d’absence de précision, toutes les ressources sont incluses.
    3
    Facultatif: Le paramètre de restaurationPVs peut être défini sur false pour désactiver la restauration de PersistentVolumes à partir de VolumeSnapshot of Container Storage Interface (CSI) instantanés ou à partir de snapshots natifs lorsque VolumeSnapshotLocation est configuré.
  2. Assurez-vous que l’état de la Restauration CR est complété en entrant la commande suivante:

    $ oc get restores.velero.io -n openshift-adp <restore> -o jsonpath='{.status.phase}'
    Copy to Clipboard Toggle word wrap
  3. Assurez-vous que les ressources de sauvegarde ont été restaurées en entrant la commande suivante:

    $ oc get all -n <namespace> 
    1
    Copy to Clipboard Toggle word wrap
    1
    Espace de noms que vous avez sauvegardé.
  4. Lorsque vous rétablissez DeploymentConfig avec des volumes ou si vous utilisez des crochets post-restauration, exécutez le script de nettoyage dc-post-restore.sh en entrant la commande suivante:

    $ bash dc-restic-post-restore.sh -> dc-post-restore.sh
    Copy to Clipboard Toggle word wrap
    Note

    Au cours du processus de restauration, les plug-ins OADP Velero réduisent les objets DeploymentConfig et restaurent les pods en tant que gousses autonomes. Ceci est fait pour empêcher le cluster de supprimer les pods restaurés DeploymentConfig immédiatement sur la restauration et pour permettre aux crochets de restauration et de post-restauration de compléter leurs actions sur les gousses restaurées. Le script de nettoyage ci-dessous supprime ces pods déconnectés et met à l’échelle tous les objets DeploymentConfig vers le nombre approprié de répliques.

    Exemple 1.1. DC-restic-post-restore.sh script de nettoyage dc-post-restore.sh

    #!/bin/bash
    set -e
    
    # if sha256sum exists, use it to check the integrity of the file
    if command -v sha256sum >/dev/null 2>&1; then
      CHECKSUM_CMD="sha256sum"
    else
      CHECKSUM_CMD="shasum -a 256"
    fi
    
    label_name () {
        if [ "${#1}" -le "63" ]; then
    	echo $1
    	return
        fi
        sha=$(echo -n $1|$CHECKSUM_CMD)
        echo "${1:0:57}${sha:0:6}"
    }
    
    if [[ $# -ne 1 ]]; then
        echo "usage: ${BASH_SOURCE} restore-name"
        exit 1
    fi
    
    echo "restore: $1"
    
    label=$(label_name $1)
    echo "label:   $label"
    
    echo Deleting disconnected restore pods
    oc delete pods --all-namespaces -l oadp.openshift.io/disconnected-from-dc=$label
    
    for dc in $(oc get dc --all-namespaces -l oadp.openshift.io/replicas-modified=$label -o jsonpath='{range .items[*]}{.metadata.namespace}{","}{.metadata.name}{","}{.metadata.annotations.oadp\.openshift\.io/original-replicas}{","}{.metadata.annotations.oadp\.openshift\.io/original-paused}{"\n"}')
    do
        IFS=',' read -ra dc_arr <<< "$dc"
        if [ ${#dc_arr[0]} -gt 0 ]; then
    	echo Found deployment ${dc_arr[0]}/${dc_arr[1]}, setting replicas: ${dc_arr[2]}, paused: ${dc_arr[3]}
    	cat <<EOF | oc patch dc  -n ${dc_arr[0]} ${dc_arr[1]} --patch-file /dev/stdin
    spec:
      replicas: ${dc_arr[2]}
      paused: ${dc_arr[3]}
    EOF
        fi
    done
    Copy to Clipboard Toggle word wrap

1.9.1.3. Créer des crochets de restauration

Créez des crochets de restauration pour exécuter des commandes dans un conteneur dans un pod en éditant la ressource personnalisée Restaurer (CR).

Il est possible de créer deux types de crochets de restauration:

  • Le crochet init ajoute un conteneur init à un pod pour effectuer des tâches de configuration avant le démarrage du conteneur de l’application.

    En cas de restauration d’une sauvegarde Restic, le conteneur init d’attente restique est ajouté avant le conteneur d’entrée du crochet de restauration.

  • Le crochet exec exécute des commandes ou des scripts dans un conteneur d’un pod restauré.

Procédure

  • Ajoutez un crochet au bloc spec.hooks de la Restauration CR, comme dans l’exemple suivant:

    apiVersion: velero.io/v1
    kind: Restore
    metadata:
      name: <restore>
      namespace: openshift-adp
    spec:
      hooks:
        resources:
          - name: <hook_name>
            includedNamespaces:
            - <namespace> 
    1
    
            excludedNamespaces:
            - <namespace>
            includedResources:
            - pods 
    2
    
            excludedResources: []
            labelSelector: 
    3
    
              matchLabels:
                app: velero
                component: server
            postHooks:
            - init:
                initContainers:
                - name: restore-hook-init
                  image: alpine:latest
                  volumeMounts:
                  - mountPath: /restores/pvc1-vm
                    name: pvc1-vm
                  command:
                  - /bin/ash
                  - -c
                timeout: 
    4
    
            - exec:
                container: <container> 
    5
    
                command:
                - /bin/bash 
    6
    
                - -c
                - "psql < /backup/backup.sql"
                waitTimeout: 5m 
    7
    
                execTimeout: 1m 
    8
    
                onError: Continue 
    9
    Copy to Clipboard Toggle word wrap
    1
    Facultatif: Arrivée des espaces de noms auxquels le crochet s’applique. Dans le cas où cette valeur n’est pas spécifiée, le crochet s’applique à tous les espaces de noms.
    2
    Actuellement, les pods sont la seule ressource prise en charge à laquelle les crochets peuvent s’appliquer.
    3
    Facultatif: Ce crochet ne s’applique qu’aux objets correspondant au sélecteur d’étiquette.
    4
    Facultatif: Timeout spécifie la durée maximale d’attente de Velero pour que les conteneurs init se terminent.
    5
    Facultatif: Si le conteneur n’est pas spécifié, la commande s’exécute dans le premier conteneur dans le pod.
    6
    C’est le point d’entrée pour le conteneur d’init ajouté.
    7
    Facultatif: Combien de temps pour attendre qu’un conteneur soit prêt. Cela devrait être assez long pour que le conteneur puisse démarrer et pour que tous les crochets précédents dans le même conteneur soient terminés. Dans le cas contraire, le processus de restauration attend indéfiniment.
    8
    Facultatif: Combien de temps pour attendre que les commandes s’exécutent. La valeur par défaut est 30s.
    9
    Les valeurs autorisées pour le traitement des erreurs sont l’échec et la poursuite:
    • Continuer: Seuls les échecs de commande sont enregistrés.
    • Échec: Plus les crochets de restauration s’exécutent dans n’importe quel conteneur dans n’importe quelle gousse. Le statut de la Restauration CR sera partiellement affiné.
Important

Lors d’une opération de restauration de système de fichiers (FSB), une ressource de déploiement faisant référence à un ImageStream n’est pas restaurée correctement. La gousse restaurée qui exécute le FSB, et le postHook est interrompu prématurément.

Cela se produit parce que, pendant l’opération de restauration, le contrôleur OpenShift met à jour le champ spec.template.spec.containers dans la ressource Déploiement avec un hachage ImageStreamTag mis à jour. La mise à jour déclenche le déploiement d’un nouveau pod, mettant fin à la gousse sur laquelle velero exécute le FSB et le crochet de restauration de poste. En savoir plus sur le déclencheur du flux d’images, voir « Triggering update on image stream changes ».

La solution de contournement de ce comportement est un processus de restauration en deux étapes:

  1. D’abord, effectuer une restauration à l’exclusion des ressources de déploiement, par exemple:

    $ velero restore create <RESTORE_NAME> \
      --from-backup <BACKUP_NAME> \
      --exclude-resources=deployment.apps
    Copy to Clipboard Toggle word wrap
  2. Après le succès de la première restauration, effectuez une deuxième restauration en incluant ces ressources, par exemple:

    $ velero restore create <RESTORE_NAME> \
      --from-backup <BACKUP_NAME> \
      --include-resources=deployment.apps
    Copy to Clipboard Toggle word wrap
Retour au début
Red Hat logoGithubredditYoutubeTwitter

Apprendre

Essayez, achetez et vendez

Communautés

À propos de la documentation Red Hat

Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance. Découvrez nos récentes mises à jour.

Rendre l’open source plus inclusif

Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez le Blog Red Hat.

À propos de Red Hat

Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.

Theme

© 2025 Red Hat