Skip to main content
La versione in lingua italiana fornita proviene da una traduzione automatica. Per eventuali incoerenze, fare riferimento alla versione in lingua inglese.

Ripristina le applicazioni utilizzando Trident Protect

Collaboratori

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.

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

Nota 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)

  • annotation.one/key: "updatedvalue"

  • annotation.two/key: "true"

  • ambiente=produzione

  • conformità=hipaa

  • name=ns-1

Namespace ns-2 (destinazione)

  • annotation.one/key: "true"

  • annotation.three/key: "false"

  • ruolo=database

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)

  • annotation.one/key: "updatedvalue"

  • annotation.two/key: "true"

  • annotation.three/key: "false"

  • name=ns-2

  • conformità=hipaa

  • ambiente=produzione

  • ruolo=database

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.

Nota 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.
Utilizzare un CR
Fasi
  1. Creare il file di risorse personalizzate (CR) e assegnargli un nome trident-protect-backup-restore-cr.yaml.

  2. 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 e my-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 e sourceStorageClass 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}"
  3. (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"]
  4. 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
Utilizzare la CLI
Fasi
  1. 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.

Utilizzare un CR
Fasi
  1. Creare il file di risorse personalizzate (CR) e assegnargli un nome trident-protect-backup-ipr-cr.yaml.

  2. 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
  3. (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"]
  4. 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
Utilizzare la CLI
Fasi
  1. 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.

Utilizzare un CR
Fasi
  1. Creare il file di risorse personalizzate (CR) e assegnargli un nome trident-protect-snapshot-restore-cr.yaml.

  2. 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 e my-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 e sourceStorageClass 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}"
  3. (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"]
  4. 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
Utilizzare la CLI
Fasi
  1. 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.

Utilizzare un CR
Fasi
  1. Creare il file di risorse personalizzate (CR) e assegnargli un nome trident-protect-snapshot-ipr-cr.yaml.

  2. 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
  3. (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"]
  4. 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
Utilizzare la CLI
Fasi
  1. 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.

Fasi
  1. 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}'