Skip to main content
NetApp Solutions
La version française est une traduction automatique. La version anglaise prévaut sur la française en cas de divergence.

Protection des données pour les VM dans OpenShift Virtualization à l'aide de Trident Protect

Contributeurs

Cette section du document de référence fournit des détails sur la création de snapshots et de sauvegardes de machines virtuelles à l'aide de Trident Protect.

Les machines virtuelles de l'environnement OpenShift Virtualization sont des applications conteneurisées qui s'exécutent dans les nœuds workers de votre plateforme OpenShift Container. Il est important de protéger les métadonnées des machines virtuelles ainsi que les disques persistants des machines virtuelles, afin que vous puissiez les restaurer en cas de perte ou de corruption.

Les disques persistants des VM de virtualisation OpenShift peuvent être pris en charge par le stockage ONTAP intégré au cluster OpenShift à l'aide de "ISC Trident". Dans cette section, nous utilisons "Protéger Trident" pour créer des snapshots et des sauvegardes de machines virtuelles, y compris ses volumes de données, vers le stockage objet ONTAP.

Nous restaurons ensuite les données à partir d'un snapshot ou d'une sauvegarde, le cas échéant.

Trident Protect permet les copies Snapshot, les sauvegardes, les restaurations et la reprise après incident des applications et des VM sur un cluster OpenShift. Pour les machines virtuelles de virtualisation OpenShift, les données protégées avec Trident Protect incluent les objets de ressources Kubernetes associés aux machines virtuelles, aux volumes persistants et aux images internes.

Les versions suivantes des différents composants utilisés dans les exemples de cette section

Créer AppVault

Avant de créer les snapshots et les sauvegardes d'une application ou d'une machine virtuelle, un stockage objet doit être configuré dans Trident Protect pour stocker les snapshots et les sauvegardes. Pour ce faire, utilisez le godet CR. Seuls les administrateurs peuvent créer une CR de compartiment et la configurer. Le compartiment CR est appelé AppVault dans Trident Protect. Les objets AppVault sont la représentation déclarative du workflow Kubernetes d'un compartiment de stockage. Une CR AppVault contient les configurations nécessaires à l'utilisation d'un compartiment dans les opérations de protection, telles que les sauvegardes, les snapshots, les opérations de restauration et la réplication SnapMirror.

Dans cet exemple, nous allons présenter l'utilisation de ONTAP S3 en tant que stockage objet. Voici le workflow de création d'AppVault CR pour ONTAP S3 : 1. Créez le serveur de magasin d'objets S3 au sein du SVM dans le cluster ONTAP. 2. Créez un compartiment dans le serveur de stockage d'objets. 3. Créer un utilisateur S3 dans le SVM. Conservez la clé d'accès et la clé secrète en lieu sûr. 4. Dans OpenShift, créez un secret pour stocker les informations d'identification ONTAP S3. 5. Créez un objet AppVault pour ONTAP S3

Configurer Trident Protect AppVault pour 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

Coffre-fort d'applications ONTAP S3 créé

Créer une machine virtuelle dans OpenShift Virtualization

Les captures d'écran suivantes montrent la création de la machine virtuelle (démo-fedora dans la démo d'espace de noms) à partir de la console à l'aide du modèle. Le disque racine choisit automatiquement la classe de stockage par défaut. Vérifiez donc que la classe de stockage par défaut est définie correctement. Dans cette configuration, la classe de stockage par défaut est sc-zonea-san. Lors de la création du disque supplémentaire, choisissez la classe de stockage sc-zonea-san et cochez la case "appliquer les paramètres de stockage optimisés". Les modes d'accès sont alors définis sur RWX et le mode de volume sur Bloc.

Remarque Trident prend en charge le mode d'accès RWX en mode Block Volume pour SAN (iSCSI, NVMe/TCP et FC). (Il s'agit du mode d'accès par défaut pour le NAS). Le mode d'accès RWX est requis si vous devez effectuer une migration en direct des machines virtuelles ultérieurement.

classe de stockage par défaut

Créer une VM fedora

modèle par défaut

personnaliser

Ajouter un disque

disque ajouté

création de vm, de pods et de pvc

Créer une application

Créer une application Trident Protect pour la machine virtuelle

Dans l'exemple, l'espace de noms de démonstration comporte une machine virtuelle et toutes les ressources de l'espace de noms sont incluses lors de la création de l'application.

# 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

Application créée

Création de sauvegardes

Créer une sauvegarde à la demande

Créez une sauvegarde pour l'application (demo-vm) créée précédemment, qui inclut toutes les ressources dans l'espace de noms de démonstration. Indiquez le nom de l'appvault où les sauvegardes seront stockées.

# 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

Sauvegarde à la demande créée

Créer des sauvegardes sur un planning

Créez un planning pour les sauvegardes en spécifiant la granularité et le nombre de sauvegardes à conserver.

# 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

Programme de sauvegarde créé

Sauvegardes créées à la demande et dans les temps

Restaurer à partir de sauvegardes

Restaurer la machine virtuelle dans le même espace de noms

Dans l'exemple, la sauvegarde demo-vm-backup-on-Demand contient la sauvegarde avec l'application de démonstration pour la machine virtuelle fedora.

Tout d'abord, supprimez la machine virtuelle et assurez-vous que les ESV, le pod et les objets de la machine virtuelle sont supprimés de la « démo » du namespace.

fedora-vm supprimé

Créez maintenant un objet de restauration avec sauvegarde sur place.

# 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 créé

Vérifiez que la machine virtuelle, les pods et les ESV sont restaurés

Machine virtuelle restaurée créée

Restaurer la machine virtuelle dans un autre espace de noms

Créez d'abord un nouvel espace de noms dans lequel vous souhaitez restaurer l'application, dans cet exemple demo2. Créez ensuite un objet de restauration de sauvegarde

# 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 créée

Vérifier que la machine virtuelle, les pods et les pvc sont créés dans le nouveau namespace demo2.

VM dans le nouveau namespace

Créer des instantanés

Créer un instantané à la demande Créez un instantané pour l'application et spécifiez le coffre-fort où il doit être stocké.

# 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

Créer un planning pour les instantanés Créer un planning pour les instantanés. Spécifier la granularité et le nombre de snapshots à conserver.

# 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

planification des snapshots

snapshot planifié

Restaurer à partir d'un Snapshot

Restaurer la machine virtuelle à partir de l'instantané vers le même espace de noms Supprimer la machine virtuelle demo-fedora de l'espace de noms demo2.

suppression de la machine virtuelle

Créez un objet de restauration de snapshot sur place à partir du snapshot de la machine virtuelle.

# 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

monsieur

Vérifier que la VM et ses ESV sont créées dans l'espace de noms de démonstration.

machine virtuelle restaurée dans le même espace de noms

Restaurer la machine virtuelle à partir de l'instantané vers un autre espace de noms

Supprimez la machine virtuelle dans l'espace de noms demo2 précédemment restauré à partir de la sauvegarde.

Supprimer VM, ESV

Créez l'objet de restauration de snapshot à partir du snapshot et fournissez le mappage de l'espace de noms.

# 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

Demande de service créée

Vérifier que la machine virtuelle et ses ESV sont restaurées dans le nouveau namespace demo2.

Machine virtuelle restaurée dans le nouvel espace de noms

Sélection de VM spécifiques dans un namespace pour créer des snapshots/sauvegardes et restaurer

Dans l'exemple précédent, nous avions une seule machine virtuelle au sein d'un espace de noms. En incluant l'intégralité de l'espace de noms dans la sauvegarde, toutes les ressources associées à cette machine virtuelle ont été capturées. Dans l'exemple suivant, nous ajoutons une autre machine virtuelle au même namespace et créons une application uniquement pour cette nouvelle machine virtuelle à l'aide d'un sélecteur d'étiquettes.

Créez un nouveau VM (demo-centos vm) dans l'espace de noms de démonstration

VM centos dans l'espace de noms de démonstration

Label de la vm DEMO-centos et de ses ressources

étiquetage de la vm centos, pvc

Vérifiez que la vm et les esv Demo-centos ont les étiquettes

étiquettes des vm demo-centos

pvc centos de démonstration obtenu étiquettes

Créez une application pour un VM spécifique uniquement (demo-centos) à l'aide du sélecteur d'étiquettes

# 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

pvc centos de démonstration obtenu étiquettes

La méthode de création de sauvegardes et de snapshots à la demande et selon une planification est la même que celle présentée précédemment. Étant donné que l'application Trident-Protect utilisée pour créer des snapshots ou des sauvegardes ne contient que la machine virtuelle spécifique de l'espace de noms, la restauration à partir de ces snapshots restaure uniquement une machine virtuelle spécifique. Un exemple d'opération de sauvegarde/restauration est illustré ci-dessous.

Créez une sauvegarde d'une machine virtuelle spécifique dans un espace de noms en utilisant son app correspondante

Dans les étapes précédentes, une application a été créée à l'aide de sélecteurs d'étiquettes pour inclure uniquement la machine virtuelle centos dans l'espace de noms de démonstration. Créez une sauvegarde (sauvegarde à la demande, dans cet exemple) pour cette application.

# 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

Sauvegarde de machine virtuelle spécifique créée

Restaurer une machine virtuelle spécifique dans le même espace de noms la sauvegarde d'une machine virtuelle spécifique (centos) a été créée à l'aide de l'application correspondante. Si une sauvegarde/restauration sur place ou une sauvegarde/restauration est créée à partir de cette base, seule cette machine virtuelle spécifique est restaurée. Supprimez la VM CentOS.

VM CentOS présent

VM CentOS supprimé

Créez une restauration sur place de sauvegarde à partir de Demo-centos-sauvegarde-à la demande et vérifiez que la machine virtuelle centos a été recréée.

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

créez un bir centos vm

vm centos créé

Restauration d'un serveur virtuel sur un autre espace de noms Créez une restauration de sauvegarde sur un autre espace de noms (demo-centos-backup-on-demand-demo-demo-demo-backup, et vérifiez que le serveur virtuel centos a été recréé.

# 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

créez un bir centos vm

vm centos créé