Skip to main content
Die deutsche Sprachversion wurde als Serviceleistung für Sie durch maschinelle Übersetzung erstellt. Bei eventuellen Unstimmigkeiten hat die englische Sprachversion Vorrang.

Ändern Sie Ressourcen während der Wiederherstellung mithilfe benutzerdefinierter Ressourcen

Beitragende netapp-mwallis
Änderungen vorschlagen

Ressourcentransformationen ermöglichen es Ihnen, eine Ressource während der Wiederherstellung zu modifizieren. Dies ist nützlich, wenn die wiederhergestellte Version von der ursprünglichen Version abweichen soll – beispielsweise die Änderung der IP-Adresse einer virtuellen Maschine bei der Wiederherstellung in einem anderen Netzwerk. Sie können auch "Modifizieren Sie Ressourcen während der Wiederherstellung mithilfe der Web-Benutzeroberfläche".

Erforderliche NetApp Console-Rolle Backup and Recovery Superadministrator oder Backup and Recovery Wiederherstellungsadministrator. "Erfahren Sie mehr über die Zugriffsrollen für NetApp Backup and Recovery". "Erfahren Sie mehr über die Zugriffsrollen der NetApp Console für alle Dienste".

Wie Ressourcenmodifikation funktioniert

Das transformations Feld in SnapshotRestore, BackupRestore, AppMirrorRelationship und anderen Wiederherstellungsressourcen ermöglicht es Ihnen, Kubernetes-Ressourcen während des Wiederherstellungsprozesses zu ändern. Dies ist nützlich, um Anwendungen oder virtuelle Maschinen an einen neuen Cluster anzupassen, indem Sie Hostnamen, Registry-URLs, Ressourcenlimits oder Umgebungsvariablen ändern.

Ressourcentransformationen verwenden "RFC 6902" JSON-Patch-Operationen und "RFC 6901" JSON-Pointer-Pfade, um bestimmte Felder innerhalb von Kubernetes-Ressourcen anzusprechen und zu modifizieren.

Hier ist die grundlegende Struktur eines Wiederherstellungsobjekts, das Ressourcentransformationen enthält:

apiVersion: protect.trident.netapp.io/v1
kind: SnapshotRestore
metadata:
  name: my-restore
  namespace: target-namespace
spec:
  appVaultRef: my-vault
  appArchivePath: /path/to/snapshot
  namespaceMapping:
    - source: source-ns
      destination: target-ns
  transformations:
    - resource:
        kind: ConfigMap       # Required: resource kind
        group: ""             # Optional: API group (empty for core resources)
        version: ""           # Optional: API version
        name: ""              # Optional: specific resource name
      operations:
        - op: replace         # Operation type
          path: "/data/key"   # JSON Pointer path
          value: "new-value"  # New value (for add/replace/test)

Unterstützte Ressourcen

Sie können Ressourcentransformationen mit Ressourcen verwenden, die den folgenden Kriterien entsprechen:

  • kind (erforderlich): Der Kubernetes-Ressourcentyp (zum Beispiel, ConfigMap, Deployment, Pod)

  • group (optional): Die API-Gruppe (zum Beispiel, apps, route.openshift.io) - für Kernressourcen weglassen

  • version (optional): Die API-Version (z. B. v1, v1beta1)

  • name (optional): Nur auf eine bestimmte Ressource anhand des Namens anwenden

Hinweis Die Modifizierung von PersistentVolumeClaims und Namespaces wird derzeit nicht unterstützt.

Unterstützte Operationen

Sie können die folgenden Operationen verwenden, um Ressourcen zu ändern:

  • add: Füge einer Ressource einen Wert hinzu.

  • copy: Einen Wert von einem Pfad in einen anderen kopieren.

  • move: Einen Wert innerhalb einer Ressource verschieben.

  • remove: Einen Wert aus einer Ressource entfernen.

  • replace: Ersetzen Sie einen Wert innerhalb einer Ressource.

  • test: Testen Sie eine Operation, bevor Sie sie ausführen.

Einer Ressource einen Wert hinzufügen

Verwenden Sie die add-Operation, um ein neues Feld oder einen neuen Wert am angegebenen Pfad hinzuzufügen. Sie können Daten zu Objekten oder Arrays hinzufügen. Das folgende Beispiel fügt einer Deployment-Ressource einen Knotenselektor hinzu:

transformations:
  - resource:
      kind: Deployment
    operations:
      - op: add
        path: "/spec/template/spec/nodeSelector"
        value:
          "topology.kubernetes.io/zone": "us-east-1a"
          disktype: "ssd"

Verwenden Sie den folgenden Befehl, um diese Transformation über die Befehlszeile auszuführen:

tridentctl-protect --transformation 'apps,v1,Deployment:add{"path":"/spec/template/spec/nodeSelector","value":{"topology.kubernetes.io/zone":"us-east-1a","disktype":"ssd"}}'

Einen Wert innerhalb einer Ressource kopieren

Verwenden Sie die `copy`Operation, um einen Wert innerhalb derselben Ressource von einem Pfad in einen anderen zu kopieren. Die Quelle bleibt unverändert. Das folgende Beispiel dupliziert einen Datenschlüssel für ein ConfigMap-Objekt:

transformations:
  - resource:
      kind: ConfigMap
    operations:
      - op: copy
        from: "/data/source-key"
        path: "/data/backup-key"

Verwenden Sie den folgenden Befehl, um diese Transformation über die Befehlszeile auszuführen:

tridentctl-protect --transformation ',v1,ConfigMap:copy{"from":"/data/source-key","path":"/data/backup-key"}'

Verschieben Sie einen Wert innerhalb einer Ressource

Verwenden Sie die move-Operation, um einen Wert innerhalb derselben Ressource von einem Pfad zu einem anderen zu verschieben. Die Quelle wird entfernt und der Wert am Zielort eingefügt. Das folgende Beispiel benennt einen Datenschlüssel für ein ConfigMap-Objekt um:

transformations:
  - resource:
      kind: ConfigMap
    operations:
      - op: move
        from: "/data/OLD_KEY"
        path: "/data/NEW_KEY"

Verwenden Sie den folgenden Befehl, um diese Transformation über die Befehlszeile auszuführen:

tridentctl-protect --transformation ',v1,ConfigMap:move{"from":"/data/OLD_KEY","path":"/data/NEW_KEY"}'

Einen Wert aus einer Ressource entfernen

Verwenden Sie die remove Operation, um ein Feld oder einen Wert am angegebenen Pfad zu entfernen. Das folgende Beispiel entfernt eine Annotation aus einer ConfigMap-Ressource:

transformations:
  - resource:
      kind: ConfigMap
    operations:
      - op: remove
        path: "/metadata/annotations/kubectl.kubernetes.io~1last-applied-configuration"
Hinweis Im Pfad des obigen Beispiels ~1 ist die JSON Pointer Escape-Sequenz für /.

Verwenden Sie den folgenden Befehl, um diese Transformation über die Befehlszeile auszuführen:

tridentctl-protect --transformation ',v1,ConfigMap:remove{"path":"/metadata/annotations/kubectl.kubernetes.io~1last-applied-configuration"}'

Ersetzen Sie einen Wert innerhalb einer Ressource

Verwenden Sie die replace Operation, um einen vorhandenen Wert innerhalb einer Ressource am angegebenen Pfad zu ersetzen. Der JSON-Pfad muss bereits existieren. Das folgende Beispiel ändert einen Hostnamen für ein Route-Objekt:

transformations:
  - resource:
      kind: Route
      group: route.openshift.io
    operations:
      - op: replace
        path: "/spec/host"
        value: "prod.example.com"

Verwenden Sie den folgenden Befehl, um diese Transformation über die Befehlszeile auszuführen:

tridentctl-protect --transformation 'route.openshift.io,v1,Route:replace{"path":"/spec/host","value":"prod.example.com"}'

Testen Sie die Ressourcenänderung

Verwenden Sie die test`Operation, um zu testen, ob der Wert an einem Pfad dem erwarteten Wert entspricht. Wenn der Test fehlschlägt, wird die gesamte Änderung zurückgesetzt. Im folgenden Beispiel wird `database-host`nur aktualisiert, wenn `environment staging entspricht:

transformations:
  - resource:
      kind: ConfigMap
    operations:
      - op: test
        path: "/data/environment"
        value: "staging"
      - op: replace
        path: "/data/database-host"
        value: "prod-db.example.com"

Verwenden Sie den folgenden Befehl, um diese Transformation über die Befehlszeile auszuführen:

tridentctl-protect --transformation ',v1,ConfigMap:test{"path":"/data/environment","value":"staging"},replace{"path":"/data/database-host","value":"prod-db.example.com"}'