Skip to main content
NetApp Backup and Recovery
La versione in lingua italiana fornita proviene da una traduzione automatica. Per eventuali incoerenze, fare riferimento alla versione in lingua inglese.

Modifica le risorse durante il ripristino utilizzando risorse personalizzate

Collaboratori netapp-mwallis

Le trasformazioni delle risorse consentono di modificare una risorsa durante il ripristino. Ciò è utile quando la versione ripristinata deve essere diversa dall'originale, ad esempio modificando l'indirizzo IP di una macchina virtuale durante il ripristino in una rete diversa. È inoltre possibile "modifica le risorse durante il ripristino tramite l'interfaccia utente web".

Ruolo richiesto NetApp Console Super amministratore di Backup and Recovery o amministratore di ripristino di Backup and Recovery. "Scopri di più sui ruoli di accesso a NetApp Backup and Recovery". "Scopri di più sui ruoli di accesso NetApp Console per tutti i servizi".

Come funziona la modifica delle risorse

Il transformations campo in SnapshotRestore, BackupRestore, AppMirrorRelationship, e altre risorse di ripristino consente di modificare le risorse Kubernetes durante il processo di ripristino. Ciò è utile per adattare applicazioni o macchine virtuali a un nuovo cluster modificando nomi host, URL del registro, limiti delle risorse o variabili d'ambiente.

Le trasformazioni delle risorse utilizzano "RFC 6902" operazioni JSON Patch e "RFC 6901" percorsi JSON Pointer per individuare e modificare campi specifici all'interno delle risorse Kubernetes.

Ecco la struttura di base di un oggetto di ripristino che contiene trasformazioni di risorse:

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)

Risorse supportate

È possibile utilizzare le trasformazioni delle risorse con risorse che corrispondono ai seguenti criteri:

  • kind (obbligatorio): Il tipo di risorsa Kubernetes (ad esempio, ConfigMap, Deployment, Pod)

  • group (facoltativo): Il gruppo API (ad esempio, apps, route.openshift.io) - omettere per le risorse principali

  • version (facoltativo): La versione dell'API (ad esempio, v1, v1beta1)

  • name (facoltativo): Applica solo a una risorsa specifica tramite il suo nome

Nota La modifica di PersistentVolumeClaims e degli spazi dei nomi non è attualmente supportata.

Operazioni supportate

È possibile utilizzare le seguenti operazioni per modificare le risorse:

  • add: Aggiungi un valore a una risorsa.

  • copy: Copia un valore da un percorso a un altro.

  • move: Sposta un valore all'interno di una risorsa.

  • remove: Rimuove un valore da una risorsa.

  • replace: Sostituisci un valore all'interno di una risorsa.

  • test: Testa un'operazione prima di eseguirla.

Aggiungere un valore a una risorsa

Utilizza l'operazione add per aggiungere un nuovo campo o valore al percorso specificato. Puoi aggiungere dati a oggetti o array. Il seguente esempio aggiunge un selettore di nodi a una risorsa Deployment:

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

Utilizzare il seguente comando per eseguire questa trasformazione tramite riga di comando:

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

Copia un valore all'interno di una risorsa

Utilizzare l'operazione copy per copiare un valore da un percorso a un altro all'interno della stessa risorsa. L'origine non viene modificata. Il seguente esempio duplica una chiave dati per un oggetto ConfigMap:

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

Utilizzare il seguente comando per eseguire questa trasformazione tramite riga di comando:

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

Spostare un valore all'interno di una risorsa

Utilizzare l'operazione move per spostare un valore da un percorso a un altro all'interno della stessa risorsa. L'origine viene rimossa e il valore viene inserito nella destinazione. Il seguente esempio rinomina una chiave dati per un oggetto ConfigMap:

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

Utilizzare il seguente comando per eseguire questa trasformazione tramite riga di comando:

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

Rimuovere un valore da una risorsa

Utilizzare l'operazione remove per rimuovere un campo o un valore nel percorso specificato. Il seguente esempio rimuove un'annotazione da una risorsa ConfigMap:

transformations:
  - resource:
      kind: ConfigMap
    operations:
      - op: remove
        path: "/metadata/annotations/kubectl.kubernetes.io~1last-applied-configuration"
Nota Nel percorso per l'esempio precedente, ~1 è la sequenza di escape del puntatore JSON per /.

Utilizzare il seguente comando per eseguire questa trasformazione tramite riga di comando:

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

Sostituire un valore all'interno di una risorsa

Utilizzare l' `replace`operazione per sostituire un valore esistente all'interno di una risorsa al percorso specificato. Il percorso JSON deve già esistere. L'esempio seguente modifica un hostname per un oggetto Route:

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

Utilizzare il seguente comando per eseguire questa trasformazione tramite riga di comando:

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

Verifica la modifica della risorsa

Utilizzare l' test`operazione per verificare se il valore in un percorso corrisponde al valore previsto. Se il test fallisce, l'intera modifica viene annullata. L'esempio seguente aggiorna solo `database-host se environment è staging:

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

Utilizzare il seguente comando per eseguire questa trasformazione tramite riga di comando:

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