Skip to main content
NetApp Backup and Recovery
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.

Restaura aplicaciones Kubernetes usando un recurso personalizado

Colaboradores netapp-mwallis

Puedes usar recursos personalizados para restaurar tus aplicaciones desde una instantánea o copia de seguridad. Restaurar desde una instantánea existente será más rápido al restaurar la aplicación en el mismo clúster.

Nota
  • Cuando restauras una aplicación, todos los ganchos de ejecución configurados para la aplicación se restauran junto con la app. Si hay un gancho de ejecución posterior a la restauración, se ejecuta automáticamente como parte de la operación de restauración.

  • La restauración desde una copia de seguridad a un espacio de nombres diferente o al espacio de nombres original es compatible para los volúmenes qtree. Sin embargo, restaurar desde una instantánea a un espacio de nombres diferente o al espacio de nombres original no es compatible para los volúmenes qtree.

  • Puedes usar la configuración avanzada para personalizar las operaciones de restauración. Para saber más, consulta "Usa la configuración avanzada de restauración de recursos personalizada".

Restaura una copia de seguridad en un espacio de nombres diferente

Cuando restauras una copia de seguridad en un espacio de nombres diferente usando un CR de BackupRestore, Backup and Recovery restaura la aplicación en un nuevo espacio de nombres y crea un CR de aplicación para la aplicación restaurada. Para proteger la aplicación restaurada, crea copias de seguridad o instantáneas bajo demanda, o establece una programación de protección.

Nota
  • Restaurar una copia de seguridad en un espacio de nombres diferente con recursos existentes no alterará ningún recurso que comparta nombres con los de la copia de seguridad. Para restaurar todos los recursos de la copia de seguridad, elimina y vuelve a crear el espacio de nombres de destino o restaura la copia de seguridad en un nuevo espacio de nombres.

  • Cuando uses un CR para restaurar en un nuevo espacio de nombres, debes crear manualmente el espacio de nombres de destino antes de aplicar el CR. NetApp Backup and Recovery crea automáticamente espacios de nombres solo cuando usas la CLI.

Antes de empezar

Asegúrate de que la caducidad del token de sesión de AWS sea suficiente para cualquier operación de restauración s3 de larga duración. Si el token caduca durante la operación de restauración, la operación puede fallar.

Nota Cuando restauras copias de seguridad usando Kopia como el traslador de datos, puedes especificar opcionalmente anotaciones en el CR para controlar el comportamiento del almacenamiento temporal que usa Kopia. Consulta el "Documentación de Kopia" para más información sobre las opciones que puedes configurar.
Pasos
  1. Crea el archivo de recurso personalizado (CR) y ponle el nombre trident-protect-backup-restore-cr.yaml.

  2. En el archivo que creaste, configura los siguientes atributos:

    • metadata.name: (Required) El nombre de este recurso personalizado; elige un nombre único y sensato para tu entorno.

    • spec.appArchivePath: la ruta dentro de AppVault donde se almacena el contenido de la copia de seguridad. Puedes usar el siguiente comando para encontrar 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. Reemplaza my-source-namespace y my-destination-namespace con información de tu entorno.

      apiVersion: protect.trident.netapp.io/v1
      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"}]
  3. (Opcional) Si necesitas seleccionar solo ciertos recursos de la aplicación para restaurar, añade un filtrado que incluya o excluya recursos marcados con etiquetas concretas:

    Nota Trident Protect selecciona algunos recursos automáticamente debido a su relación con los recursos que tú seleccionas. Por ejemplo, si seleccionas un recurso de reclamación de volumen persistente y tiene un pod asociado, Trident Protect también restaurará el pod asociado.
    • resourceFilter.resourceSelectionCriteria: (Obligatorio para el filtrado) Usa Include o Exclude para incluir o excluir un recurso definido en resourceMatchers. Agrega los siguientes parámetros resourceMatchers para definir los recursos que se van a incluir o excluir:

      • resourceFilter.resourceMatchers: una matriz de objetos resourceMatcher. Si defines múltiples elementos en esta matriz, coinciden como una operación OR y los campos dentro de cada elemento (group, kind, version) coinciden como una operación AND.

        • resourceMatchers[].group: (Opcional) Grupo del recurso a filtrar.

        • resourceMatchers[].kind: (Opcional) Tipo del recurso a filtrar.

        • resourceMatchers[].version: (Opcional) Versión del recurso a filtrar.

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

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

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

          Por ejemplo:

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

    kubectl apply -f trident-protect-backup-restore-cr.yaml

Restaura una copia de seguridad en el espacio de nombres original

Puedes restaurar una copia de seguridad en el espacio de nombres original en cualquier momento.

Antes de empezar

Asegúrate de que la caducidad del token de sesión de AWS sea suficiente para cualquier operación de restauración s3 de larga duración. Si el token caduca durante la operación de restauración, la operación puede fallar.

Nota Cuando restauras copias de seguridad usando Kopia como el traslador de datos, puedes especificar opcionalmente anotaciones en el CR para controlar el comportamiento del almacenamiento temporal que usa Kopia. Consulta el "Documentación de Kopia" para más información sobre las opciones que puedes configurar.
Pasos
  1. Crea el archivo de recurso personalizado (CR) y ponle el nombre trident-protect-backup-ipr-cr.yaml.

  2. En el archivo que creaste, configura los siguientes atributos:

    • metadata.name: (Required) El nombre de este recurso personalizado; elige un nombre único y sensato para tu entorno.

    • spec.appArchivePath: la ruta dentro de AppVault donde se almacena el contenido de la copia de seguridad. Puedes usar el siguiente comando para encontrar 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. (Opcional) Si necesitas seleccionar solo ciertos recursos de la aplicación para restaurar, añade un filtrado que incluya o excluya recursos marcados con etiquetas concretas:

    Nota Trident Protect selecciona algunos recursos automáticamente debido a su relación con los recursos que tú seleccionas. Por ejemplo, si seleccionas un recurso de reclamación de volumen persistente y tiene un pod asociado, Trident Protect también restaurará el pod asociado.
    • resourceFilter.resourceSelectionCriteria: (Obligatorio para el filtrado) Usa Include o Exclude para incluir o excluir un recurso definido en resourceMatchers. Agrega los siguientes parámetros resourceMatchers para definir los recursos que se van a incluir o excluir:

      • resourceFilter.resourceMatchers: una matriz de objetos resourceMatcher. Si defines múltiples elementos en esta matriz, coinciden como una operación OR y los campos dentro de cada elemento (group, kind, version) coinciden como una operación AND.

        • resourceMatchers[].group: (Opcional) Grupo del recurso a filtrar.

        • resourceMatchers[].kind: (Opcional) Tipo del recurso a filtrar.

        • resourceMatchers[].version: (Opcional) Versión del recurso a filtrar.

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

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

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

          Por ejemplo:

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

    kubectl apply -f trident-protect-backup-ipr-cr.yaml

Restaura una copia de seguridad en un clúster diferente

Puedes restaurar una copia de seguridad en un clúster diferente si hay algún problema con el clúster original.

Nota
  • Cuando restauras copias de seguridad usando Kopia como el traslador de datos, puedes especificar opcionalmente anotaciones en el CR para controlar el comportamiento del almacenamiento temporal que usa Kopia. Consulta el "Documentación de Kopia" para más información sobre las opciones que puedes configurar.

  • Cuando usas un CR para restaurar en un nuevo espacio de nombres, debes crear manualmente el espacio de nombres de destino antes de aplicar el CR.

Antes de empezar

Asegúrate de que se cumplen los siguientes requisitos previos:

  • El clúster de destino tiene Trident Protect instalado.

  • El clúster de destino tiene acceso a la ruta del bucket de la misma AppVault que el clúster de origen, donde se almacena la copia de seguridad.

  • Asegúrate de que la caducidad del token de sesión de AWS sea suficiente para cualquier operación de restauración de larga duración. Si el token caduca durante la operación de restauración, la operación puede fallar.

Pasos
  1. Comprueba la disponibilidad de AppVault CR en el clúster de destino usando el complemento CLI de Trident Protect:

    tridentctl-protect get appvault --context <destination_cluster_name>
    Nota Asegúrate de que el espacio de nombres previsto para la restauración de la aplicación existe en el clúster de destino.
  2. Ver el contenido de la copia de seguridad de la AppVault disponible desde el clúster de destino:

    tridentctl-protect get appvaultcontent <appvault_name> \
    --show-resources backup \
    --show-paths \
    --context <destination_cluster_name>

    Al ejecutar este comando se muestran las copias de seguridad disponibles en el AppVault, incluidos sus clústeres de origen, los nombres de las aplicaciones correspondientes, las marcas de tiempo y las rutas de archivo.

    Ejemplo de salida:

    +-------------+-----------+--------+-----------------+--------------------------+-------------+
    |   CLUSTER   |    APP    |  TYPE  |      NAME       |        TIMESTAMP         |    PATH     |
    +-------------+-----------+--------+-----------------+--------------------------+-------------+
    | production1 | wordpress | backup | wordpress-bkup-1| 2024-10-30 08:37:40 (UTC)| backuppath1 |
    | production1 | wordpress | backup | wordpress-bkup-2| 2024-10-30 08:37:40 (UTC)| backuppath2 |
    +-------------+-----------+--------+-----------------+--------------------------+-------------+
  3. Restaura la aplicación en el clúster de destino usando el nombre AppVault y la ruta de archivo:

  4. Crea el archivo de recurso personalizado (CR) y ponle el nombre trident-protect-backup-restore-cr.yaml.

  5. En el archivo que creaste, configura los siguientes atributos:

    • metadata.name: (Required) El nombre de este recurso personalizado; elige un nombre único y sensato para tu entorno.

    • spec.appVaultRef: (Required) el nombre del AppVault donde se almacena el contenido de la copia de seguridad.

    • spec.appArchivePath: la ruta dentro de AppVault donde se almacena el contenido de la copia de seguridad. Puedes usar el siguiente comando para encontrar esta ruta:

      kubectl get backups <BACKUP_NAME> -n my-app-namespace -o jsonpath='{.status.appArchivePath}'
      Nota Si BackupRestore CR no está disponible, puedes usar el comando mencionado en el paso 2 para ver 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. Reemplaza my-source-namespace y my-destination-namespace con información de tu entorno.

      Por ejemplo:

    apiVersion: protect.trident.netapp.io/v1
    kind: BackupRestore
    metadata:
      name: my-cr-name
      namespace: my-destination-namespace
    spec:
      appVaultRef: appvault-name
      appArchivePath: my-backup-path
      namespaceMapping: [{"source": "my-source-namespace", "destination": "my-destination-namespace"}]
  6. Después de rellenar el archivo trident-protect-backup-restore-cr.yaml con los valores correctos, aplica la CR:

    kubectl apply -f trident-protect-backup-restore-cr.yaml

Restaura una instantánea en un espacio de nombres diferente

Puedes restaurar datos de una instantánea usando un archivo de recurso personalizado (CR) ya sea en un espacio de nombres diferente o en el espacio de nombres de origen original. Cuando restauras una instantánea en un espacio de nombres diferente usando un CR de SnapshotRestore, Backup and Recovery restaura la aplicación en un nuevo espacio de nombres y crea un CR de aplicación para la aplicación restaurada. Para proteger la aplicación restaurada, crea copias de seguridad o instantáneas bajo demanda, o establece una programación de protección.

Nota
  • SnapshotRestore admite el atributo spec.storageClassMapping, pero solo cuando las clases de almacenamiento de origen y destino usan el mismo backend de almacenamiento. Si intentas restaurar en un StorageClass que usa un backend de almacenamiento diferente, la operación de restauración fallará.

  • Cuando usas un CR para restaurar en un nuevo espacio de nombres, debes crear manualmente el espacio de nombres de destino antes de aplicar el CR.

Antes de empezar

Asegúrate de que la caducidad del token de sesión de AWS sea suficiente para cualquier operación de restauración s3 de larga duración. Si el token caduca durante la operación de restauración, la operación puede fallar.

Pasos
  1. Crea el archivo de recurso personalizado (CR) y ponle el nombre trident-protect-snapshot-restore-cr.yaml.

  2. En el archivo que creaste, configura los siguientes atributos:

    • metadata.name: (Required) El nombre de este recurso personalizado; elige un nombre único y sensato para tu entorno.

    • spec.appVaultRef: (Required) El nombre de AppVault donde se almacenan los contenidos de la instantánea.

    • spec.appArchivePath: la ruta dentro de AppVault donde se almacena el contenido de la instantánea. Puedes usar el siguiente comando para encontrar 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. Reemplaza my-source-namespace y my-destination-namespace con información de tu 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"}]
  3. (Opcional) Si necesitas seleccionar solo ciertos recursos de la aplicación para restaurar, añade un filtrado que incluya o excluya recursos marcados con etiquetas concretas:

    Nota Trident Protect selecciona algunos recursos automáticamente debido a su relación con los recursos que tú seleccionas. Por ejemplo, si seleccionas un recurso de reclamación de volumen persistente y tiene un pod asociado, Trident Protect también restaurará el pod asociado.
    • resourceFilter.resourceSelectionCriteria: (Obligatorio para el filtrado) Usa Include o Exclude para incluir o excluir un recurso definido en resourceMatchers. Agrega los siguientes parámetros resourceMatchers para definir los recursos que se van a incluir o excluir:

      • resourceFilter.resourceMatchers: una matriz de objetos resourceMatcher. Si defines múltiples elementos en esta matriz, coinciden como una operación OR y los campos dentro de cada elemento (group, kind, version) coinciden como una operación AND.

        • resourceMatchers[].group: (Opcional) Grupo del recurso a filtrar.

        • resourceMatchers[].kind: (Opcional) Tipo del recurso a filtrar.

        • resourceMatchers[].version: (Opcional) Versión del recurso a filtrar.

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

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

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

          Por ejemplo:

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

    kubectl apply -f trident-protect-snapshot-restore-cr.yaml

Restaura una instantánea al espacio de nombres original

Puedes restaurar una instantánea al espacio de nombres original en cualquier momento.

Antes de empezar

Asegúrate de que la caducidad del token de sesión de AWS sea suficiente para cualquier operación de restauración s3 de larga duración. Si el token caduca durante la operación de restauración, la operación puede fallar.

Pasos
  1. Crea el archivo de recurso personalizado (CR) y asígnale el nombre trident-protect-snapshot-ipr-cr.yaml.

  2. En el archivo que creaste, configura los siguientes atributos:

    • metadata.name: (Required) El nombre de este recurso personalizado; elige un nombre único y sensato para tu entorno.

    • spec.appVaultRef: (Required) El nombre de AppVault donde se almacenan los contenidos de la instantánea.

    • spec.appArchivePath: la ruta dentro de AppVault donde se almacena el contenido de la instantánea. Puedes usar el siguiente comando para encontrar 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. (Opcional) Si necesitas seleccionar solo ciertos recursos de la aplicación para restaurar, añade un filtrado que incluya o excluya recursos marcados con etiquetas concretas:

    Nota Trident Protect selecciona algunos recursos automáticamente debido a su relación con los recursos que tú seleccionas. Por ejemplo, si seleccionas un recurso de reclamación de volumen persistente y tiene un pod asociado, Trident Protect también restaurará el pod asociado.
    • resourceFilter.resourceSelectionCriteria: (Obligatorio para el filtrado) Usa Include o Exclude para incluir o excluir un recurso definido en resourceMatchers. Agrega los siguientes parámetros resourceMatchers para definir los recursos que se van a incluir o excluir:

      • resourceFilter.resourceMatchers: una matriz de objetos resourceMatcher. Si defines múltiples elementos en esta matriz, coinciden como una operación OR y los campos dentro de cada elemento (group, kind, version) coinciden como una operación AND.

        • resourceMatchers[].group: (Opcional) Grupo del recurso a filtrar.

        • resourceMatchers[].kind: (Opcional) Tipo del recurso a filtrar.

        • resourceMatchers[].version: (Opcional) Versión del recurso a filtrar.

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

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

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

          Por ejemplo:

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

    kubectl apply -f trident-protect-snapshot-ipr-cr.yaml