Modifica le risorse Kubernetes durante il ripristino in NetApp Backup and Recovery
Utilizza le trasformazioni delle risorse per modificare le risorse Kubernetes durante le operazioni di ripristino. Per informazioni sulla modifica delle risorse nell'interfaccia utente web, consulta "Modifica le risorse durante il ripristino".
Ruolo richiesto nella NetApp Console Super admin di Backup and Recovery o admin di ripristino di Backup and Recovery. Se stai proteggendo dati archiviati su un cluster Cloud Volumes ONTAP, è richiesto anche il ruolo di Cloud Volumes ONTAP Admin. "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.
Il seguente esempio mostra la struttura di base di un oggetto di ripristino che contiene trasformazioni delle 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) — ometti per le risorse core -
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
Usa l' `replace`operazione per sostituire un valore esistente all'interno di una risorsa al percorso specificato. Il percorso JSON Pointer deve già esistere. Il seguente esempio cambia 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"}'