Modifique os recursos à medida que os restaura usando recursos personalizados
As transformações de recursos permitem modificar um recurso durante o processo de restauração. Isso é útil quando a versão restaurada precisa ser diferente da original — por exemplo, alterar o endereço IP de uma máquina virtual ao restaurá-la em uma rede diferente. Você também pode "Modifique os recursos à medida que os restaura usando a interface web".
Função necessária do NetApp Console Superadministrador de backup e recuperação ou administrador de restauração de backup e recuperação. Se você estiver protegendo dados armazenados em um cluster Cloud Volumes ONTAP, a função de administrador do Cloud Volumes ONTAP também é necessária. "Saiba mais sobre as funções de acesso do NetApp Backup and Recovery". "Saiba mais sobre as funções de acesso do NetApp Console para todos os serviços".
Como funciona a modificação de recursos
O campo transformations em SnapshotRestore, BackupRestore, AppMirrorRelationship e outros recursos de restauração permite que você modifique recursos do Kubernetes durante o processo de restauração. Isso é útil para adaptar aplicativos ou máquinas virtuais a um novo cluster, alterando nomes de host, URLs de registro, limites de recursos ou variáveis de ambiente.
As transformações de recursos usam "RFC 6902"operações JSON Patch e "RFC 6901"caminhos JSON Pointer para direcionar e modificar campos específicos em recursos do Kubernetes.
Aqui está a estrutura básica de um objeto de restauração que contém transformações de recursos:
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)
Recursos suportados
Você pode usar transformações de recursos com recursos que correspondam aos seguintes critérios:
-
kind(obrigatório): O tipo de recurso do Kubernetes (por exemplo,ConfigMap,Deployment,Pod) -
group(opcional): o grupo da API (por exemplo,apps,route.openshift.io) - omita para recursos principais -
version(opcional): a versão da API (por exemplo,v1,v1beta1) -
name(opcional): aplicar somente a um recurso específico pelo nome
|
|
Modificar PersistentVolumeClaims e namespaces não é suportado atualmente. |
Operações suportadas
Você pode usar as seguintes operações para modificar recursos:
-
add: Adicionar um valor a um recurso. -
copy: Copiar um valor de um caminho para outro. -
move: Mover um valor dentro de um recurso. -
remove: Remover um valor de um recurso. -
replace: Substituir um valor dentro de um recurso. -
test: Teste uma operação antes de executá-la.
Adicionar um valor a um recurso
Use a `add`operação para adicionar um novo campo ou valor no caminho especificado. Você pode adicionar dados a objetos ou arrays. O exemplo a seguir adiciona um seletor de nó a um recurso de Deployment:
transformations:
- resource:
kind: Deployment
operations:
- op: add
path: "/spec/template/spec/nodeSelector"
value:
"topology.kubernetes.io/zone": "us-east-1a"
disktype: "ssd"
Utilize o seguinte comando para executar essa transformação usando a linha de comando:
tridentctl-protect --transformation 'apps,v1,Deployment:add{"path":"/spec/template/spec/nodeSelector","value":{"topology.kubernetes.io/zone":"us-east-1a","disktype":"ssd"}}'
Copiar um valor dentro de um recurso
Use a operação copy para copiar um valor de um caminho para outro dentro do mesmo recurso. A origem não é alterada. O exemplo a seguir duplica uma chave de dados para um objeto ConfigMap:
transformations:
- resource:
kind: ConfigMap
operations:
- op: copy
from: "/data/source-key"
path: "/data/backup-key"
Utilize o seguinte comando para executar essa transformação usando a linha de comando:
tridentctl-protect --transformation ',v1,ConfigMap:copy{"from":"/data/source-key","path":"/data/backup-key"}'
Mover um valor dentro de um recurso
Use a `move`operação para mover um valor de um caminho para outro dentro do mesmo recurso. A origem é removida e o valor é colocado no destino. O exemplo a seguir renomeia uma chave de dados para um objeto ConfigMap:
transformations:
- resource:
kind: ConfigMap
operations:
- op: move
from: "/data/OLD_KEY"
path: "/data/NEW_KEY"
Utilize o seguinte comando para executar essa transformação usando a linha de comando:
tridentctl-protect --transformation ',v1,ConfigMap:move{"from":"/data/OLD_KEY","path":"/data/NEW_KEY"}'
Remover um valor de um recurso
Utilize a remove operação para remover um campo ou valor no caminho especificado. O exemplo a seguir remove uma anotação de um recurso ConfigMap:
transformations:
- resource:
kind: ConfigMap
operations:
- op: remove
path: "/metadata/annotations/kubectl.kubernetes.io~1last-applied-configuration"
|
|
No caminho do exemplo acima, ~1 é a sequência de escape do ponteiro JSON para /.
|
Utilize o seguinte comando para executar essa transformação usando a linha de comando:
tridentctl-protect --transformation ',v1,ConfigMap:remove{"path":"/metadata/annotations/kubectl.kubernetes.io~1last-applied-configuration"}'
Substituir um valor dentro de um recurso
Use a operação replace para substituir um valor existente em um recurso no caminho especificado. O caminho JSON já deve existir. O exemplo a seguir altera o hostname de um objeto Route:
transformations:
- resource:
kind: Route
group: route.openshift.io
operations:
- op: replace
path: "/spec/host"
value: "prod.example.com"
Utilize o seguinte comando para executar essa transformação usando a linha de comando:
tridentctl-protect --transformation 'route.openshift.io,v1,Route:replace{"path":"/spec/host","value":"prod.example.com"}'
Teste a modificação do recurso
Use a test`operação para testar se o valor em um caminho corresponde ao valor esperado. Se o teste falhar, toda a modificação será revertida. O exemplo a seguir atualiza somente `database-host`se `environment`for `staging:
transformations:
- resource:
kind: ConfigMap
operations:
- op: test
path: "/data/environment"
value: "staging"
- op: replace
path: "/data/database-host"
value: "prod-db.example.com"
Utilize o seguinte comando para executar essa transformação usando a linha de comando:
tridentctl-protect --transformation ',v1,ConfigMap:test{"path":"/data/environment","value":"staging"},replace{"path":"/data/database-host","value":"prod-db.example.com"}'