Skip to main content
Se proporciona el idioma español mediante traducción automática para su comodidad. En caso de alguna inconsistencia, el inglés precede al español.

Restaure aplicaciones mediante Trident Protect

Colaboradores

Es posible usar Trident Protect para restaurar la aplicación desde una snapshot o un backup. La restauración a partir de una snapshot existente será más rápida cuando se restaure la aplicación en el mismo clúster.

Nota Al restaurar una aplicación, todos los ganchos de ejecución configurados para la aplicación se restauran con la aplicación. Si hay un enlace de ejecución posterior a la restauración, se ejecuta automáticamente como parte de la operación de restauración.

Etiquetas y anotaciones del espacio de nombres durante las operaciones de restauración y conmutación al nodo de respaldo

Durante las operaciones de restauración y conmutación al nodo de respaldo, se realizan etiquetas y anotaciones en el espacio de nombres de destino que coincidan con las etiquetas y anotaciones en el espacio de nombres de origen. Se añaden etiquetas o anotaciones del espacio de nombres origen que no existen en el espacio de nombres destino, y las etiquetas o anotaciones que ya existan se sobrescriben para que coincidan con el valor del espacio de nombres origen. Las etiquetas o anotaciones que sólo existen en el espacio de nombres de destino permanecen sin cambios.

Nota Si utiliza RedHat OpenShift, es importante tener en cuenta el papel fundamental de las anotaciones de espacio de nombres en entornos OpenShift. Las anotaciones del espacio de nombres garantizan que los pods restaurados cumplan los permisos y las configuraciones de seguridad adecuados definidos por las restricciones de contexto de seguridad (SCCs) de OpenShift y puedan acceder a los volúmenes sin problemas de permiso. Para obtener más información, consulte la "Documentación de restricciones de contexto de seguridad de OpenShift".

Puede evitar que se sobrescriban anotaciones específicas en el espacio de nombres de destino mediante el establecimiento de la variable de entorno de Kubernetes RESTORE_SKIP_NAMESPACE_ANNOTATIONS antes de llevar a cabo la operación de restauración o conmutación por error. Por ejemplo:

kubectl set env -n trident-protect deploy/trident-protect-controller-manager RESTORE_SKIP_NAMESPACE_ANNOTATIONS=<annotation_key_to_skip_1>,<annotation_key_to_skip_2>

Si instaló la aplicación de origen con Helm con el --create-namespace indicador, se le dará un tratamiento especial a la name clave de etiqueta. Durante el proceso de restauración o recuperación tras fallos, Trident protege esta etiqueta al espacio de nombres de destino, pero actualiza el valor al valor del espacio de nombres de destino si el valor del origen coincide con el espacio de nombres de origen. Si este valor no coincide con el espacio de nombres de origen, se copia al espacio de nombres de destino sin cambios.

Ejemplo

El siguiente ejemplo presenta un espacio de nombres de origen y destino, cada uno con anotaciones y etiquetas diferentes. Puede ver el estado del espacio de nombres de destino antes y después de la operación, así como cómo las anotaciones y etiquetas se combinan o sobrescriben en el espacio de nombres de destino.

Antes de la operación de restauración o conmutación por error

En la siguiente tabla se muestra el estado del ejemplo de espacios de nombres de origen y destino antes de la operación de restauración o conmutación por error:

Espacio de nombres Anotaciones Etiquetas

Espacio de nombres ns-1 (origen)

  • anotación.uno/clave: “updatedvalue”

  • anotación.dos/clave: “verdadero”

  • entorno=producción

  • cumplimiento=hipaa

  • name=ns-1

Espacio de nombres ns-2 (destino)

  • anotación.uno/tecla: “verdadero”

  • anotación.tres/clave: “falso”

  • role=base de datos

Después de la operación de restauración

En la siguiente tabla se muestra el estado del espacio de nombres de destino de ejemplo después de la operación de restauración o conmutación por error. Se han agregado algunas claves, algunas se han sobrescrito y la name etiqueta se ha actualizado para que coincida con el espacio de nombres de destino:

Espacio de nombres Anotaciones Etiquetas

Espacio de nombres ns-2 (destino)

  • anotación.uno/clave: “updatedvalue”

  • anotación.dos/clave: “verdadero”

  • anotación.tres/clave: “falso”

  • name=ns-2

  • cumplimiento=hipaa

  • entorno=producción

  • role=base de datos

Restauración desde un backup a un espacio de nombres diferente

Cuando se restaura un backup en un espacio de nombres diferente con BackupRestore CR, Trident Protect restaura la aplicación en un espacio de nombres nuevo, pero la aplicación restaurada no se protege de forma automática mediante Trident Protect. Para proteger la aplicación restaurada, debe crear una aplicación CR para la aplicación restaurada para que esté protegida por Trident Protect.

Nota Al restaurar un backup en un espacio de nombres diferente con los recursos existentes, no se alterará ningún recurso que comparta los nombres con los que aparecen en el backup. Para restaurar todos los recursos del backup, elimine y vuelva a crear el espacio de nombres objetivo, o restaure el backup en un nuevo espacio de nombres.
Utilice un CR
Pasos
  1. Cree el archivo de recursos personalizados (CR) y asígnele un nombre trident-protect-backup-restore-cr.yaml.

  2. En el archivo creado, configure los siguientes atributos:

    • metadata.name: (required) El nombre de este recurso personalizado; elija un nombre único y sensible para su entorno.

    • Spec.appArchivePath: La ruta dentro de AppVault donde se almacena el contenido de la copia de seguridad. Puede utilizar el siguiente comando para buscar esta ruta:

      kubectl get backups <BACKUP_NAME> -n my-app-namespace -o jsonpath='{.status.appArchivePath}'
    • Spec.appVaultRef: (required) El nombre del AppVault donde se almacena el contenido de la copia de seguridad.

    • spec.namespaceMapping: La asignación del espacio de nombres de origen de la operación de restauración al espacio de nombres de destino. Reemplace my-source-namespace y my-destination-namespace con la información de su entorno.

    • Spec.storageClassMapping: La asignación de la clase de almacenamiento de origen de la operación de restauración a la clase de almacenamiento de destino. Reemplace destinationStorageClass y sourceStorageClass con la información de su entorno.

      apiVersion: protect.trident.netapp.io/v1o
      kind: BackupRestore
      metadata:
        name: my-cr-name
        namespace: my-destination-namespace
      spec:
        appArchivePath: my-backup-path
        appVaultRef: appvault-name
        namespaceMapping: [{"source": "my-source-namespace", "destination": "my-destination-namespace"}]
        storageClassMapping:
          destination: "${destinationStorageClass}"
          source: "${sourceStorageClass}"
  3. (Optional) Si necesita seleccionar solo ciertos recursos de la aplicación para restaurar, agregue filtros que incluyan o excluyan recursos marcados con etiquetas particulares:

    • ResourceFilter.resourceSelectionCriteria: (Requerido para filtrar) Usa include or exclude para incluir o excluir un recurso definido en resourceMatchers. Agregue los siguientes parámetros resourceMatchers para definir los recursos que se van a incluir o excluir:

      • ResourceFilter.resourceMatchers: Matriz de objetos resourceMatcher.

        • ResourceMatchers[].group: (Optional) Grupo del recurso a filtrar.

        • ResourceMatchers[].kind: (Optional) Tipo de recurso a filtrar.

        • ResourceMatchers[].version: (Optional) Versión del recurso que se va a filtrar.

        • ResourceMatchers[].names: (Optional) Nombres en el campo Kubernetes metadata.name del recurso que se va a filtrar.

        • ResourceMatchers[].namespaces: (Optional) Espacios de nombres en el campo Kubernetes metadata.name del recurso que se va a filtrar.

        • ResourceMatchers[].labelSelectors: (Optional) Cadena de selector de etiquetas en el campo Kubernetes metadata.name del recurso tal como se define en el "Documentación de Kubernetes". Por ejemplo "trident.netapp.io/os=linux": .

          Por ejemplo:

    spec:
      resourceFilter:
        resourceSelectionCriteria: "include"
        resourceMatchers:
          group: my-resource-group
          kind: my-resource-kind
          version: my-resource-version
          names: ["my-resource-names"]
          namespaces: ["my-resource-namespaces"]
          labelSelectors: ["trident.netapp.io/os=linux"]
  4. Después de rellenar trident-protect-backup-restore-cr.yaml el archivo con los valores correctos, aplique el CR:

    kubectl apply -f trident-protect-backup-restore-cr.yaml
Utilice la CLI
Pasos
  1. Restaure la copia de seguridad en un espacio de nombres diferente, sustituyendo valores entre paréntesis por información de su entorno. El namespace-mapping argumento utiliza espacios de nombres separados por dos puntos para asignar espacios de nombres de origen a los espacios de nombres de destino correctos en el formato source1:dest1,source2:dest2. Por ejemplo:

    tridentctl protect create backuprestore <my_restore_name> --backup <backup_namespace>/<backup_to_restore> --namespace-mapping <source_to_destination_namespace_mapping>

Restaure desde un backup al espacio de nombres original

Es posible restaurar un backup en el espacio de nombres original en cualquier momento.

Utilice un CR
Pasos
  1. Cree el archivo de recursos personalizados (CR) y asígnele un nombre trident-protect-backup-ipr-cr.yaml.

  2. En el archivo creado, configure los siguientes atributos:

    • metadata.name: (required) El nombre de este recurso personalizado; elija un nombre único y sensible para su entorno.

    • Spec.appArchivePath: La ruta dentro de AppVault donde se almacena el contenido de la copia de seguridad. Puede utilizar el siguiente comando para buscar esta ruta:

      kubectl get backups <BACKUP_NAME> -n my-app-namespace -o jsonpath='{.status.appArchivePath}'
    • Spec.appVaultRef: (required) El nombre del AppVault donde se almacena el contenido de la copia de seguridad.

      Por ejemplo:

    apiVersion: protect.trident.netapp.io/v1
    kind: BackupInplaceRestore
    metadata:
      name: my-cr-name
      namespace: my-app-namespace
    spec:
      appArchivePath: my-backup-path
      appVaultRef: appvault-name
  3. (Optional) Si necesita seleccionar solo ciertos recursos de la aplicación para restaurar, agregue filtros que incluyan o excluyan recursos marcados con etiquetas particulares:

    • ResourceFilter.resourceSelectionCriteria: (Requerido para filtrar) Usa include or exclude para incluir o excluir un recurso definido en resourceMatchers. Agregue los siguientes parámetros resourceMatchers para definir los recursos que se van a incluir o excluir:

      • ResourceFilter.resourceMatchers: Matriz de objetos resourceMatcher.

        • ResourceMatchers[].group: (Optional) Grupo del recurso a filtrar.

        • ResourceMatchers[].kind: (Optional) Tipo de recurso a filtrar.

        • ResourceMatchers[].version: (Optional) Versión del recurso que se va a filtrar.

        • ResourceMatchers[].names: (Optional) Nombres en el campo Kubernetes metadata.name del recurso que se va a filtrar.

        • ResourceMatchers[].namespaces: (Optional) Espacios de nombres en el campo Kubernetes metadata.name del recurso que se va a filtrar.

        • ResourceMatchers[].labelSelectors: (Optional) Cadena de selector de etiquetas en el campo Kubernetes metadata.name del recurso tal como se define en el "Documentación de Kubernetes". Por ejemplo "trident.netapp.io/os=linux": .

          Por ejemplo:

    spec:
      resourceFilter:
        resourceSelectionCriteria: "include"
        resourceMatchers:
          group: my-resource-group
          kind: my-resource-kind
          version: my-resource-version
          names: ["my-resource-names"]
          namespaces: ["my-resource-namespaces"]
          labelSelectors: ["trident.netapp.io/os=linux"]
  4. Después de rellenar trident-protect-backup-ipr-cr.yaml el archivo con los valores correctos, aplique el CR:

    kubectl apply -f trident-protect-backup-ipr-cr.yaml
Utilice la CLI
Pasos
  1. Restaure la copia de seguridad en el espacio de nombres original, sustituyendo valores entre paréntesis por información de su entorno. El backup argumento utiliza un espacio de nombres y un nombre de copia de seguridad en el formato <namespace>/<name>. Por ejemplo:

    tridentctl protect create backupinplacerestore <my_restore_name> --backup <namespace/backup_to_restore>

Restauración desde una copia snapshot a un espacio de nombres diferente

Puede restaurar datos desde una copia Snapshot con un archivo de recurso personalizado (CR) en un espacio de nombres diferente o en el espacio de nombres de origen original. Cuando se restaura una snapshot en un espacio de nombres diferente con SnapshotRestore CR, Trident Protect restaura la aplicación en un espacio de nombres nuevo, pero la aplicación restaurada no queda protegida de forma automática mediante Trident Protect. Para proteger la aplicación restaurada, debe crear una aplicación CR para la aplicación restaurada para que esté protegida por Trident Protect.

Utilice un CR
Pasos
  1. Cree el archivo de recursos personalizados (CR) y asígnele un nombre trident-protect-snapshot-restore-cr.yaml.

  2. En el archivo creado, configure los siguientes atributos:

    • metadata.name: (required) El nombre de este recurso personalizado; elija un nombre único y sensible para su entorno.

    • Spec.appVaultRef: (required) El nombre del AppVault donde se almacena el contenido de la instantánea.

    • Spec.appArchivePath: La ruta dentro de AppVault donde se almacena el contenido de la instantánea. Puede utilizar el siguiente comando para buscar esta ruta:

      kubectl get snapshots <SNAPHOT_NAME> -n my-app-namespace -o jsonpath='{.status.appArchivePath}'
    • spec.namespaceMapping: La asignación del espacio de nombres de origen de la operación de restauración al espacio de nombres de destino. Reemplace my-source-namespace y my-destination-namespace con la información de su entorno.

    • Spec.storageClassMapping: La asignación de la clase de almacenamiento de origen de la operación de restauración a la clase de almacenamiento de destino. Reemplace destinationStorageClass y sourceStorageClass con la información de su entorno.

      apiVersion: protect.trident.netapp.io/v1
      kind: SnapshotRestore
      metadata:
        name: my-cr-name
        namespace: my-app-namespace
      spec:
        appVaultRef: appvault-name
        appArchivePath: my-snapshot-path
        namespaceMapping: [{"source": "my-source-namespace", "destination": "my-destination-namespace"}]
        storageClassMapping:
          destination: "${destinationStorageClass}"
          source: "${sourceStorageClass}"
  3. (Optional) Si necesita seleccionar solo ciertos recursos de la aplicación para restaurar, agregue filtros que incluyan o excluyan recursos marcados con etiquetas particulares:

    • ResourceFilter.resourceSelectionCriteria: (Requerido para filtrar) Usa include or exclude para incluir o excluir un recurso definido en resourceMatchers. Agregue los siguientes parámetros resourceMatchers para definir los recursos que se van a incluir o excluir:

      • ResourceFilter.resourceMatchers: Matriz de objetos resourceMatcher.

        • ResourceMatchers[].group: (Optional) Grupo del recurso a filtrar.

        • ResourceMatchers[].kind: (Optional) Tipo de recurso a filtrar.

        • ResourceMatchers[].version: (Optional) Versión del recurso que se va a filtrar.

        • ResourceMatchers[].names: (Optional) Nombres en el campo Kubernetes metadata.name del recurso que se va a filtrar.

        • ResourceMatchers[].namespaces: (Optional) Espacios de nombres en el campo Kubernetes metadata.name del recurso que se va a filtrar.

        • ResourceMatchers[].labelSelectors: (Optional) Cadena de selector de etiquetas en el campo Kubernetes metadata.name del recurso tal como se define en el "Documentación de Kubernetes". Por ejemplo "trident.netapp.io/os=linux": .

          Por ejemplo:

    spec:
      resourceFilter:
        resourceSelectionCriteria: "include"
        resourceMatchers:
          group: my-resource-group
          kind: my-resource-kind
          version: my-resource-version
          names: ["my-resource-names"]
          namespaces: ["my-resource-namespaces"]
          labelSelectors: ["trident.netapp.io/os=linux"]
  4. Después de rellenar trident-protect-snapshot-restore-cr.yaml el archivo con los valores correctos, aplique el CR:

    kubectl apply -f trident-protect-snapshot-restore-cr.yaml
Utilice la CLI
Pasos
  1. Restaure la instantánea en un espacio de nombres diferente, reemplazando los valores entre paréntesis por información de su entorno.

    • El snapshot argumento utiliza un espacio de nombres y un nombre de instantánea en el formato <namespace>/<name>.

    • El namespace-mapping argumento utiliza espacios de nombres separados por dos puntos para asignar espacios de nombres de origen a los espacios de nombres de destino correctos en el formato source1:dest1,source2:dest2.

      Por ejemplo:

    tridentctl protect create snapshotrestore <my_restore_name> --snapshot <namespace/snapshot_to_restore> --namespace-mapping <source_to_destination_namespace_mapping>

Restauración desde una copia Snapshot al espacio de nombres original

Es posible restaurar una copia de Snapshot en el espacio de nombres original en cualquier momento.

Utilice un CR
Pasos
  1. Cree el archivo de recursos personalizados (CR) y asígnele un nombre trident-protect-snapshot-ipr-cr.yaml.

  2. En el archivo creado, configure los siguientes atributos:

    • metadata.name: (required) El nombre de este recurso personalizado; elija un nombre único y sensible para su entorno.

    • Spec.appVaultRef: (required) El nombre del AppVault donde se almacena el contenido de la instantánea.

    • Spec.appArchivePath: La ruta dentro de AppVault donde se almacena el contenido de la instantánea. Puede utilizar el siguiente comando para buscar esta ruta:

      kubectl get snapshots <SNAPSHOT_NAME> -n my-app-namespace -o jsonpath='{.status.appArchivePath}'
      apiVersion: protect.trident.netapp.io/v1
      kind: SnapshotInplaceRestore
      metadata:
        name: my-cr-name
        namespace: my-app-namespace
      spec:
        appVaultRef: appvault-name
          appArchivePath: my-snapshot-path
  3. (Optional) Si necesita seleccionar solo ciertos recursos de la aplicación para restaurar, agregue filtros que incluyan o excluyan recursos marcados con etiquetas particulares:

    • ResourceFilter.resourceSelectionCriteria: (Requerido para filtrar) Usa include or exclude para incluir o excluir un recurso definido en resourceMatchers. Agregue los siguientes parámetros resourceMatchers para definir los recursos que se van a incluir o excluir:

      • ResourceFilter.resourceMatchers: Matriz de objetos resourceMatcher.

        • ResourceMatchers[].group: (Optional) Grupo del recurso a filtrar.

        • ResourceMatchers[].kind: (Optional) Tipo de recurso a filtrar.

        • ResourceMatchers[].version: (Optional) Versión del recurso que se va a filtrar.

        • ResourceMatchers[].names: (Optional) Nombres en el campo Kubernetes metadata.name del recurso que se va a filtrar.

        • ResourceMatchers[].namespaces: (Optional) Espacios de nombres en el campo Kubernetes metadata.name del recurso que se va a filtrar.

        • ResourceMatchers[].labelSelectors: (Optional) Cadena de selector de etiquetas en el campo Kubernetes metadata.name del recurso tal como se define en el "Documentación de Kubernetes". Por ejemplo "trident.netapp.io/os=linux": .

          Por ejemplo:

    spec:
      resourceFilter:
        resourceSelectionCriteria: "include"
        resourceMatchers:
          group: my-resource-group
          kind: my-resource-kind
          version: my-resource-version
          names: ["my-resource-names"]
          namespaces: ["my-resource-namespaces"]
          labelSelectors: ["trident.netapp.io/os=linux"]
  4. Después de rellenar trident-protect-snapshot-ipr-cr.yaml el archivo con los valores correctos, aplique el CR:

    kubectl apply -f trident-protect-snapshot-ipr-cr.yaml
Utilice la CLI
Pasos
  1. Restaure la instantánea en el espacio de nombres original, reemplazando los valores entre paréntesis por información de su entorno. Por ejemplo:

    tridentctl protect create snapshotinplacerestore <my_restore_name> --snapshot <snapshot_to_restore>

Compruebe el estado de una operación de restauración

Puede usar la línea de comandos para comprobar el estado de una operación de restauración en curso, que se completó o con errores.

Pasos
  1. Utilice el siguiente comando para recuperar el estado de la operación de restauración, sustituyendo valores de entre corchetes con información de su entorno:

    kubectl get backuprestore -n <namespace_name> <my_restore_cr_name> -o jsonpath='{.status}'