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

Protezione dei dati delle VM nella virtualizzazione OpenShift con Trident Protect

Collaboratori

Questa sezione del documento di riferimento fornisce dettagli per la creazione di snapshot e backup delle VM utilizzando Trident Protect.

Le macchine virtuali nell'ambiente di virtualizzazione OpenShift sono applicazioni containerizzate che vengono eseguite nei nodi di lavoro della piattaforma container OpenShift. È importante proteggere i metadati delle macchine virtuali e i dischi persistenti delle macchine virtuali, in modo che in caso di perdita o danneggiamento possano essere ripristinati.

I dischi permanenti delle VM di virtualizzazione OpenShift possono essere sottoposti a backup dallo storage ONTAP integrato nel cluster OpenShift mediante "CSI Trident". In questa sezione ci serviamo "Protezione Trident" di creare snapshot e backup di VM, inclusi i relativi volumi di dati, sullo storage a oggetti ONTAP.

Quindi, eseguiamo il ripristino da uno snapshot o da un backup, se necessario.

Trident Protect permette snapshot, backup, ripristino e disaster recovery di applicazioni e VM in un cluster OpenShift. Per le VM di virtualizzazione OpenShift, i dati che possono essere protetti con Trident Protect includono gli oggetti di risorse Kubernetes associati alle VM, i volumi persistenti e le immagini interne.

Di seguito sono riportate le versioni dei vari componenti utilizzati per gli esempi di questa sezione

Crea AppVault

Prima di creare snapshot e backup per un'applicazione o una VM, è necessario configurare uno storage a oggetti in Trident Protect per memorizzare snapshot e backup. Questa operazione viene eseguita utilizzando la benna CR. Solo gli amministratori possono creare e configurare un bucket CR. Il bucket CR è noto come AppVault in Trident Protect. Gli oggetti AppVault sono la rappresentazione dichiarativa del flusso di lavoro di Kubernetes di un bucket di storage. AppVault CR contiene le configurazioni necessarie per l'utilizzo di un bucket nelle operazioni di protezione, come backup, snapshot, operazioni di ripristino e replica SnapMirror.

In questo esempio mostreremo l'utilizzo di ONTAP S3 come storage a oggetti. Ecco il flusso di lavoro per la creazione di AppVault CR per ONTAP S3: 1. Creare un server per archivio oggetti S3 nella SVM nel cluster ONTAP. 2. Creare un bucket in Object Store Server. 3. Creare un utente S3 nella SVM. Conservare la chiave di accesso e la chiave segreta in un luogo sicuro. 4. In OpenShift, creare un segreto per memorizzare le credenziali di ONTAP S3. 5. Creare un oggetto AppVault per ONTAP S3

Configurare Trident Protect AppVault per ONTAP S3

# alias tp='tridentctl-protect'

# cat appvault-secret.yaml
apiVersion: v1
stringData:
  accessKeyID: "<access key of S3>"
  secretAccessKey: "<secret access key of S3>"
# you can also provide base 64 encoded values instead of string values
#data:
# base 64 encoded values
#  accessKeyID: < base 64 encoded access key>
#  secretAccessKey: <base 64 encoded secretAccess key>
kind: Secret
metadata:
  name: appvault-secret
  namespace: trident-protect
type: Opaque

# cat appvault.yaml
apiVersion: protect.trident.netapp.io/v1
kind: AppVault
metadata:
  name: ontap-s3-appvault
  namespace: trident-protect
spec:
  providerConfig:
    azure:
      accountName: ""
      bucketName: ""
      endpoint: ""
    gcp:
      bucketName: ""
      projectID: ""
    s3:
      bucketName: trident-protect
      endpoint: <lif for S3 access>
      secure: "false"
      skipCertValidation: "true"
  providerCredentials:
    accessKeyID:
      valueFromSecret:
        key: accessKeyID
        name: appvault-secret
    secretAccessKey:
      valueFromSecret:
        key: secretAccessKey
        name: appvault-secret
  providerType: OntapS3

# oc create -f appvault-secret.yaml -n trident-protect
# oc create -f appvault.yaml -n trident-protect
YAML

ONTAP S3 Appvault creato

Crea una macchina virtuale con OpenShift Virtualization

Le seguenti schermate mostrano la creazione della VM (demo-fedora nello spazio dei nomi) dalla console utilizzando il template. Il disco principale sceglie automaticamente la classe di archiviazione predefinita, quindi verificare che la classe di archiviazione predefinita sia impostata correttamente. In questa installazione, la classe di archiviazione predefinita è sc-zonea-san. Quando si crea il disco aggiuntivo, scegliere la classe di archiviazione sc-zonea-san e selezionare la casella di controllo "Apply Optimized storage settings" (Applica impostazioni di archiviazione ottimizzate**). In questo modo, le modalità di accesso vengono impostate su RWX e modalità volume su Blocca.

Nota Trident supporta la modalità di accesso RWX in modalità Block Volume per SAN (iSCSI, NVMe/TCP e FC). (È la modalità di accesso predefinita per NAS). La modalità accesso RWX è necessaria se è necessario eseguire la migrazione live delle VM in un secondo momento.

classe di archiviazione predefinita

Creare fedora VM

impostazione predefinita del modello

personalizzare

Aggiunta di un disco

disco aggiunto

creazione di vm, pod e pvc

Crea app

Creare un'app Trident Protect per la VM

Nell'esempio, lo spazio dei nomi demo ha una VM e tutte le risorse dello spazio dei nomi sono incluse durante la creazione dell'app.

# alias tp='tridentctl-protect'
# tp create app demo-vm --namespaces demo -n demo --dry-run > app.yaml

# cat app.yaml
apiVersion: protect.trident.netapp.io/v1
kind: Application
metadata:
  creationTimestamp: null
  name: demo-vm
  namespace: demo
spec:
  includedNamespaces:
  - namespace: demo
# oc create -f app.yaml -n demo
YAML

App creata

Creare backup

Creare un backup su richiesta

Creare un backup per l'app (demo-vm) creata in precedenza che includa tutte le risorse nello spazio dei nomi demo. Fornire il nome appvault in cui verranno memorizzati i backup.

# tp create backup demo-vm-backup-on-demand --app demo-vm --appvault ontap-s3-appvault -n demo
Backup "demo-vm-backup-on-demand" created.
YAML

Creazione di un backup on-demand

Creare backup su una pianificazione

Creare una pianificazione per i backup specificando la granularità e il numero di backup da conservare.

# tp create schedule backup-schedule1 --app demo-vm --appvault ontap-s3-appvault --granularity Hourly --minute 45 --backup-retention 1 -n demo --dry-run>backup-schedule-demo-vm.yaml
schedule.protect.trident.netapp.io/backup-schedule1 created

#cat backup-schedule-demo-vm.yaml
apiVersion: protect.trident.netapp.io/v1
kind: Schedule
metadata:
  creationTimestamp: null
  name: backup-schedule1
  namespace: demo
spec:
  appVaultRef: ontap-s3-appvault
  applicationRef: demo-vm
  backupRetention: "1"
  dayOfMonth: ""
  dayOfWeek: ""
  enabled: true
  granularity: Hourly
  hour: ""
  minute: "45"
  recurrenceRule: ""
  snapshotRetention: "0"
status: {}
# oc create -f backup-schedule-demo-vm.yaml -n demo
YAML

Pianificazione backup creata

Backup creati on-demand e on-Schedule

Ripristino da backup

Ripristinare la VM nello stesso spazio dei nomi

Nell'esempio il backup demo-vm-backup-on-demand contiene il backup con demo-app per fedora VM.

Innanzitutto, elimina la macchina virtuale e assicurati che PVC, pod e oggetti VM siano eliminati dalla "demo" del namespace

fedora-vm eliminata

Creare un oggetto di ripristino per il backup dei dati.

# tp create bir demo-fedora-restore --backup demo/demo-vm-backup-on-demand -n demo --dry-run>vm-demo-bir.yaml

# cat vm-demo-bir.yaml
apiVersion: protect.trident.netapp.io/v1
kind: BackupInplaceRestore
metadata:
  annotations:
    protect.trident.netapp.io/max-parallel-restore-jobs: "25"
  creationTimestamp: null
  name: demo-fedora-restore
  namespace: demo
spec:
  appArchivePath: demo-vm_cc8adc7a-0c28-460b-a32f-0a7b3d353e13/backups/demo-vm-backup-on-demand_f6af3513-9739-480e-88c7-4cca45808a80
  appVaultRef: ontap-s3-appvault
  resourceFilter: {}
status:
  postRestoreExecHooksRunResults: null
  state: ""

# oc create -f vm-demo-bir.yaml -n demo
backupinplacerestore.protect.trident.netapp.io/demo-fedora-restore created
YAML

bir creato

Verificare che la macchina virtuale, i pod e i PVC siano stati ripristinati

VM ripristinata creata

Ripristinare la VM su uno spazio dei nomi diverso

Creare innanzitutto un nuovo spazio dei nomi in cui si desidera ripristinare l'applicazione, in questo esempio demo2. Quindi creare un oggetto di ripristino di backup

# tp create br demo2-fedora-restore --backup demo/hourly-4c094-20250312154500 --namespace-mapping demo:demo2 -n demo2 --dry-run>vm-demo2-br.yaml

# cat vm-demo2-br.yaml
apiVersion: protect.trident.netapp.io/v1
kind: BackupRestore
metadata:
  annotations:
    protect.trident.netapp.io/max-parallel-restore-jobs: "25"
  creationTimestamp: null
  name: demo2-fedora-restore
  namespace: demo2
spec:
  appArchivePath: demo-vm_cc8adc7a-0c28-460b-a32f-0a7b3d353e13/backups/hourly-4c094-20250312154500_aaa14543-a3fa-41f1-a04c-44b1664d0f81
  appVaultRef: ontap-s3-appvault
  namespaceMapping:
  - destination: demo2
    source: demo
  resourceFilter: {}
status:
  conditions: null
  postRestoreExecHooksRunResults: null
  state: ""
# oc create -f vm-demo2-br.yaml -n demo2
YAML

br creato

Verifica che VM, pod e pvc siano creati nel nuovo namespace demo2.

VM nel nuovo namespace

Creare istantanee

Creare un'istantanea su richiesta creare un'istantanea per l'app e specificare l'appvault in cui deve essere memorizzata.

# tp create snapshot demo-vm-snapshot-ondemand --app demo-vm --appvault ontap-s3-appvault -n demo --dry-run
# cat demo-vm-snapshot-on-demand.yaml
apiVersion: protect.trident.netapp.io/v1
kind: Snapshot
metadata:
  creationTimestamp: null
  name: demo-vm-snapshot-ondemand
  namespace: demo
spec:
  appVaultRef: ontap-s3-appvault
  applicationRef: demo-vm
  completionTimeout: 0s
  volumeSnapshotsCreatedTimeout: 0s
  volumeSnapshotsReadyToUseTimeout: 0s
status:
  conditions: null
  postSnapshotExecHooksRunResults: null
  preSnapshotExecHooksRunResults: null
  state: ""

# oc create -f demo-vm-snapshot-on-demand.yaml
snapshot.protect.trident.netapp.io/demo-vm-snapshot-ondemand created
YAML

snapshot ondemand

Creare una pianificazione per le istantanee creare una pianificazione per le istantanee. Specificare la granularità e il numero di snapshot da conservare.

# tp create Schedule snapshot-schedule1 --app demo-vm --appvault ontap-s3-appvault --granularity Hourly --minute 50 --snapshot-retention 1 -n demo --dry-run>snapshot-schedule-demo-vm.yaml

# cat snapshot-schedule-demo-vm.yaml
apiVersion: protect.trident.netapp.io/v1
kind: Schedule
metadata:
  creationTimestamp: null
  name: snapshot-schedule1
  namespace: demo
spec:
  appVaultRef: ontap-s3-appvault
  applicationRef: demo-vm
  backupRetention: "0"
  dayOfMonth: ""
  dayOfWeek: ""
  enabled: true
  granularity: Hourly
  hour: ""
  minute: "50"
  recurrenceRule: ""
  snapshotRetention: "1"
status: {}

# oc create -f snapshot-schedule-demo-vm.yaml
schedule.protect.trident.netapp.io/snapshot-schedule1 created
YAML

pianificazione delle snapshot

snapshot pianificata

Ripristino da Snapshot

Ripristina la VM dallo snapshot allo stesso namespace Elimina la VM demo-fedora dallo spazio dei nomi demo2.

eliminazione vm

Creare un oggetto snapshot-in-place-restore dalla snapshot della VM.

# tp create sir demo-fedora-restore-from-snapshot --snapshot demo/demo-vm-snapshot-ondemand -n demo --dry-run>vm-demo-sir.yaml

# cat vm-demo-sir.yaml
apiVersion: protect.trident.netapp.io/v1
kind: SnapshotInplaceRestore
metadata:
  creationTimestamp: null
  name: demo-fedora-restore-from-snapshot
  namespace: demo
spec:
  appArchivePath: demo-vm_cc8adc7a-0c28-460b-a32f-0a7b3d353e13/snapshots/20250318132959_demo-vm-snapshot-ondemand_e3025972-30c0-4940-828a-47c276d7b034
  appVaultRef: ontap-s3-appvault
  resourceFilter: {}
status:
  conditions: null
  postRestoreExecHooksRunResults: null
  state: ""

# oc create -f vm-demo-sir.yaml
snapshotinplacerestore.protect.trident.netapp.io/demo-fedora-restore-from-snapshot created
YAML

signore

Verificare che la VM e i relativi PVC siano stati creati nello spazio dei nomi demo.

vm ripristinata nello stesso namespace

Ripristinare la VM dallo snapshot a uno spazio dei nomi diverso

Eliminare la VM nello spazio dei nomi demo2 precedentemente ripristinato dal backup.

Eliminazione di VM, PVC

Creare l'oggetto di ripristino dello snapshot dallo snapshot e fornire la mappatura dello spazio dei nomi.

# tp create sr demo2-fedora-restore-from-snapshot --snapshot demo/demo-vm-snapshot-ondemand --namespace-mapping demo:demo2 -n demo2 --dry-run>vm-demo2-sr.yaml

# cat vm-demo2-sr.yaml
apiVersion: protect.trident.netapp.io/v1
kind: SnapshotRestore
metadata:
  creationTimestamp: null
  name: demo2-fedora-restore-from-snapshot
  namespace: demo2
spec:
  appArchivePath: demo-vm_cc8adc7a-0c28-460b-a32f-0a7b3d353e13/snapshots/20250318132959_demo-vm-snapshot-ondemand_e3025972-30c0-4940-828a-47c276d7b034
  appVaultRef: ontap-s3-appvault
  namespaceMapping:
  - destination: demo2
    source: demo
  resourceFilter: {}
status:
  postRestoreExecHooksRunResults: null
  state: ""

# oc create -f vm-demo2-sr.yaml
snapshotrestore.protect.trident.netapp.io/demo2-fedora-restore-from-snapshot created
YAML

SR creato

Verificare che la macchina virtuale e i relativi PVC siano ripristinati nel nuovo spazio dei nomi demo2.

VM ripristinata in un nuovo namespace

Selezione di macchine virtuali specifiche in uno spazio dei nomi per creare snapshot/backup e ripristino

Nell'esempio precedente, avevamo una singola macchina virtuale all'interno di un namespace. Includendo l'intero namespace nel backup, sono state acquisite tutte le risorse associate a tale macchina virtuale. Nell'esempio seguente, aggiungeremo un'altra macchina virtuale allo stesso spazio dei nomi e creeremo un'applicazione solo per questa nuova macchina virtuale utilizzando un selettore di etichette.

Creare una nuova vm (demo-centos vm) nello spazio dei nomi demo

Demo-centos VM nello spazio dei nomi demo

Etichettare la vm demo-centos e le risorse associate

etichetta demo-centos vm, pvc

Verificare che le vm e i pvc demo-centos abbiano le etichette

etichette vm demo-centos

demo-centos pvc ha etichette

Creare un'app solo per una VM specifica (demo-centos) utilizzando il selettore delle etichette

# tp create app demo-centos-app --namespaces 'demo(category=protect-demo-centos)' -n demo --dry-run>demo-centos-app.yaml

# cat demo-centos-app.yaml

apiVersion: protect.trident.netapp.io/v1
kind: Application
metadata:
  creationTimestamp: null
  name: demo-centos-app
  namespace: demo
spec:
  includedNamespaces:
  - labelSelector:
      matchLabels:
        category: protect-demo-centos
    namespace: demo
status:
  conditions: null

# oc create -f demo-centos-app.yaml -n demo
application.protect.trident.netapp.io/demo-centos-app created
YAML

demo-centos pvc ha etichette

Il metodo di creazione di backup e snapshot su richiesta e in base a una pianificazione è lo stesso illustrato in precedenza. Poiché l'applicazione Trident-Protect utilizzata per creare snapshot o backup contiene solo la VM specifica dal namespace, ripristinando da esse solo una VM specifica. Un esempio di operazione di backup/ripristino è mostrato di seguito.

Creare un backup di una VM specifica in uno spazio dei nomi utilizzando la relativa app

Nei passaggi precedenti, è stata creata un'applicazione utilizzando selettori di etichette per includere solo centos vm nello spazio dei nomi demo. Creare un backup (backup su richiesta, in questo esempio) per questa applicazione.

# tp create backup demo-centos-backup-on-demand --app demo-centos-app --appvault ontap-s3-appvault -n demo
Backup "demo-centos-backup-on-demand" created.
YAML

Backup di una macchina virtuale specifica creata

Ripristinare una macchina virtuale specifica nello stesso spazio dei nomi il backup di una macchina virtuale specifica (centos) è stato creato utilizzando l'applicazione corrispondente. Se si crea un backup-in-place-restore o un backup-ripristino da questo, viene ripristinata solo questa VM specifica. Eliminare CentOS VM.

CentOS VM presente

CentOS VM eliminato

Creare un ripristino di backup sul posto da demo-centos-backup-on-demand e verificare che centos VM sia stato ricreato.

#tp create bir demo-centos-restore --backup demo/demo-centos-backup-on-demand -n demo
BackupInplaceRestore "demo-centos-restore" created.
YAML

creare un bir centos vm

centos vm creato

Ripristinare una macchina virtuale specifica in uno spazio dei nomi diverso creare un ripristino di backup in uno spazio dei nomi diverso (demo3) da demo-centos-backup-on-demand e verificare che la macchina virtuale centos sia stata ricreata.

# tp create br demo2-centos-restore --backup demo/demo-centos-backup-on-demand --namespace-mapping demo:demo3 -n demo3
BackupRestore "demo2-centos-restore" created.
YAML

creare un bir centos vm

centos vm creato