Skip to main content
La version française est une traduction automatique. La version anglaise prévaut sur la française en cas de divergence.

Migrez les applications

Contributeurs

Vous pouvez migrer vos applications entre des clusters ou des classes de stockage en restaurant vos données de sauvegarde ou d'instantané sur un autre cluster ou une autre classe de stockage.

Remarque Lorsque vous migrez une application, tous les crochets d'exécution configurés pour l'application sont migrés avec l'application. Si un hook d'exécution post-restauration est présent, il s'exécute automatiquement dans le cadre de l'opération de restauration.

Opérations de sauvegarde et de restauration

Pour effectuer des opérations de sauvegarde et de restauration dans les scénarios suivants, vous pouvez automatiser des tâches de sauvegarde et de restauration spécifiques.

Clone dans le même cluster

Pour cloner une application sur le même cluster, créez un Snapshot ou sauvegardez et restaurez les données sur le même cluster.

Étapes
  1. Effectuez l'une des opérations suivantes :

  2. Sur le même cluster, effectuez l'une des opérations suivantes, selon que vous avez créé un snapshot ou une sauvegarde :

Cloner vers un autre cluster

Pour cloner une application sur un autre cluster (effectuez un clone entre clusters), créez un snapshot ou une sauvegarde et restaurez les données sur un autre cluster. Assurez-vous que Trident Protect est installé sur le cluster de destination.

Étapes
  1. Effectuez l'une des opérations suivantes :

  2. Assurez-vous que la CR AppVault du compartiment de stockage objet contenant la sauvegarde ou le snapshot a été configurée sur le cluster de destination.

  3. Sur le cluster de destination, effectuez l'une des opérations suivantes, selon que vous avez créé un snapshot ou une sauvegarde :

Migration des applications d'une classe de stockage vers une autre

Vous pouvez migrer des applications d'une classe de stockage vers une autre classe de stockage en restaurant un snapshot sur la classe de stockage de destination différente.

Par exemple (à l'exclusion des secrets de la CR de restauration) :

apiVersion: protect.trident.netapp.io/v1
kind: SnapshotRestore
metadata:
  name: "${snapshotRestoreCRName}"
spec:
  appArchivePath: "${snapshotArchivePath}"
  appVaultRef: "${appVaultCRName}"
  namespaceMapping:
    destination: "${destinationNamespace}"
    source: "${sourceNamespace}"
  storageClassMapping:
    destination: "${destinationStorageClass}"
    source: "${sourceStorageClass}"
  resourceFilter:
    resourceMatchers:
      kind: Secret
      version: v1
    resourceSelectionCriteria: exclude
Restaurez l'instantané à l'aide d'une CR
  1. Créez le fichier de ressource personnalisée (CR) et nommez-le trident-protect-snapshot-restore-cr.yaml.

  2. Dans le fichier que vous avez créé, configurez les attributs suivants :

    • metadata.name: (required) le nom de cette ressource personnalisée; choisissez un nom unique et sensible pour votre environnement.

    • Spec.appArchivePath : chemin d'accès dans AppVault où sont stockés le contenu de l'instantané. Vous pouvez utiliser la commande suivante pour trouver ce chemin :

      kubectl get snapshots <my-snapshot-name> -n trident-protect -o jsonpath='{.status.appArchivePath}'
    • Spec.appVaultRef: (required) le nom du AppVault dans lequel le contenu de l'instantané est stocké.

    • spec.namespaceMapping: mappage de l'espace de noms source de l'opération de restauration sur l'espace de noms de destination. Remplacez my-source-namespace et my-destination-namespace par des informations provenant de votre environnement.

      apiVersion: protect.trident.netapp.io/v1
      kind: SnapshotRestore
      metadata:
        name: my-cr-name
        namespace: trident-protect
      spec:
        appArchivePath: my-snapshot-path
        appVaultRef: appvault-name
        namespaceMapping: [{"source": "my-source-namespace", "destination": "my-destination-namespace"}]
  3. Si vous avez besoin de sélectionner uniquement certaines ressources de l'application à restaurer, ajoutez un filtrage qui inclut ou exclut les ressources marquées d'étiquettes particulières :

    • ResourceFilter.resourceSelectionCriteria: (Requis pour le filtrage) utilisez include or exclude pour inclure ou exclure une ressource définie dans resourceMatchers. Ajoutez les paramètres resourceMatchers suivants pour définir les ressources à inclure ou à exclure :

    • resourceMatchers.group: (Optional) Groupe de la ressource à filtrer.

    • ResourceMatchers.type: (Optional) Type de la ressource à filtrer.

    • ResourceMatchers.version: (Optional) version de la ressource à filtrer.

    • resourceMatchers.names: (Optional) noms dans le champ Kubernetes metadata.name de la ressource à filtrer.

    • resourceMatchers.namespaces: (Optional) espaces de noms dans le champ Kubernetes metadata.name de la ressource à filtrer.

    • ResourceMatchers.labelSelectors: (Optional) chaîne de sélecteur de libellé dans le champ Kubernetes metadata.name de la ressource, comme défini dans le "Documentation Kubernetes". Par exemple : "trident.netapp.io/os=linux".

      Par exemple :

    spec:
      resourceFilter:
        resourceSelectionCriteria: "include"
        resourceMatchers:
          group: my-resource-group
          kind: my-resource-kind
          version: my-resource-version
          names: ["my-resource-names"]
          namespaces: ["my-resource-namespaces"]
          labelSelectors: ["trident.netapp.io/os=linux"]
  4. Une fois que vous avez rempli le trident-protect-snapshot-restore-cr.yaml fichier avec les valeurs correctes, appliquez la CR :

    kubectl apply -f trident-protect-snapshot-restore-cr.yaml
Restaurez le snapshot à l'aide de l'interface de ligne de commande
  1. Restaurez l'instantané dans un autre espace de noms, en remplaçant les valeurs entre parenthèses par les informations de votre environnement.

    • L' snapshot`argument utilise un nom d'espace de noms et un nom d'instantané au format `<namespace>/<name>.

    • L' namespace-mapping`argument utilise des espaces de noms séparés par deux-points pour mapper les espaces de noms source aux espaces de noms de destination corrects dans le format `source1:dest1,source2:dest2.

      Par exemple :

    tridentctl protect create snapshotrestore <my_restore_name> --snapshot <namespace/snapshot_to_restore> --namespace-mapping <source_to_destination_namespace_mapping>