Skip to main content
NetApp Solutions
Se proporciona el idioma español mediante traducción automática para su comodidad. En caso de alguna inconsistencia, el inglés precede al español.

Protección de datos para máquinas virtuales de OpenShift Virtualization con Trident Protect

Colaboradores

En esta sección del documento de referencia se proporcionan detalles para la creación de copias Snapshot y backups de máquinas virtuales mediante Trident Protect.

Las máquinas virtuales en el entorno de virtualización de OpenShift son aplicaciones en contenedores que se ejecutan en los nodos de trabajo de la plataforma de contenedores de OpenShift. Es importante proteger los metadatos de la máquina virtual y los discos persistentes de las máquinas virtuales, de forma que, cuando se pierden o están dañados, se puedan recuperar.

Los discos persistentes de las máquinas virtuales de virtualización de OpenShift pueden ser respaldados por el almacenamiento ONTAP integrado en el cluster de OpenShift usando "CSI de Trident". En esta sección "Trident Protect"utilizamos para crear snapshots y backups de máquinas virtuales, incluidos sus volúmenes de datos en el almacenamiento de objetos de ONTAP.

Posteriormente, restauramos desde un snapshot o un backup cuando sea necesario.

Trident Protect permite hacer copias Snapshot, backups, restauraciones y recuperación ante desastres de aplicaciones y máquinas virtuales en un clúster OpenShift. En las máquinas virtuales de virtualización OpenShift, los datos que se pueden proteger con Trident Protect incluyen objetos de recursos de Kubernetes asociados con las máquinas virtuales, volúmenes persistentes e imágenes internas.

Las siguientes son las versiones de los diversos componentes utilizados para los ejemplos de esta sección

Crear AppVault

Antes de crear las snapshots y backups para una aplicación o una máquina virtual, se debe configurar un almacenamiento de objetos en Trident Protect para almacenar las snapshots y los backups. Esto se realiza utilizando el bucket CR. Solo los administradores pueden crear un CR de bloque y configurarlo. El bucket CR se conoce como AppVault en Trident Protect. Los objetos de AppVault son la representación declarativa del flujo de trabajo de Kubernetes de un bloque de almacenamiento. Un AppVault CR contiene las configuraciones necesarias para que un bloque se utilice en operaciones de protección, como backups, snapshots, operaciones de restauración y replicación de SnapMirror.

En este ejemplo, mostraremos el uso de ONTAP S3 como almacenamiento de objetos. Aquí está el flujo de trabajo para crear AppVault CR para ONTAP S3: 1. Cree el servidor de almacén de objetos S3 en la SVM en el clúster de ONTAP. 2. Cree un bucket en el servidor de almacén de objetos. 3. Cree un usuario S3 en la SVM. Mantenga la clave de acceso y la clave secreta en un lugar seguro. 4. En OpenShift, cree un secreto para almacenar las credenciales de ONTAP S3. 5. Cree un objeto AppVault para ONTAP S3

Configurar Trident Protect AppVault para 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

Se creó Appvault de ONTAP S3

Cree una VM en OpenShift Virtualization

Las siguientes capturas de pantalla muestran la creación de la VM (demo-fedora in namespace demo) desde la consola usando la plantilla. El disco raíz elige automáticamente la clase de almacenamiento predeterminada, por lo tanto, compruebe que la clase de almacenamiento predeterminada se ha definido correctamente. En esta configuración, la clase de almacenamiento predeterminada es sc-zonea-san. Asegúrese de que al crear el disco adicional, elija la clase de almacenamiento sc-zonea-san y marque la casilla “Aplicar ajustes de almacenamiento optimizados”. Esto establecerá los modos de acceso en RWX y Modo de volumen en Bloquear.

Nota Trident admite el modo de acceso RWX en el modo de volumen de bloques para SAN (iSCSI, NVMe/TCP y FC). (Es el modo de acceso predeterminado para NAS). Se requiere el modo de acceso RWX si necesita realizar la migración en vivo de las máquinas virtuales en un punto posterior.

clase de almacenamiento predeterminada

Crear fedora VM

plantilla predeterminada

personalizar

Agregar disco

se añadió disco

equipos virtuales, pods y rvp creados

Crear aplicación

Crear una aplicación Trident Protect para la VM

En el ejemplo, el espacio de nombres de demostración tiene un equipo virtual y todos los recursos del espacio de nombres se incluyen al crear la aplicación.

# 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

Aplicación creada

Crear backups

Crear un backup bajo demanda

Crear un backup para la aplicación (demo-vm) creada previamente que incluya todos los recursos en el espacio de nombres de demostración. Proporcione el nombre de appvault donde se almacenarán las copias de seguridad.

# 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

Backup bajo demanda creado

Crear copias de seguridad en un horario

Cree una programación para los backups especificando la granularidad y la cantidad de backups que se retendrán.

# 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

Se creó la programación de backup

Backups creados bajo demanda y bajo programación

Restaurar desde backups

Restaura la VM en el mismo espacio de nombres

En el ejemplo, la copia de seguridad demo-vm-backup-on-demand contiene la copia de seguridad con la aplicación demo para la máquina virtual fedora.

En primer lugar, eliminar la VM y asegurarse de que los objetos de PVCs, POD y VM se eliminan de la “demo” de espacio de nombres

fedora-vm eliminado

Ahora, cree un objeto de restauración sin movimiento de backup.

# 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 creado

Comprobar que el equipo virtual, los pods y los RVP han sido restaurados

Se creó la máquina virtual restaurada

Restaura la VM a un espacio de nombres diferente

En primer lugar, cree un nuevo espacio de nombres en el que desee restaurar la aplicación, en este ejemplo demo2. A continuación, cree un objeto de restauración de 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 creado

Comprobar que el equipo virtual, los pods y las rvp se han creado en el nuevo espacio de nombres demo2.

Equipo virtual en el nuevo espacio de nombres

Crear snapshots

Crea una instantánea bajo demanda Crea una instantánea para la aplicación y especifica el appvault donde se debe almacenar.

# 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 de ondemand

Crear un horario para instantáneas Crear un horario para las instantáneas. Especifique la granularidad y el número de instantáneas que se conservarán.

# 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

programar snapshot

snapshot programada

Restaurar desde Snapshot

Restaurar la VM de la instantánea al mismo espacio de nombres Eliminar la VM demo-fedora del espacio de nombres demo2.

eliminación de vm

Cree un objeto Snapshot-in-place-restore desde la snapshot de la máquina virtual.

# 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

señor

Comprobar que el equipo virtual y sus RVP se crean en el espacio de nombres de demostración.

restauración de equipos virtuales en el mismo espacio de nombres

Restaura la VM de la instantánea a un espacio de nombres diferente

Elimine la máquina virtual en el espacio de nombres de demo2 PB restaurado anteriormente del backup.

Suprimir VM, RVP

Crear el objeto de restauración Snapshot a partir de la snapshot y proporcionar la asignación del espacio de nombres.

# 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 creada

Comprobar que la máquina virtual y sus PVR se han restaurado en el nuevo espacio de nombres demo2.

Restauración de equipos virtuales en un nuevo espacio de nombres

Selección de equipos virtuales específicos en un espacio de nombres para crear copias Snapshot/backups y restauración

En el ejemplo anterior teníamos un único equipo virtual dentro de un espacio de nombres. Al incluir todo el espacio de nombres en el backup, se capturaron todos los recursos asociados a esa máquina virtual. En el siguiente ejemplo, agregamos otra VM al mismo espacio de nombres y creamos una aplicación para esta nueva VM usando un selector de etiquetas.

Crear una nueva VM (demo-centos vm) en el espacio de nombres demo

Demostración de equipos virtuales en el espacio de nombres de demostración

Etiquetar la vm demo-centos y sus recursos asociados

etiqueta demo-centos vm, pvc

Verifique que el demo-centos vm y pvcs tienen las etiquetas

etiquetas de máquina virtual de demo-centos

demo-centos pvc tiene etiquetas

Crea una aplicación solo para una VM específica (demo-centos) usando el selector de etiquetas

# 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 tiene etiquetas

El método para crear backups y snapshots bajo demanda y bajo demanda es el mismo que se muestra anteriormente. Dado que la aplicación Trident-Protect que se utiliza para crear las copias Snapshot o los backups solo contiene el VM específico del espacio de nombres, al restaurar a partir de ellos solo se restaura una máquina virtual específica. A continuación se muestra un ejemplo de operación de backup/restauración.

Crear una copia de seguridad de una VM específica en un espacio de nombres utilizando su aplicación correspondiente

En los pasos anteriores, se creó una aplicación utilizando selectores de etiquetas para incluir solo la máquina virtual centos en el espacio de nombres de demostración. Cree un backup (backup bajo demanda, en este ejemplo) para esta aplicación.

# 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 de la máquina virtual específica creada

Restaurar una VM específica en el mismo espacio de nombres La copia de seguridad de una VM específica (centos) se creó utilizando la aplicación correspondiente. Si se crea un backup-in-place-restore o una backup-restore a partir de esto, solo se restaura esta máquina virtual específica. Suprimir la VM CentOS.

CentOS VM presente

VM de CentOS suprimida

Cree una restauración sin movimiento de backup desde demo-centos-backup-on-demand y compruebe que se ha vuelto a crear la máquina virtual centos.

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

crear centos vm bir

vm de centos creada

Restaurar una VM específica en un espacio de nombres diferente Crear una restauración de respaldo en un espacio de nombres diferente (demo3) desde demo-centos-backup-on-demand y verificar que la VM Centos se ha vuelto a crear.

# 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

crear centos vm bir

vm de centos creada