Modifica le risorse durante il ripristino utilizzando risorse personalizzate
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
|
|
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"
|
|
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"}'