Modificar recursos do Kubernetes durante a restauração em NetApp Backup and Recovery
Use transformações de recursos para modificar recursos do Kubernetes durante operações de restauração. Para obter informações sobre como modificar recursos na interface web, consulte "Modificar recursos durante a restauração".
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.
O exemplo a seguir mostra 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 `replace`operação para substituir um valor existente em um recurso no caminho especificado. O caminho do ponteiro JSON já deve existir. O exemplo a seguir altera o nome do host 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"}'