Migrer les applications à l'aide de Trident Protect
Vous pouvez migrer vos applications entre clusters ou vers différentes classes de stockage en restaurant des données de sauvegarde.
|
|
Lors de la migration d'une application, tous les points d'exécution configurés pour l'application sont migrés avec l'application. Si un point 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 pour les scénarios suivants, vous pouvez automatiser des tâches spécifiques de sauvegarde et de restauration.
Cloner vers le même cluster
Pour cloner une application sur le même cluster, créez un instantané ou une sauvegarde et restaurez les données sur le même cluster.
-
Effectuez l'une des opérations suivantes :
-
Sur le même cluster, effectuez l'une des opérations suivantes, selon que vous ayez créé un instantané ou une sauvegarde :
Cloner vers un cluster différent
Pour cloner une application sur un autre cluster (effectuer un clonage inter-clusters), créez une sauvegarde sur le cluster source, puis restaurez la sauvegarde sur un cluster différent. Assurez-vous que Trident Protect est installé sur le cluster de destination.
|
|
Vous pouvez répliquer une application entre différents clusters en utilisant "Réplication SnapMirror". |
-
Assurez-vous que la AppVault CR du compartiment de stockage d'objets contenant la sauvegarde a été configurée sur le cluster de destination.
-
Sur le cluster de destination, "restaurez vos données à partir de la sauvegarde".
Migrer des applications d'une classe de stockage à une autre classe de stockage
Vous pouvez migrer des applications d'une classe de stockage à une autre en restaurant une sauvegarde dans la classe de stockage de destination.
Par exemple (en excluant les secrets du 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
-
Créez le fichier de ressource personnalisée (CR) et nommez-le
trident-protect-snapshot-restore-cr.yaml. -
Dans le fichier que vous avez créé, configurez les attributs suivants :
-
metadata.name: (Obligatoire) Le nom de cette ressource personnalisée; choisissez un nom unique et pertinent pour votre environnement.
-
spec.appArchivePath : Le chemin à l'intérieur de AppVault où les contenus de l’instantané sont stockés. 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 : (Obligatoire) Le nom du AppVault où le contenu de l’instantané est stocké.
-
spec.namespaceMapping : La correspondance de l’espace de noms source de l’opération de restauration avec l’espace de noms de destination. Remplacez
my-source-namespaceetmy-destination-namespacepar les informations 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"}]
-
-
Optionnellement, si vous devez sélectionner uniquement certaines ressources de l'application à restaurer, ajoutez un filtrage qui inclut ou exclut les ressources marquées avec des étiquettes particulières :
-
resourceFilter.resourceSelectionCriteria : (Obligatoire pour le filtrage) Utilisez
include or excludepour inclure ou exclure une ressource définie dans resourceMatchers. Ajoutez les paramètres resourceMatchers suivants pour définir les ressources à inclure ou à exclure :-
resourceFilter.resourceMatchers : Un tableau d’objets resourceMatcher. Si vous définissez plusieurs éléments dans ce tableau, ils correspondent selon une opération OU, et les champs à l’intérieur de chaque élément (group, kind, version) correspondent selon une opération ET.
-
resourceMatchers[].group: (Optionnel) Groupe de la ressource à filtrer.
-
resourceMatchers[].kind: (Optionnel) Type de ressource à filtrer.
-
resourceMatchers[].version: (Optionnel) Version de la ressource à filtrer.
-
resourceMatchers[].names: (Optionnel) Noms dans le champ Kubernetes metadata.name de la ressource à filtrer.
-
resourceMatchers[].namespaces: (Optionnel) Espaces de noms dans le champ metadata.name de Kubernetes de la ressource à filtrer.
-
resourceMatchers[].labelSelectors : (Optionnel) Chaîne de sélection d'étiquette dans le champ metadata.name de la ressource Kubernetes tel que défini dans le "Documentation Kubernetes". Par exemple :
"trident.netapp.io/os=linux".Par exemple :
-
-
spec: resourceFilter: resourceSelectionCriteria: "include" resourceMatchers: - group: my-resource-group-1 kind: my-resource-kind-1 version: my-resource-version-1 names: ["my-resource-names"] namespaces: ["my-resource-namespaces"] labelSelectors: ["trident.netapp.io/os=linux"] - group: my-resource-group-2 kind: my-resource-kind-2 version: my-resource-version-2 names: ["my-resource-names"] namespaces: ["my-resource-namespaces"] labelSelectors: ["trident.netapp.io/os=linux"] -
-
Après avoir rempli le fichier
trident-protect-snapshot-restore-cr.yamlavec les valeurs correctes, appliquez le CR :kubectl apply -f trident-protect-snapshot-restore-cr.yaml
-
Restaurez l’instantané dans un espace de noms différent, en remplaçant les valeurs entre crochets par les informations de votre environnement.
-
L’
snapshot`argument utilise un 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 des deux-points pour mapper les espaces de noms source aux espaces de noms de destination corrects au 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> -