Skip to main content
NetApp Backup and Recovery
O português é fornecido por meio de tradução automática para sua conveniência. O inglês precede o português em caso de inconsistências.

Modifique os recursos à medida que os restaura usando recursos personalizados

Colaboradores netapp-mwallis

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

Observação 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"
Observação 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"}'