Restaurez les applications à l'aide de Trident Protect
Vous pouvez utiliser Trident Protect pour restaurer votre application à partir d'une copie Snapshot ou d'une sauvegarde. La restauration d'un snapshot existant est plus rapide lors de la restauration d'une application sur le même cluster.
Lorsque vous restaurez une application, tous les crochets d'exécution configurés pour l'application sont restauré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. |
Annotations et étiquettes de namespace pendant les opérations de restauration et de basculement
Lors des opérations de restauration et de basculement, les libellés et les annotations dans l'espace de noms de destination correspondent aux libellés et aux annotations dans l'espace de noms source. Des étiquettes ou des annotations provenant de l'espace de noms source qui n'existent pas dans l'espace de noms de destination sont ajoutées et toutes les étiquettes ou annotations qui existent déjà sont écrasées pour correspondre à la valeur de l'espace de noms source. Les libellés ou annotations qui existent uniquement dans l'espace de noms de destination restent inchangés.
Si vous utilisez RedHat OpenShift, il est important de noter le rôle critique des annotations d'espace de noms dans les environnements OpenShift. Les annotations de l'espace de noms garantissent que les pods restaurés respectent les autorisations et les configurations de sécurité appropriées définies par les contraintes de contexte de sécurité (CSC) OpenShift et qu'ils peuvent accéder aux volumes sans problèmes d'autorisation. Pour plus d'informations, reportez-vous au "Documentation sur les contraintes de contexte de sécurité OpenShift". |
Vous pouvez empêcher l'écrasement d'annotations spécifiques dans l'espace de noms de destination en configurant la variable d'environnement Kubernetes RESTORE_SKIP_NAMESPACE_ANNOTATIONS
avant d'effectuer l'opération de restauration ou de basculement. Par exemple :
kubectl set env -n trident-protect deploy/trident-protect-controller-manager RESTORE_SKIP_NAMESPACE_ANNOTATIONS=<annotation_key_to_skip_1>,<annotation_key_to_skip_2>
Si vous avez installé l'application source à l'aide de Helm avec l' --create-namespace`indicateur, un traitement spécial est donné à la `name
clé d'étiquette. Lors du processus de restauration ou de basculement, Trident Protect copie cette étiquette dans l'espace de noms de destination, mais met à jour la valeur vers la valeur de l'espace de noms de destination si la valeur de la source correspond à l'espace de noms source. Si cette valeur ne correspond pas à l'espace de noms source, elle est copiée dans l'espace de noms de destination sans modification.
Exemple
L'exemple suivant présente un espace de noms source et de destination, chacun avec des annotations et des libellés différents. Vous pouvez voir l'état de l'espace de noms de destination avant et après l'opération, ainsi que la manière dont les annotations et les étiquettes sont combinées ou écrasées dans l'espace de noms de destination.
Avant l'opération de restauration ou de basculement
Le tableau suivant illustre l'état de l'exemple d'espaces de noms source et de destination avant l'opération de restauration ou de basculement :
Espace de noms | Annotations | Étiquettes |
---|---|---|
Espace de noms ns-1 (source) |
|
|
Espace de noms ns-2 (destination) |
|
|
Après l'opération de restauration
Le tableau suivant illustre l'état de l'exemple d'espace de noms de destination après une opération de restauration ou de basculement. Certaines clés ont été ajoutées, d'autres ont été écrasées et le name
libellé a été mis à jour pour correspondre à l'espace de noms de destination :
Espace de noms | Annotations | Étiquettes |
---|---|---|
Espace de noms ns-2 (destination) |
|
|
Restauration d'une sauvegarde vers un autre espace de noms
Lorsque vous restaurez une sauvegarde dans un espace de noms différent à l'aide d'une sauvegarde CR BackupRestore, Trident Protect restaure l'application dans un nouvel espace de noms, mais l'application restaurée n'est pas automatiquement protégée par Trident Protect. Pour protéger l'application restaurée, vous devez créer une application CR pour l'application restaurée afin qu'elle soit protégée par Trident Protect.
La restauration d'une sauvegarde dans un espace de noms différent avec des ressources existantes ne modifie aucune ressource qui partage des noms avec ceux de la sauvegarde. Pour restaurer toutes les ressources de la sauvegarde, supprimez et recréez l'espace de noms cible ou restaurez la sauvegarde dans un nouvel espace de noms. |
-
Créez le fichier de ressource personnalisée (CR) et nommez-le
trident-protect-backup-restore-cr.yaml
. -
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 la sauvegarde. Vous pouvez utiliser la commande suivante pour trouver ce chemin :
kubectl get backups <BACKUP_NAME> -n my-app-namespace -o jsonpath='{.status.appArchivePath}'
-
Spec.appVaultRef: (required) Nom de l'AppVault où sont stockés le contenu de la sauvegarde.
-
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
etmy-destination-namespace
par des informations provenant de votre environnement. -
Spec.storageClassMapping : mappage de la classe de stockage source de l'opération de restauration à la classe de stockage de destination. Remplacez
destinationStorageClass
etsourceStorageClass
par des informations provenant de votre environnement.apiVersion: protect.trident.netapp.io/v1o kind: BackupRestore metadata: name: my-cr-name namespace: my-destination-namespace spec: appArchivePath: my-backup-path appVaultRef: appvault-name namespaceMapping: [{"source": "my-source-namespace", "destination": "my-destination-namespace"}] storageClassMapping: destination: "${destinationStorageClass}" source: "${sourceStorageClass}"
-
-
(Facultatif) 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: (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 :-
ResourceFilter.resourceMatchers : tableau des objets resourceMatcher.
-
ResourceMatchers[].group: (Optional) Groupe de la ressource à filtrer.
-
ResourceMatchers[].kind: (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) Namespaces 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"]
-
-
Une fois que vous avez rempli le
trident-protect-backup-restore-cr.yaml
fichier avec les valeurs correctes, appliquez la CR :kubectl apply -f trident-protect-backup-restore-cr.yaml
-
Restaurez la sauvegarde dans un espace de noms différent, en remplaçant les valeurs entre parenthèses par les informations de votre environnement. 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 backuprestore <my_restore_name> --backup <backup_namespace>/<backup_to_restore> --namespace-mapping <source_to_destination_namespace_mapping>
Restaurer à partir d'une sauvegarde vers l'espace de noms d'origine
Vous pouvez à tout moment restaurer une sauvegarde dans l'espace de noms d'origine.
-
Créez le fichier de ressource personnalisée (CR) et nommez-le
trident-protect-backup-ipr-cr.yaml
. -
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 la sauvegarde. Vous pouvez utiliser la commande suivante pour trouver ce chemin :
kubectl get backups <BACKUP_NAME> -n my-app-namespace -o jsonpath='{.status.appArchivePath}'
-
Spec.appVaultRef: (required) Nom de l'AppVault où sont stockés le contenu de la sauvegarde.
Par exemple :
apiVersion: protect.trident.netapp.io/v1 kind: BackupInplaceRestore metadata: name: my-cr-name namespace: my-app-namespace spec: appArchivePath: my-backup-path appVaultRef: appvault-name
-
-
(Facultatif) 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: (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 :-
ResourceFilter.resourceMatchers : tableau des objets resourceMatcher.
-
ResourceMatchers[].group: (Optional) Groupe de la ressource à filtrer.
-
ResourceMatchers[].kind: (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) Namespaces 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"]
-
-
Une fois que vous avez rempli le
trident-protect-backup-ipr-cr.yaml
fichier avec les valeurs correctes, appliquez la CR :kubectl apply -f trident-protect-backup-ipr-cr.yaml
-
Restaurez la sauvegarde dans l'espace de noms d'origine en remplaçant les valeurs entre parenthèses par les informations de votre environnement. L'
backup`argument utilise un nom d'espace de noms et un nom de sauvegarde au format `<namespace>/<name>
. Par exemple :tridentctl protect create backupinplacerestore <my_restore_name> --backup <namespace/backup_to_restore>
Restauration d'un snapshot vers un autre espace de noms
Vous pouvez restaurer les données d'un instantané à l'aide d'un fichier de ressource personnalisée (CR) dans un espace de noms différent ou dans l'espace de noms source d'origine. Lorsque vous restaurez un snapshot sur un autre espace de noms à l'aide d'un CR SnapshotRestore, Trident Protect restaure l'application dans un nouvel espace de noms, mais l'application restaurée n'est pas automatiquement protégée par Trident Protect. Pour protéger l'application restaurée, vous devez créer une application CR pour l'application restaurée afin qu'elle soit protégée par Trident Protect.
-
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: (required) le nom de cette ressource personnalisée; choisissez un nom unique et sensible pour votre environnement.
-
Spec.appVaultRef: (required) le nom du AppVault dans lequel le contenu de l'instantané est stocké.
-
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 <SNAPHOT_NAME> -n my-app-namespace -o jsonpath='{.status.appArchivePath}'
-
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
etmy-destination-namespace
par des informations provenant de votre environnement. -
Spec.storageClassMapping : mappage de la classe de stockage source de l'opération de restauration à la classe de stockage de destination. Remplacez
destinationStorageClass
etsourceStorageClass
par des informations provenant de votre environnement.apiVersion: protect.trident.netapp.io/v1 kind: SnapshotRestore metadata: name: my-cr-name namespace: my-app-namespace spec: appVaultRef: appvault-name appArchivePath: my-snapshot-path namespaceMapping: [{"source": "my-source-namespace", "destination": "my-destination-namespace"}] storageClassMapping: destination: "${destinationStorageClass}" source: "${sourceStorageClass}"
-
-
(Facultatif) 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: (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 :-
ResourceFilter.resourceMatchers : tableau des objets resourceMatcher.
-
ResourceMatchers[].group: (Optional) Groupe de la ressource à filtrer.
-
ResourceMatchers[].kind: (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) Namespaces 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"]
-
-
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 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>
-
Restaurer à partir d'un snapshot vers l'espace de noms d'origine
Vous pouvez à tout moment restaurer un snapshot dans l'espace de noms d'origine.
-
Créez le fichier de ressource personnalisée (CR) et nommez-le
trident-protect-snapshot-ipr-cr.yaml
. -
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.appVaultRef: (required) le nom du AppVault dans lequel le contenu de l'instantané est stocké.
-
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 <SNAPSHOT_NAME> -n my-app-namespace -o jsonpath='{.status.appArchivePath}'
apiVersion: protect.trident.netapp.io/v1 kind: SnapshotInplaceRestore metadata: name: my-cr-name namespace: my-app-namespace spec: appVaultRef: appvault-name appArchivePath: my-snapshot-path
-
-
(Facultatif) 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: (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 :-
ResourceFilter.resourceMatchers : tableau des objets resourceMatcher.
-
ResourceMatchers[].group: (Optional) Groupe de la ressource à filtrer.
-
ResourceMatchers[].kind: (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) Namespaces 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"]
-
-
Une fois que vous avez rempli le
trident-protect-snapshot-ipr-cr.yaml
fichier avec les valeurs correctes, appliquez la CR :kubectl apply -f trident-protect-snapshot-ipr-cr.yaml
-
Restaurez l'instantané dans l'espace de noms d'origine en remplaçant les valeurs entre parenthèses par les informations de votre environnement. Par exemple :
tridentctl protect create snapshotinplacerestore <my_restore_name> --snapshot <snapshot_to_restore>
Vérifiez l'état d'une opération de restauration
Vous pouvez utiliser la ligne de commande pour vérifier l'état d'une opération de restauration en cours, terminée ou ayant échoué.
-
Utilisez la commande suivante pour récupérer le statut de l'opération de restauration en remplaçant les valeurs entre crochets par des informations de votre environnement :
kubectl get backuprestore -n <namespace_name> <my_restore_cr_name> -o jsonpath='{.status}'