Skip to main content
NetApp virtualization 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.

Proteja las máquinas virtuales en Red Hat OpenShift Virtualization con Trident Protect

Colaboradores netapp-jsnyder kevin-hoke

Proteja las máquinas virtuales en OpenShift Virtualization mediante instantáneas y copias de seguridad. Este procedimiento incluye la creación de un AppVault utilizando el almacenamiento de objetos ONTAP S3, la configuración de Trident Protect para capturar datos de VM, incluidos objetos de recursos de Kubernetes, volúmenes persistentes e imágenes internas, y la restauración de los datos cuando sea necesario.

Las máquinas virtuales en el entorno de virtualización OpenShift son aplicaciones en contenedores que se ejecutan en los nodos de trabajo de su plataforma OpenShift Container. Es importante proteger los metadatos de las máquinas virtuales, así como los discos persistentes de las máquinas virtuales, para que cuando se pierdan o se dañen, se puedan recuperar.

Los discos persistentes de las máquinas virtuales de OpenShift Virtualization pueden respaldarse con almacenamiento ONTAP integrado al clúster OpenShift mediante"Trident CSI" . En esta sección utilizamos"Protección Trident" para crear instantáneas y copias de seguridad de máquinas virtuales, incluidos sus volúmenes de datos en ONTAP Object Storage.

Luego restauramos desde una instantánea o una copia de seguridad cuando sea necesario.

Trident Protect permite realizar instantáneas, copias de seguridad, restauraciones y recuperación ante desastres de aplicaciones y máquinas virtuales en un clúster OpenShift. Para las máquinas virtuales de OpenShift Virtualization, 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 distintos componentes utilizados para los ejemplos de esta sección

Crear un almacén de aplicaciones para el almacenamiento de objetos

Crear AppVault

Antes de crear las instantáneas y las copias de seguridad para una aplicación o una máquina virtual, se debe configurar un almacenamiento de objetos en Trident Protect para almacenar las instantáneas y las copias de seguridad. Esto se hace usando el bucket CR. Sólo los administradores pueden crear un CR de bucket y configurarlo. El contenedor CR se conoce como AppVault en Trident Protect. Los objetos AppVault son la representación declarativa del flujo de trabajo de Kubernetes de un depósito de almacenamiento. Un CR de AppVault contiene las configuraciones necesarias para que un bucket se utilice en operaciones de protección, como copias de seguridad, instantáneas, operaciones de restauración y replicación de SnapMirror .

En este ejemplo, mostraremos el uso de ONTAP S3 como almacenamiento de objetos. Aquí se muestra el flujo de trabajo para crear AppVault CR para ONTAP S3: 1. Cree un servidor de almacén de objetos S3 en la SVM en el clúster ONTAP . 2. Cree un depósito en el servidor de almacén de objetos. 3. Cree un usuario S3 en la SVM. Guarde 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. Crear 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

Se creó ONTAP S3 Appvault

Crear una máquina virtual en OpenShift Virtualization

Crear una máquina virtual en OpenShift Virtualization

Las siguientes capturas de pantalla muestran la creación de la VM (demo-fedora en el espacio de nombres demo) desde la consola usando la plantilla. El disco raíz elige automáticamente la clase de almacenamiento predeterminada, por lo tanto, verifique que la clase de almacenamiento predeterminada esté configurada adecuadamente. En esta configuración, la clase de almacenamiento predeterminada es sc-zonea-san. Asegúrese de que cuando cree el disco adicional, elija la clase de almacenamiento sc-zonea-san y marque la casilla de verificación "Aplicar configuración de almacenamiento optimizada". Esto establecerá los modos de acceso en RWX y el modo de volumen en Bloquear.

Nota Trident admite el modo de acceso RWX en el modo de volumen de bloque para SAN (iSCSI, NVMe/TCP y FC). (Es el modo de acceso predeterminado para NAS). El modo de acceso RWX es necesario si necesita realizar una migración en vivo de las máquinas virtuales en un momento posterior.

clase de almacenamiento predeterminada

crear una máquina virtual de Fedora

plantilla predeterminada

personalizar

Agregar disco

disco añadido

vm, pods y pvc creados

Crear una aplicación

Crear aplicación

Crear una aplicación de protección Trident para la máquina virtual

En el ejemplo, el espacio de nombres de demostración tiene una máquina 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

Aplicación creada

Proteja la aplicación creando una copia de seguridad

Crear copias de seguridad

Crear una copia de seguridad a pedido

Cree una copia de seguridad de la aplicación (demo-vm) creada anteriormente que incluya todos los recursos en el espacio de nombres de demostración. Proporcione el nombre de la bóveda de aplicaciones 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.

Copia de seguridad a pedido creada

Crear copias de seguridad según un cronograma

Cree un cronograma para las copias de seguridad especificando la granularidad y la cantidad de copias de seguridad a conservar.

# 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

Programación de copias de seguridad creada

Copias de seguridad creadas a pedido y según programación

Restaurar desde una copia de seguridad

Restaurar desde copias de seguridad

Restaurar la máquina virtual al 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.

Primero, elimine la máquina virtual y asegúrese de que los PVC, el pod y los objetos de la máquina virtual se eliminen del espacio de nombres "demo".

fedora-vm eliminado

Ahora, cree un objeto de restauración de copia de seguridad en el lugar.

# 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

bir creado

Verifique que la máquina virtual, los pods y los PVC se hayan restaurado

VM restaurada creada

Restaurar la máquina virtual a un espacio de nombres diferente

Primero, cree un nuevo espacio de nombres en el que desea restaurar la aplicación, en este ejemplo demo2. A continuación, cree un objeto de restauración de copia de seguridad

# 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

br creado

Verifique que la VM, los pods y los PVC se creen en el nuevo espacio de nombres demo2.

VM en el nuevo espacio de nombres

Proteger la aplicación usando instantáneas

Crear instantáneas

Crear una instantánea a pedido Cree una instantánea para la aplicación y especifique el almacén de aplicaciones donde debe almacenarse.

# 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

instantánea a pedido

Crear un cronograma para las instantáneas Crea un cronograma para las instantáneas. Especifique la granularidad y la cantidad 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

programar instantáneas

instantánea programada

Restaurar desde una instantánea

Restaurar desde una instantánea

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

eliminar máquina virtual

Cree un objeto de restauración de instantánea en el lugar a partir de la instantánea 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

Señor

Verifique que la VM y sus PVC se creen en el espacio de nombres de demostración.

vm restaurada en el mismo espacio de nombres

Restaurar la máquina virtual desde la instantánea a un espacio de nombres diferente

Eliminar la máquina virtual en el espacio de nombres demo2 previamente restaurada desde la copia de seguridad.

Eliminar VM, PVC

Cree el objeto de restauración de instantánea a partir de la instantánea y proporcione 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

SR creado

Verifique que la VM y sus PVC se restauren en el nuevo espacio de nombres demo2.

VM restaurada en nuevo espacio de nombres

Restaurar una máquina virtual específica

Seleccionar máquinas virtuales específicas en un espacio de nombres para crear instantáneas/copias de seguridad y restaurar

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

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

VM demo-centos en el espacio de nombres de demostración

Etiquete la máquina virtual demo-centos y sus recursos asociados

etiqueta demo-centos vm, pvc

Verifique que la máquina virtual demo-centos y los pvc tengan las etiquetas

etiquetas de máquina virtual demo-centos

etiquetas de demo-centos pvc

Cree 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

etiquetas de demo-centos pvc

El método para crear copias de seguridad e instantáneas a pedido y según un cronograma es el mismo que se mostró anteriormente. Dado que la aplicación trident-protect que se utiliza para crear las instantáneas o las copias de seguridad solo contiene la VM específica del espacio de nombres, la restauración desde ellas solo restaura una VM específica. A continuación se muestra un ejemplo de una operación de copia de seguridad y restauración.

Crear una copia de seguridad de una máquina virtual 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 una copia de seguridad (copia de seguridad a pedido, 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.

Copia de seguridad de una 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ó usando la aplicación correspondiente. Si se crea una copia de seguridad en el lugar y una restauración a partir de esto, solo se restaura esta máquina virtual específica. Eliminar la máquina virtual Centos.

Máquina virtual Centos presente

Máquina virtual Centos eliminada

Cree una copia de seguridad y restauración en el lugar desde demo-centos-backup-on-demand y verifique que la máquina virtual centos se haya recreado.

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

crear una máquina virtual centos bir

máquina virtual centos creada

Restaurar una VM específica en un espacio de nombres diferente Cree una restauración de copia de seguridad en un espacio de nombres diferente (demo3) desde demo-centos-backup-on-demand y verifique que la VM centos se haya recreado.

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

crear una máquina virtual centos bir

máquina virtual centos creada

Demostración en video

El siguiente video muestra una demostración de cómo proteger una máquina virtual mediante instantáneas

Protegiendo una máquina virtual