Wiederherstellen einer App aus einem Backup
In diesem Abschnitt wird beschrieben, wie Apps aus einem Backup wiederhergestellt werden.
Voraussetzungen
Um aus einem Backup wiederherzustellen, nehmen wir an, dass der Namespace, in dem die App existierte, versehentlich gelöscht wurde.
Restore auf denselben Namespace
Um das Backup wiederherzustellen, das wir gerade erstellt haben, müssen wir eine Restore Custom Resource (CR) erstellen. Geben Sie ihm einen Namen, geben Sie den Namen des Backups an, von dem aus wir die Wiederherstellungs-PVs wiederherstellen möchten, und setzen Sie sie auf „True“. Weitere Parameter können wie in dargestellt eingestellt werden "Dokumentation". Klicken Sie auf die Schaltfläche Erstellen.
apiVersion: velero.io/v1 kind: Restore apiVersion: velero.io/v1 metadata: name: restore namespace: openshift-adp spec: backupName: backup-postgresql-ontaps3 restorePVs: true
Wenn in der Phase Abgeschlossen angezeigt wird, wird angezeigt, dass die App zum Zeitpunkt der Snapshot-Erstellung wieder in den Status zurückgesetzt wurde. Die App wird im selben Namespace wiederhergestellt.
Wiederherstellung in einem anderen Namespace
Um die App in einem anderen Namespace wiederherzustellen, können Sie in der yaml-Definition des Restore CR ein NamepaceMapping bereitstellen.
Mit der folgenden yaml-Beispieldatei wird ein Restore CR erstellt, um eine App und ihren persistenten Speicher aus dem postgresql-Namespace auf den neuen Namespace postgresql-wiederhergestellt wiederherzustellen.
apiVersion: velero.io/v1 kind: Restore metadata: name: restore-to-different-ns namespace: openshift-adp spec: backupName: backup-postgresql-ontaps3 restorePVs: true includedNamespaces: - postgresql namespaceMapping: postgresql: postgresql-restored
Wenn in der Phase Abgeschlossen angezeigt wird, wird angezeigt, dass die App zum Zeitpunkt der Snapshot-Erstellung wieder in den Status zurückgesetzt wurde. Die App wird in einem anderen Namespace wiederhergestellt, wie im yaml angegeben.
Wiederherstellung auf eine andere Storage-Klasse
Velero bietet eine allgemeine Möglichkeit, die Ressourcen während der Wiederherstellung durch Angabe von json Patches zu ändern. Die json-Patches werden auf die Ressourcen angewendet, bevor sie wiederhergestellt werden. Die json-Patches werden in einer configmap angegeben und im Wiederherstellungsbefehl auf die configmap verwiesen. Diese Funktion ermöglicht Ihnen die Wiederherstellung mit einer anderen Storage-Klasse.
Im nachfolgenden Beispiel verwendet die Applikation während der Implementierung ontap-nas als Storage-Klasse für ihre persistenten Volumes. Es wird ein Backup der App Backup-postgresql-ontaps3 erstellt.
Simulieren Sie einen Verlust der App, indem Sie die App deinstallieren.
Um die VM mithilfe einer anderen Storage-Klasse, z. B. der Storage-Klasse ontap-nas-eco, wiederherzustellen, müssen Sie die folgenden zwei Schritte durchführen:
Schritt 1
Erstellen Sie eine config map (Console) im openshift-adp Namespace wie folgt: Geben Sie die Details wie im Screenshot gezeigt ein: Select Namespace : openshift-adp Name: Change-ontap-sc (kann jeder beliebige Name sein) Key: Change-ontap-sc-config.yaml: Value:
version: v1 resourceModifierRules: - conditions: groupResource: persistentvolumeclaims resourceNameRegex: "data-postgresql*" namespaces: - postgresql patches: - operation: replace path: "/spec/storageClassName" value: "ontap-nas-eco"
Das resultierende config map-Objekt sollte wie folgt aussehen (CLI):
Diese Konfigurationszuordnung wendet die Ressourcenänderungsregel an, wenn die Wiederherstellung erstellt wird. Für alle Ansprüche auf persistente Volumes, die mit RHEL beginnen, wird ein Patch eingesetzt, der den Namen der Storage-Klasse auf ontap-nas-Eco ersetzt.
Schritt 2
Verwenden Sie zum Wiederherstellen der VM den folgenden Befehl aus der Velero CLI:
#velero restore create restore1 --from-backup backup1 --resource-modifier-configmap change-storage-class-config -n openshift-adp
Die App wird im selben Namespace mit den Angaben zu persistenten Volumes wiederhergestellt, die über die Storage-Klasse ontap-nas-eco erstellt wurden.