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 and Recovery ou administrador de restauração de Backup and Recovery. "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"}'