Ripristina le applicazioni utilizzando Trident Protect
Puoi utilizzare Trident Protect per ripristinare l'applicazione da uno snapshot o da un backup. Il ripristino da uno snapshot esistente sarà più rapido quando si ripristina l'applicazione nello stesso cluster.
Quando si ripristina un'applicazione, tutti i collegamenti di esecuzione configurati per l'applicazione vengono ripristinati con l'applicazione. Se è presente un gancio di esecuzione post-ripristino, viene eseguito automaticamente come parte dell'operazione di ripristino. |
Annotazioni ed etichette del namespace durante le operazioni di ripristino e failover
Durante le operazioni di ripristino e failover, vengono applicate etichette e annotazioni nel namespace di destinazione in modo che corrispondano alle etichette e alle annotazioni nel namespace di origine. Vengono aggiunte etichette o annotazioni dallo spazio dei nomi di origine che non esistono nello spazio dei nomi di destinazione e le etichette o annotazioni già esistenti vengono sovrascritte per corrispondere al valore dello spazio dei nomi di origine. Le etichette o le annotazioni presenti solo nello spazio dei nomi di destinazione rimangono invariate.
Se si utilizza RedHat OpenShift, è importante notare il ruolo critico delle annotazioni dello spazio dei nomi negli ambienti OpenShift. Le annotazioni dello spazio dei nomi assicurano che i pod ripristinati aderiscano alle autorizzazioni e alle configurazioni di sicurezza appropriate definite dai vincoli del contesto di protezione OpenShift (SCC) e possano accedere ai volumi senza problemi di autorizzazione. Per ulteriori informazioni, fare riferimento alla "Documentazione dei vincoli del contesto di protezione OpenShift" . |
Puoi impedire la sovrascrittura delle annotazioni specifiche nel namespace di destinazione impostando la variabile dell'ambiente Kubernetes RESTORE_SKIP_NAMESPACE_ANNOTATIONS
prima di eseguire l'operazione di ripristino o failover. Ad esempio:
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>
Se l'applicazione di origine è stata installata utilizzando Helm con il --create-namespace
flag, viene assegnato un trattamento speciale al name
tasto etichetta. Durante il processo di ripristino o failover, Trident Protect copia questa etichetta nello spazio dei nomi di destinazione, ma aggiorna il valore allo spazio dei nomi di destinazione se il valore di origine corrisponde allo spazio dei nomi di origine. Se questo valore non corrisponde allo spazio dei nomi di origine, viene copiato nello spazio dei nomi di destinazione senza modifiche.
Esempio
Nell'esempio seguente viene presentato uno spazio dei nomi di origine e destinazione, ciascuno con annotazioni ed etichette diverse. È possibile visualizzare lo stato dello spazio dei nomi di destinazione prima e dopo l'operazione e il modo in cui le annotazioni e le etichette vengono combinate o sovrascritte nello spazio dei nomi di destinazione.
Prima dell'operazione di ripristino o failover
La tabella seguente illustra lo stato degli spazi dei nomi di origine e di destinazione di esempio prima dell'operazione di ripristino o failover:
Namespace | Annotazioni | Etichette |
---|---|---|
Namespace ns-1 (origine) |
|
|
Namespace ns-2 (destinazione) |
|
|
Dopo l'operazione di ripristino
La tabella seguente illustra lo stato dello spazio dei nomi di destinazione di esempio dopo l'operazione di ripristino o failover. Alcune chiavi sono state aggiunte, altre sono state sovrascritte e l' `name`etichetta è stata aggiornata per corrispondere allo spazio dei nomi di destinazione:
Namespace | Annotazioni | Etichette |
---|---|---|
Namespace ns-2 (destinazione) |
|
|
Ripristino da un backup a uno spazio dei nomi diverso
Quando si ripristina un backup su uno spazio dei nomi diverso utilizzando un BackupRestore CR, Trident Protect ripristina l'applicazione in un nuovo spazio dei nomi, ma l'applicazione ripristinata non viene protetta automaticamente da Trident Protect. Per proteggere l'applicazione ripristinata, è necessario creare una CR dell'applicazione per l'applicazione ripristinata in modo che sia protetta da Trident Protect.
Il ripristino di un backup in uno spazio dei nomi diverso con le risorse esistenti non altererà le risorse che condividono i nomi con quelli del backup. Per ripristinare tutte le risorse del backup, eliminare e ricreare lo spazio dei nomi di destinazione o ripristinare il backup in un nuovo spazio dei nomi. |
-
Creare il file di risorse personalizzate (CR) e assegnargli un nome
trident-protect-backup-restore-cr.yaml
. -
Nel file creato, configurare i seguenti attributi:
-
metadata.name: (required) il nome di questa risorsa personalizzata; scegliere un nome univoco e sensibile per il proprio ambiente.
-
Spec.appArchivePath: Il percorso all'interno di AppVault in cui sono memorizzati i contenuti di backup. Per trovare il percorso, utilizzare il seguente comando:
kubectl get backups <BACKUP_NAME> -n my-app-namespace -o jsonpath='{.status.appArchivePath}'
-
Spec.appVaultRef: (required) il nome dell'AppVault in cui sono memorizzati i contenuti di backup.
-
spec.namespaceMapping: mappatura dello spazio dei nomi di origine dell'operazione di ripristino allo spazio dei nomi di destinazione. Sostituire
my-source-namespace
emy-destination-namespace
con le informazioni del proprio ambiente. -
Spec.storageClassMapping: Associazione della classe di archiviazione di origine dell'operazione di ripristino alla classe di archiviazione di destinazione. Sostituire
destinationStorageClass
esourceStorageClass
con le informazioni del proprio ambiente.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}"
-
-
(Optional) se è necessario selezionare solo determinate risorse dell'applicazione da ripristinare, aggiungere un filtro che includa o escluda risorse contrassegnate con determinate etichette:
-
ResourceFilter.resourceSelectionCriteria: (Necessario per il filtraggio) utilizzare
include or exclude
per includere o escludere una risorsa definita in resourceMatcher. Aggiungere i seguenti parametri resourceMatcher per definire le risorse da includere o escludere:-
ResourceFilter.resourceMatchers: Matrice di oggetti resourceMatcher.
-
ResourceMatchers[].group: (Optional) Gruppo della risorsa da filtrare.
-
ResourceMatchers[].Kind: (Optional) tipo di risorsa da filtrare.
-
ResourceMatchers[].version: (Optional) versione della risorsa da filtrare.
-
ResourceMatchers[].names: (Optional) nomi nel campo Kubernetes metadata.name della risorsa da filtrare.
-
ResourceMatchers[].namespaces: (Optional) Namespaces nel campo Kubernetes metadata.name della risorsa da filtrare.
-
ResourceMatchers[].labelSelectors: (Optional) stringa del selettore di etichette nel campo Kubernetes metadata.name della risorsa come definito nella "Documentazione Kubernetes" . Ad esempio:
"trident.netapp.io/os=linux"
.Ad esempio:
-
-
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"]
-
-
Dopo aver popolato il
trident-protect-backup-restore-cr.yaml
file con i valori corretti, applicare la CR:kubectl apply -f trident-protect-backup-restore-cr.yaml
-
Ripristinare il backup su uno spazio dei nomi diverso, sostituendo i valori tra parentesi con le informazioni provenienti dall'ambiente. L'
namespace-mapping`argomento utilizza spazi dei nomi separati da due punti per mappare gli spazi dei nomi di origine agli spazi dei nomi di destinazione corretti nel formato `source1:dest1,source2:dest2
. Ad esempio:tridentctl protect create backuprestore <my_restore_name> --backup <backup_namespace>/<backup_to_restore> --namespace-mapping <source_to_destination_namespace_mapping>
Eseguire il ripristino da un backup nello spazio dei nomi originale
È possibile ripristinare un backup nello spazio dei nomi originale in qualsiasi momento.
-
Creare il file di risorse personalizzate (CR) e assegnargli un nome
trident-protect-backup-ipr-cr.yaml
. -
Nel file creato, configurare i seguenti attributi:
-
metadata.name: (required) il nome di questa risorsa personalizzata; scegliere un nome univoco e sensibile per il proprio ambiente.
-
Spec.appArchivePath: Il percorso all'interno di AppVault in cui sono memorizzati i contenuti di backup. Per trovare il percorso, utilizzare il seguente comando:
kubectl get backups <BACKUP_NAME> -n my-app-namespace -o jsonpath='{.status.appArchivePath}'
-
Spec.appVaultRef: (required) il nome dell'AppVault in cui sono memorizzati i contenuti di backup.
Ad esempio:
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
-
-
(Optional) se è necessario selezionare solo determinate risorse dell'applicazione da ripristinare, aggiungere un filtro che includa o escluda risorse contrassegnate con determinate etichette:
-
ResourceFilter.resourceSelectionCriteria: (Necessario per il filtraggio) utilizzare
include or exclude
per includere o escludere una risorsa definita in resourceMatcher. Aggiungere i seguenti parametri resourceMatcher per definire le risorse da includere o escludere:-
ResourceFilter.resourceMatchers: Matrice di oggetti resourceMatcher.
-
ResourceMatchers[].group: (Optional) Gruppo della risorsa da filtrare.
-
ResourceMatchers[].Kind: (Optional) tipo di risorsa da filtrare.
-
ResourceMatchers[].version: (Optional) versione della risorsa da filtrare.
-
ResourceMatchers[].names: (Optional) nomi nel campo Kubernetes metadata.name della risorsa da filtrare.
-
ResourceMatchers[].namespaces: (Optional) Namespaces nel campo Kubernetes metadata.name della risorsa da filtrare.
-
ResourceMatchers[].labelSelectors: (Optional) stringa del selettore di etichette nel campo Kubernetes metadata.name della risorsa come definito nella "Documentazione Kubernetes" . Ad esempio:
"trident.netapp.io/os=linux"
.Ad esempio:
-
-
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"]
-
-
Dopo aver popolato il
trident-protect-backup-ipr-cr.yaml
file con i valori corretti, applicare la CR:kubectl apply -f trident-protect-backup-ipr-cr.yaml
-
Ripristinare il backup nello spazio dei nomi originale, sostituendo i valori tra parentesi con le informazioni provenienti dall'ambiente. L'
backup`argomento utilizza uno spazio dei nomi e un nome di backup nel formato `<namespace>/<name>
. Ad esempio:tridentctl protect create backupinplacerestore <my_restore_name> --backup <namespace/backup_to_restore>
Ripristino da uno snapshot a uno spazio dei nomi diverso
È possibile ripristinare i dati da uno snapshot utilizzando un file di risorse personalizzato (CR) in uno spazio dei nomi diverso o nello spazio dei nomi di origine originale. Quando si ripristina una snapshot in un namespace diverso utilizzando una CR SnapshotRestore, Trident Protect ripristina l'applicazione in un nuovo namespace, ma l'applicazione ripristinata non viene automaticamente protetta da Trident Protect. Per proteggere l'applicazione ripristinata, è necessario creare una CR dell'applicazione per l'applicazione ripristinata in modo che sia protetta da Trident Protect.
-
Creare il file di risorse personalizzate (CR) e assegnargli un nome
trident-protect-snapshot-restore-cr.yaml
. -
Nel file creato, configurare i seguenti attributi:
-
metadata.name: (required) il nome di questa risorsa personalizzata; scegliere un nome univoco e sensibile per il proprio ambiente.
-
Spec.appVaultRef: (required) il nome dell'AppVault in cui sono memorizzati i contenuti dello snapshot.
-
Spec.appArchivePath: Il percorso all'interno di AppVault in cui sono memorizzati i contenuti dello snapshot. Per trovare il percorso, utilizzare il seguente comando:
kubectl get snapshots <SNAPHOT_NAME> -n my-app-namespace -o jsonpath='{.status.appArchivePath}'
-
spec.namespaceMapping: mappatura dello spazio dei nomi di origine dell'operazione di ripristino allo spazio dei nomi di destinazione. Sostituire
my-source-namespace
emy-destination-namespace
con le informazioni del proprio ambiente. -
Spec.storageClassMapping: Associazione della classe di archiviazione di origine dell'operazione di ripristino alla classe di archiviazione di destinazione. Sostituire
destinationStorageClass
esourceStorageClass
con le informazioni del proprio ambiente.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}"
-
-
(Optional) se è necessario selezionare solo determinate risorse dell'applicazione da ripristinare, aggiungere un filtro che includa o escluda risorse contrassegnate con determinate etichette:
-
ResourceFilter.resourceSelectionCriteria: (Necessario per il filtraggio) utilizzare
include or exclude
per includere o escludere una risorsa definita in resourceMatcher. Aggiungere i seguenti parametri resourceMatcher per definire le risorse da includere o escludere:-
ResourceFilter.resourceMatchers: Matrice di oggetti resourceMatcher.
-
ResourceMatchers[].group: (Optional) Gruppo della risorsa da filtrare.
-
ResourceMatchers[].Kind: (Optional) tipo di risorsa da filtrare.
-
ResourceMatchers[].version: (Optional) versione della risorsa da filtrare.
-
ResourceMatchers[].names: (Optional) nomi nel campo Kubernetes metadata.name della risorsa da filtrare.
-
ResourceMatchers[].namespaces: (Optional) Namespaces nel campo Kubernetes metadata.name della risorsa da filtrare.
-
ResourceMatchers[].labelSelectors: (Optional) stringa del selettore di etichette nel campo Kubernetes metadata.name della risorsa come definito nella "Documentazione Kubernetes" . Ad esempio:
"trident.netapp.io/os=linux"
.Ad esempio:
-
-
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"]
-
-
Dopo aver popolato il
trident-protect-snapshot-restore-cr.yaml
file con i valori corretti, applicare la CR:kubectl apply -f trident-protect-snapshot-restore-cr.yaml
-
Ripristinare lo snapshot in uno spazio dei nomi diverso, sostituendo i valori tra parentesi con le informazioni provenienti dall'ambiente.
-
L'
snapshot`argomento utilizza uno spazio dei nomi e un nome snapshot nel formato `<namespace>/<name>
. -
L'
namespace-mapping`argomento utilizza spazi dei nomi separati da due punti per mappare gli spazi dei nomi di origine agli spazi dei nomi di destinazione corretti nel formato `source1:dest1,source2:dest2
.Ad esempio:
tridentctl protect create snapshotrestore <my_restore_name> --snapshot <namespace/snapshot_to_restore> --namespace-mapping <source_to_destination_namespace_mapping>
-
Ripristinare da uno snapshot allo spazio dei nomi originale
È possibile ripristinare uno snapshot nello spazio dei nomi originale in qualsiasi momento.
-
Creare il file di risorse personalizzate (CR) e assegnargli un nome
trident-protect-snapshot-ipr-cr.yaml
. -
Nel file creato, configurare i seguenti attributi:
-
metadata.name: (required) il nome di questa risorsa personalizzata; scegliere un nome univoco e sensibile per il proprio ambiente.
-
Spec.appVaultRef: (required) il nome dell'AppVault in cui sono memorizzati i contenuti dello snapshot.
-
Spec.appArchivePath: Il percorso all'interno di AppVault in cui sono memorizzati i contenuti dello snapshot. Per trovare il percorso, utilizzare il seguente comando:
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
-
-
(Optional) se è necessario selezionare solo determinate risorse dell'applicazione da ripristinare, aggiungere un filtro che includa o escluda risorse contrassegnate con determinate etichette:
-
ResourceFilter.resourceSelectionCriteria: (Necessario per il filtraggio) utilizzare
include or exclude
per includere o escludere una risorsa definita in resourceMatcher. Aggiungere i seguenti parametri resourceMatcher per definire le risorse da includere o escludere:-
ResourceFilter.resourceMatchers: Matrice di oggetti resourceMatcher.
-
ResourceMatchers[].group: (Optional) Gruppo della risorsa da filtrare.
-
ResourceMatchers[].Kind: (Optional) tipo di risorsa da filtrare.
-
ResourceMatchers[].version: (Optional) versione della risorsa da filtrare.
-
ResourceMatchers[].names: (Optional) nomi nel campo Kubernetes metadata.name della risorsa da filtrare.
-
ResourceMatchers[].namespaces: (Optional) Namespaces nel campo Kubernetes metadata.name della risorsa da filtrare.
-
ResourceMatchers[].labelSelectors: (Optional) stringa del selettore di etichette nel campo Kubernetes metadata.name della risorsa come definito nella "Documentazione Kubernetes" . Ad esempio:
"trident.netapp.io/os=linux"
.Ad esempio:
-
-
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"]
-
-
Dopo aver popolato il
trident-protect-snapshot-ipr-cr.yaml
file con i valori corretti, applicare la CR:kubectl apply -f trident-protect-snapshot-ipr-cr.yaml
-
Ripristinare lo snapshot nello spazio dei nomi originale, sostituendo i valori tra parentesi con le informazioni provenienti dall'ambiente. Ad esempio:
tridentctl protect create snapshotinplacerestore <my_restore_name> --snapshot <snapshot_to_restore>
Controllare lo stato di un'operazione di ripristino
È possibile utilizzare la riga di comando per verificare lo stato di un'operazione di ripristino in corso, completata o non riuscita.
-
Utilizzare il seguente comando per recuperare lo stato dell'operazione di ripristino, sostituendo i valori nei brackes con le informazioni dall'ambiente in uso:
kubectl get backuprestore -n <namespace_name> <my_restore_cr_name> -o jsonpath='{.status}'