Rechercher

4.4. Sauvegarde et restauration

download PDF

4.4.1. Sauvegarde des applications

Vous sauvegardez les applications en créant une Backup ressource personnalisée (CR).

Le CR Backup crée des fichiers de sauvegarde pour les ressources Kubernetes et les images internes, sur le stockage d'objets S3, et des instantanés pour les volumes persistants (PV), si le fournisseur de cloud utilise une API d'instantané native ou l'interface de stockage de conteneurs (CSI) pour créer des instantanés, comme OpenShift Data Foundation 4. Pour plus d'informations, voir Instantanés de volume CSI.

Important

L'API CloudStorage pour le stockage S3 est une fonctionnalité d'aperçu technologique uniquement. Les fonctionnalités de l'aperçu technologique ne sont pas prises en charge par les accords de niveau de service (SLA) de production de Red Hat et peuvent ne pas être complètes sur le plan fonctionnel. Red Hat ne recommande pas de les utiliser en production. Ces fonctionnalités offrent un accès anticipé aux fonctionnalités des produits à venir, ce qui permet aux clients de tester les fonctionnalités et de fournir un retour d'information pendant le processus de développement.

Pour plus d'informations sur la portée de l'assistance des fonctionnalités de l'aperçu technologique de Red Hat, voir Portée de l'assistance des fonctionnalités de l'aperçu technologique.

Si votre fournisseur de cloud dispose d'une API d'instantané native ou prend en charge les instantanés de l'interface de stockage de conteneurs (CSI), le CR Backup sauvegarde les volumes persistants en créant des instantanés. Pour plus d'informations, voir Overview of CSI volume snapshots dans la documentation OpenShift Container Platform.

Si votre fournisseur de cloud computing ne prend pas en charge les instantanés ou si vos applications se trouvent sur des volumes de données NFS, vous pouvez créer des sauvegardes à l'aide de Restic.

Vous pouvez créer des crochets de sauvegarde pour exécuter des commandes avant ou après l'opération de sauvegarde.

Vous pouvez planifier des sauvegardes en créant un CRSchedule au lieu d'un CR Backup.

4.4.1.1. Création d'un CR de sauvegarde

Vous sauvegardez les images Kubernetes, les images internes et les volumes persistants (PV) en créant une ressource personnalisée (CR) Backup.

Conditions préalables

  • Vous devez installer l'opérateur OpenShift API for Data Protection (OADP).
  • Le CR DataProtectionApplication doit être dans un état Ready.
  • Conditions préalables relatives à l'emplacement de la sauvegarde :

    • Le stockage d'objets S3 doit être configuré pour Velero.
    • Un emplacement de sauvegarde doit être configuré dans le CR DataProtectionApplication.
  • Conditions préalables pour l'emplacement des instantanés :

    • Votre fournisseur de cloud computing doit disposer d'une API d'instantané native ou prendre en charge les instantanés de l'interface de stockage de conteneurs (CSI).
    • Pour les instantanés CSI, vous devez créer un CR VolumeSnapshotClass pour enregistrer le pilote CSI.
    • Un emplacement de volume doit être configuré dans le CR DataProtectionApplication.

Procédure

  1. Récupérez les CR backupStorageLocations en entrant la commande suivante :

    $ oc get backupStorageLocations -n openshift-adp

    Exemple de sortie

    NAMESPACE       NAME              PHASE       LAST VALIDATED   AGE   DEFAULT
    openshift-adp   velero-sample-1   Available   11s              31m

  2. Créez un CR Backup, comme dans l'exemple suivant :

    apiVersion: velero.io/v1
    kind: Backup
    metadata:
      name: <backup>
      labels:
        velero.io/storage-location: default
      namespace: openshift-adp
    spec:
      hooks: {}
      includedNamespaces:
      - <namespace> 1
      includedResources: [] 2
      excludedResources: [] 3
      storageLocation: <velero-sample-1> 4
      ttl: 720h0m0s
      labelSelector: 5
      - matchLabels:
          app=<label_1>
      - matchLabels:
          app=<label_2>
      - matchLabels:
          app=<label_3>
      orlabelSelectors: 6
      - matchLabels:
          app=<label_1>
      - matchLabels:
          app=<label_2>
      - matchLabels:
          app=<label_3>
    1
    Spécifier un tableau d'espaces de noms à sauvegarder.
    2
    Facultatif : Spécifiez un tableau de ressources à inclure dans la sauvegarde. Les ressources peuvent être des raccourcis (par exemple, "po" pour "pods") ou être entièrement qualifiées. Si rien n'est spécifié, toutes les ressources sont incluses.
    3
    Facultatif : Spécifiez un tableau de ressources à exclure de la sauvegarde. Les ressources peuvent être des raccourcis (par exemple, "po" pour "pods") ou être entièrement qualifiées.
    4
    Indiquez le nom du CR backupStorageLocations.
    5
    Sauvegarde des ressources qui ont toutes les étiquettes spécifiées.
    6
    Sauvegarde des ressources qui ont une ou plusieurs des étiquettes spécifiées.
  3. Vérifiez que l'état de la CR Backup est Completed:

    $ oc get backup -n openshift-adp <backup> -o jsonpath='{.status.phase}'

4.4.1.2. Sauvegarde de volumes persistants avec des instantanés CSI

Vous sauvegardez des volumes persistants avec des instantanés de l'interface de stockage de conteneurs (CSI) en modifiant la ressource personnalisée (CR) VolumeSnapshotClass du stockage en nuage avant de créer la CR Backup.

Conditions préalables

  • Le fournisseur de services en nuage doit prendre en charge les instantanés CSI.
  • Vous devez activer le CSI sur le site DataProtectionApplication CR.

Procédure

  • Ajouter la paire clé-valeur metadata.labels.velero.io/csi-volumesnapshot-class: "true" à la CR VolumeSnapshotClass:

    apiVersion: snapshot.storage.k8s.io/v1
    kind: VolumeSnapshotClass
    metadata:
      name: <volume_snapshot_class_name>
      labels:
        velero.io/csi-volumesnapshot-class: "true"
    driver: <csi_driver>
    deletionPolicy: Retain

Vous pouvez maintenant créer un CR Backup.

4.4.1.3. Sauvegarde des applications avec Restic

Vous sauvegardez les ressources Kubernetes, les images internes et les volumes persistants avec Restic en modifiant la ressource personnalisée (CR) Backup.

Il n'est pas nécessaire de spécifier un emplacement d'instantané dans le CR DataProtectionApplication.

Important

Restic ne prend pas en charge la sauvegarde des volumes hostPath. Pour plus d'informations, voir les limitations supplémentaires de Restic.

Conditions préalables

  • Vous devez installer l'opérateur OpenShift API for Data Protection (OADP).
  • Vous ne devez pas désactiver l'installation par défaut de Restic en remplaçant spec.configuration.restic.enable par false dans le CR DataProtectionApplication.
  • Le CR DataProtectionApplication doit être dans un état Ready.

Procédure

  • Modifiez le CR Backup, comme dans l'exemple suivant :

    apiVersion: velero.io/v1
    kind: Backup
    metadata:
      name: <backup>
      labels:
        velero.io/storage-location: default
      namespace: openshift-adp
    spec:
      defaultVolumesToRestic: true 1
    ...
    1
    Ajouter defaultVolumesToRestic: true au bloc spec.

4.4.1.4. Utilisation de Data Mover pour les instantanés CSI

Important

Data Mover for CSI snapshots est une fonctionnalité d'aperçu technologique uniquement. Les fonctionnalités de l'aperçu technologique ne sont pas prises en charge par les accords de niveau de service (SLA) de production de Red Hat et peuvent ne pas être complètes sur le plan fonctionnel. Red Hat ne recommande pas leur utilisation en production. Ces fonctionnalités offrent un accès anticipé aux fonctionnalités des produits à venir, ce qui permet aux clients de tester les fonctionnalités et de fournir un retour d'information pendant le processus de développement.

Pour plus d'informations sur la portée de l'assistance des fonctionnalités de l'aperçu technologique de Red Hat, voir Portée de l'assistance des fonctionnalités de l'aperçu technologique.

Le Data Mover de l'OADP 1.1.2 permet aux clients de sauvegarder les instantanés de volume de l'interface de stockage de conteneurs (CSI) dans un magasin d'objets distant. Lorsque le Data Mover est activé, vous pouvez restaurer des applications avec état à partir du magasin en cas de panne, de suppression accidentelle ou de corruption du cluster. La solution OADP 1.1.2 Data Mover utilise l'option Restic de VolSync.

Note

Data Mover ne prend en charge que la sauvegarde et la restauration des instantanés de volumes CSI.

Actuellement, Data Mover ne prend pas en charge les buckets de Google Cloud Storage (GCS).

Conditions préalables

  • Vous avez vérifié que les ressources personnalisées (CR) StorageClass et VolumeSnapshotClass prennent en charge CSI.
  • Vous avez vérifié qu'un seul CR volumeSnapshotClass porte l'annotation snapshot.storage.kubernetes.io/is-default-class: true.
  • Vous avez vérifié qu'un seul CR storageClass porte l'annotation storageclass.kubernetes.io/is-default-class: true.
  • Vous avez inclus le label velero.io/csi-volumesnapshot-class: 'true' dans votre CR VolumeSnapshotClass.
  • Vous avez installé l'opérateur VolSync en utilisant le gestionnaire du cycle de vie de l'opérateur (OLM).

    Note

    L'opérateur VolSync n'est nécessaire que pour l'utilisation du Data Mover de l'aperçu technologique. Il n'est pas nécessaire pour utiliser les fonctions de production de l'OADP.

  • Vous avez installé l'opérateur OADP en utilisant OLM.

Procédure

  1. Configurez un secret Restic en créant un fichier .yaml comme suit :

    apiVersion: v1
    kind: Secret
    metadata:
      name: <secret_name>
      namespace: openshift-adp
    type: Opaque
    stringData:
      RESTIC_PASSWORD: <secure_restic_password>
    Note

    Par défaut, l'opérateur recherche un secret nommé dm-credential. Si vous utilisez un nom différent, vous devez le spécifier dans une application de protection des données (DPA) CR à l'aide de dpa.spec.features.dataMover.credentialName.

  2. Créez un DPA CR similaire à l'exemple suivant. Les plugins par défaut incluent CSI.

    Exemple de demande de protection des données (DPA) CR

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      name: velero-sample
      namespace: openshift-adp
    spec:
      features:
        dataMover:
          enable: true
          credentialName: <secret_name> 1
      backupLocations:
        - velero:
            config:
              profile: default
              region: us-east-1
            credential:
              key: cloud
              name: cloud-credentials
            default: true
            objectStorage:
              bucket: <bucket_name>
              prefix: <bucket_prefix>
            provider: aws
      configuration:
        restic:
          enable: <true_or_false>
        velero:
          defaultPlugins:
            - openshift
            - aws
            - csi

    1
    Ajoutez le nom secret Restic de l'étape précédente. Si cela n'est pas fait, le nom secret par défaut dm-credential est utilisé.

    L'opérateur OADP installe deux définitions de ressources personnalisées (CRD), VolumeSnapshotBackup et VolumeSnapshotRestore.

    Exemple VolumeSnapshotBackup CRD

    apiVersion: datamover.oadp.openshift.io/v1alpha1
    kind: VolumeSnapshotBackup
    metadata:
      name: <vsb_name>
      namespace: <namespace_name> 1
    spec:
      volumeSnapshotContent:
        name: <snapcontent_name>
      protectedNamespace: <adp_namespace>
      resticSecretRef:
        name: <restic_secret_name>

    1
    Spécifiez l'espace de noms dans lequel le cliché instantané du volume existe.

    Exemple VolumeSnapshotRestore CRD

    apiVersion: datamover.oadp.openshift.io/v1alpha1
    kind: VolumeSnapshotRestore
    metadata:
      name: <vsr_name>
      namespace: <namespace_name> 1
    spec:
      protectedNamespace: <protected_ns> 2
      resticSecretRef:
        name: <restic_secret_name>
      volumeSnapshotMoverBackupRef:
        sourcePVCData:
          name: <source_pvc_name>
          size: <source_pvc_size>
        resticrepository: <your_restic_repo>
        volumeSnapshotClassName: <vsclass_name>

    1
    Spécifiez l'espace de noms dans lequel le cliché instantané du volume existe.
    2
    Indiquez l'espace de noms dans lequel l'opérateur est installé. La valeur par défaut est openshift-adp.
  3. Vous pouvez sauvegarder un instantané de volume en procédant comme suit :

    1. Créer un CR de sauvegarde :

      apiVersion: velero.io/v1
      kind: Backup
      metadata:
        name: <backup_name>
        namespace: <protected_ns> 1
      spec:
        includedNamespaces:
        - <app_ns>
        storageLocation: velero-sample-1
      1
      Indiquez l'espace de noms dans lequel l'opérateur est installé. L'espace de noms par défaut est openshift-adp.
    2. Attendez jusqu'à 10 minutes et vérifiez si l'état de VolumeSnapshotBackup CR est Completed en entrant les commandes suivantes :

      $ oc get vsb -n <app_ns>
      $ oc get vsb <vsb_name> -n <app_ns> -o jsonpath="{.status.phase}"

      Un instantané est créé dans le magasin d'objets configuré dans le DPA.

      Note

      Si l'état de VolumeSnapshotBackup CR devient Failed, reportez-vous aux registres Velero pour le dépannage.

  4. Vous pouvez restaurer un instantané de volume en procédant comme suit :

    1. Supprimez l'espace de noms de l'application et le site volumeSnapshotContent qui a été créé par le plugin Velero CSI.
    2. Créez un CR Restore et définissez restorePVs comme true.

      Exemple Restore CR

      apiVersion: velero.io/v1
      kind: Restore
      metadata:
        name: <restore_name>
        namespace: <protected_ns>
      spec:
        backupName: <previous_backup_name>
        restorePVs: true

    3. Attendez jusqu'à 10 minutes et vérifiez si l'état de VolumeSnapshotRestore CR est Completed en entrant la commande suivante :

      $ oc get vsr -n <app_ns>
      $ oc get vsr <vsr_name> -n <app_ns> -o jsonpath="{.status.phase}"
    4. Vérifiez si les données et les ressources de votre application ont été restaurées.

      Note

      Si l'état de VolumeSnapshotRestore CR devient "Échec", reportez-vous aux journaux Velero pour le dépannage.

4.4.1.5. Création de crochets de sauvegarde

Vous créez des crochets de sauvegarde pour exécuter des commandes dans un conteneur d'un pod en modifiant la ressource personnalisée (CR) Backup.

Pre s'exécutent avant la sauvegarde du pod. Post s'exécutent après la sauvegarde.

Procédure

  • Ajoutez un crochet au bloc spec.hooks du CR Backup, comme dans l'exemple suivant :

    apiVersion: velero.io/v1
    kind: Backup
    metadata:
      name: <backup>
      namespace: openshift-adp
    spec:
      hooks:
        resources:
          - name: <hook_name>
            includedNamespaces:
            - <namespace> 1
            excludedNamespaces: 2
            - <namespace>
            includedResources: []
            - pods 3
            excludedResources: [] 4
            labelSelector: 5
              matchLabels:
                app: velero
                component: server
            pre: 6
              - exec:
                  container: <container> 7
                  command:
                  - /bin/uname 8
                  - -a
                  onError: Fail 9
                  timeout: 30s 10
            post: 11
    ...
    1
    Facultatif : vous pouvez spécifier les espaces de noms auxquels le crochet s'applique. Si cette valeur n'est pas spécifiée, le crochet s'applique à tous les espaces de noms.
    2
    Facultatif : vous pouvez spécifier des espaces de noms auxquels le crochet ne s'applique pas.
    3
    Actuellement, les pods sont la seule ressource prise en charge à laquelle les crochets peuvent s'appliquer.
    4
    Facultatif : vous pouvez spécifier les ressources auxquelles le crochet ne s'applique pas.
    5
    Facultatif : Ce crochet ne s'applique qu'aux objets correspondant à l'étiquette. Si cette valeur n'est pas spécifiée, le crochet s'applique à tous les espaces de noms.
    6
    Tableau de crochets à exécuter avant la sauvegarde.
    7
    Facultatif : si le conteneur n'est pas spécifié, la commande s'exécute dans le premier conteneur du pod.
    8
    Il s'agit du point d'entrée du conteneur init ajouté.
    9
    Les valeurs autorisées pour le traitement des erreurs sont Fail et Continue. La valeur par défaut est Fail.
    10
    Facultatif : durée d'attente pour l'exécution des commandes. La valeur par défaut est 30s.
    11
    Ce bloc définit un tableau de hooks à exécuter après la sauvegarde, avec les mêmes paramètres que les hooks de pré-sauvegarde.

4.4.1.6. Planification des sauvegardes

Vous planifiez les sauvegardes en créant une ressource personnalisée (CR) Schedule au lieu d'une CR Backup.

Avertissement

Laissez suffisamment de temps dans votre calendrier de sauvegarde pour qu'une sauvegarde se termine avant qu'une autre ne soit créée.

Par exemple, si la sauvegarde d'un espace de noms prend généralement 10 minutes, ne planifiez pas de sauvegardes plus fréquentes que toutes les 15 minutes.

Conditions préalables

  • Vous devez installer l'opérateur OpenShift API for Data Protection (OADP).
  • Le CR DataProtectionApplication doit être dans un état Ready.

Procédure

  1. Récupérer les CR de backupStorageLocations:

    $ oc get backupStorageLocations -n openshift-adp

    Exemple de sortie

    NAMESPACE       NAME              PHASE       LAST VALIDATED   AGE   DEFAULT
    openshift-adp   velero-sample-1   Available   11s              31m

  2. Créez un CR Schedule, comme dans l'exemple suivant :

    $ cat << EOF | oc apply -f -
    apiVersion: velero.io/v1
    kind: Schedule
    metadata:
      name: <schedule>
      namespace: openshift-adp
    spec:
      schedule: 0 7 * * * 1
      template:
        hooks: {}
        includedNamespaces:
        - <namespace> 2
        storageLocation: <velero-sample-1> 3
        defaultVolumesToRestic: true 4
        ttl: 720h0m0s
    EOF
    1
    cron expression to schedule the backup, for example, 0 7 * * * to perform a backup every day at 7:00.
    2
    Tableau des espaces de noms à sauvegarder.
    3
    Nom du CR backupStorageLocations.
    4
    Facultatif : Ajoutez la paire clé-valeur defaultVolumesToRestic: true si vous sauvegardez des volumes avec Restic.
  3. Vérifiez que l'état de Schedule CR est Completed après l'exécution de la sauvegarde programmée :

    $ oc get schedule -n openshift-adp <schedule> -o jsonpath='{.status.phase}'

4.4.1.7. Suppression des sauvegardes

Vous pouvez supprimer les fichiers de sauvegarde en supprimant la ressource personnalisée (CR) Backup.

Avertissement

Une fois que vous avez supprimé le CR Backup et les données de stockage d'objets associées, vous ne pouvez pas récupérer les données supprimées.

Conditions préalables

  • Vous avez créé un CR Backup.
  • Vous connaissez le nom du CR Backup et l'espace de noms qui le contient.
  • Vous avez téléchargé l'outil Velero CLI.
  • Vous pouvez accéder au binaire Velero dans votre cluster.

Procédure

  • Choisissez l'une des actions suivantes pour supprimer le CR Backup:

    • Pour supprimer le CR Backup et conserver les données de stockage de l'objet associé, exécutez la commande suivante :

      oc delete backup <backup_CR_name> -n <velero_namespace>
    • Pour supprimer le CR Backup et les données de stockage d'objets associées, exécutez la commande suivante :

      $ velero backup delete <backup_CR_name> -n <velero_namespace>

      Où ?

      <backup_CR_name>
      Spécifie le nom de la ressource personnalisée Backup.
      <velero_namespace>
      Spécifie l'espace de noms qui contient la ressource personnalisée Backup.

Ressources complémentaires

4.4.2. Restauration des applications

Vous restaurez les sauvegardes de l'application en créant une ressource personnalisée (CR) à l'adresseRestore .

Vous pouvez créer des crochets de restauration pour exécuter des commandes dans les conteneurs d'initialisation, avant le démarrage du conteneur d'application ou dans le conteneur d'application lui-même.

4.4.2.1. Création d'un CR de restauration

Vous restaurez une ressource personnalisée (CR) Backup en créant une CR Restore.

Conditions préalables

  • Vous devez installer l'opérateur OpenShift API for Data Protection (OADP).
  • Le CR DataProtectionApplication doit être dans un état Ready.
  • Vous devez avoir un Velero Backup CR.
  • Ajustez la taille demandée pour que la capacité du volume persistant (PV) corresponde à la taille demandée au moment de la sauvegarde.

Procédure

  1. Créez un CR Restore, 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
    1
    Nom du CR Backup.
    2
    Facultatif. Spécifiez un tableau de ressources à inclure dans le processus de restauration. Les ressources peuvent être des raccourcis (par exemple, "po" pour "pods") ou être entièrement qualifiées. Si rien n'est spécifié, toutes les ressources sont incluses.
  2. Vérifiez que l'état du CR Restore est Completed en entrant la commande suivante :

    $ oc get restore -n openshift-adp <restore> -o jsonpath='{.status.phase}'
  3. Vérifiez que les ressources de sauvegarde ont été restaurées en entrant la commande suivante :

    $ oc get all -n <namespace> 1
    1
    Namespace que vous avez sauvegardé.
  4. Si vous utilisez Restic pour restaurer les objets DeploymentConfig ou si vous utilisez des crochets post-restauration, exécutez le script de nettoyage dc-restic-post-restore.sh en entrant la commande suivante :

    bash dc-restic-post-restore.sh <restore-name>
    Note

    Au cours du processus de restauration, les plug-ins OADP Velero réduisent les objets DeploymentConfig et restaurent les pods en tant que pods autonomes pour éviter que le cluster ne supprime les pods DeploymentConfig restaurés immédiatement après la restauration et pour permettre aux hooks Restic et post-restauration de terminer leurs actions sur les pods restaurés. Le script de nettoyage supprime ces pods déconnectés et met à l'échelle tous les objets DeploymentConfig jusqu'au nombre approprié de répliques.

    Exemple 4.1. dc-restic-post-restore.sh script de nettoyage

    #!/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}"
    }
    
    OADP_NAMESPACE=${OADP_NAMESPACE:=openshift-adp}
    
    if [[ $# -ne 1 ]]; then
        echo "usage: ${BASH_SOURCE} restore-name"
        exit 1
    fi
    
    echo using OADP Namespace $OADP_NAMESPACE
    echo restore: $1
    
    label=$(label_name $1)
    echo label: $label
    
    echo Deleting disconnected restore pods
    oc delete pods -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

4.4.2.2. Création de crochets de restauration

Vous créez des crochets de restauration pour exécuter des commandes dans un conteneur dans un pod tout en restaurant votre application en modifiant la ressource personnalisée (CR) Restore.

Vous pouvez créer deux types de crochets de restauration :

  • Un crochet init ajoute un conteneur init à un pod pour effectuer des tâches de configuration avant que le conteneur d'application ne démarre.

    Si vous restaurez une sauvegarde Restic, le conteneur init restic-wait est ajouté avant le conteneur init restore hook.

  • Un hook exec exécute des commandes ou des scripts dans un conteneur d'un pod restauré.

Procédure

  • Ajoutez un crochet au bloc spec.hooks du CR Restore, 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
    1
    Facultatif : Tableau des espaces de noms auxquels le crochet s'applique. Si 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 indique la durée maximale pendant laquelle Velero attend la fin de initContainers.
    5
    Facultatif : si le conteneur n'est pas spécifié, la commande s'exécute dans le premier conteneur du pod.
    6
    Il s'agit du point d'entrée du conteneur init ajouté.
    7
    Facultatif : durée d'attente pour qu'un conteneur soit prêt. Cette durée doit être suffisante pour que le conteneur démarre et que tous les crochets précédents dans le même conteneur soient terminés. S'il n'est pas défini, le processus de restauration attend indéfiniment.
    8
    Facultatif : durée d'attente pour l'exécution des commandes. La valeur par défaut est 30s.
    9
    Les valeurs autorisées pour le traitement des erreurs sont Fail et Continue:
    • Continue: Seuls les échecs de commande sont consignés.
    • Fail: Plus aucun crochet de restauration n'est exécuté dans aucun conteneur, dans aucun pod. Le statut du CR Restore sera PartiallyFailed.
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.

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 leBlog 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.

© 2024 Red Hat, Inc.