Restaura aplicaciones usando Trident Protect
Puedes usar Trident Protect para restaurar tu aplicación desde una instantánea o backup. Restaurar desde una instantánea existente será más rápido cuando restaures la aplicación en el mismo clúster.
|
|
|
Restaura desde una copia de seguridad a un espacio de nombres diferente
Cuando restauras una copia de seguridad en un espacio de nombres diferente usando un CR de BackupRestore, Trident Protect 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 un programa de protección.
|
|
|
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.
-
Consulta "Documentación de AWS API" para más información sobre cómo comprobar la expiración del token de sesión actual.
-
Consulta "Documentación de AWS IAM" para más información sobre las credenciales con los recursos de AWS.
|
|
Cuando restauras copias de seguridad usando Kopia como el transportador de datos, puedes especificar opcionalmente anotaciones en el CR o usando la CLI para controlar el comportamiento del almacenamiento temporal que usa Kopia. Consulta la "Documentación de Kopia" para más información sobre las opciones que puedes configurar. Usa el comando tridentctl-protect create --help para más información sobre cómo especificar anotaciones con la Trident Protect CLI.
|
-
Crea el archivo de recurso personalizado (CR) y asígnale el nombre
trident-protect-backup-restore-cr.yaml. -
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-namespaceymy-destination-namespacecon 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"}]
-
-
(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:
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
IncludeoExcludepara 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"] -
-
Después de rellenar el archivo
trident-protect-backup-restore-cr.yamlcon los valores correctos, aplica la CR:kubectl apply -f trident-protect-backup-restore-cr.yaml
-
Restaura la copia de seguridad en un espacio de nombres diferente, reemplazando los valores entre corchetes por información de tu entorno. El argumento
namespace-mappingusa espacios de nombres separados por dos puntos para mapear los espacios de nombres de origen a los espacios de nombres de destino correctos en el formatosource1: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> \ -n <application_namespace>
Restaura desde una copia de seguridad al espacio de nombres original
Puedes restaurar una copia de seguridad en el espacio de nombres original en cualquier momento.
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.
-
Consulta "Documentación de AWS API" para más información sobre cómo comprobar la expiración del token de sesión actual.
-
Consulta "Documentación de AWS IAM" para más información sobre las credenciales con los recursos de AWS.
|
|
Cuando restauras copias de seguridad usando Kopia como el transportador de datos, puedes especificar opcionalmente anotaciones en el CR o usando la CLI para controlar el comportamiento del almacenamiento temporal que usa Kopia. Consulta la "Documentación de Kopia" para más información sobre las opciones que puedes configurar. Usa el comando tridentctl-protect create --help para más información sobre cómo especificar anotaciones con la Trident Protect CLI.
|
-
Crea el archivo de recurso personalizado (CR) y asígnale el nombre
trident-protect-backup-ipr-cr.yaml. -
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 -
-
(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:
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
IncludeoExcludepara 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"] -
-
Después de rellenar el archivo
trident-protect-backup-ipr-cr.yamlcon los valores correctos, aplica la CR:kubectl apply -f trident-protect-backup-ipr-cr.yaml
-
Restaura la copia de seguridad en el espacio de nombres original, sustituyendo los valores entre corchetes por información de tu entorno. El argumento
backuputiliza 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> \ -n <application_namespace>
Restaurar desde 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.
|
|
|
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 tu entorno local puede conectarse al bucket de almacenamiento de objetos definido en el AppVault CR cuando ejecutes el comando
tridentctl-protect get appvaultcontent. Si las restricciones de red impiden el acceso, ejecuta la CLI de Trident Protect desde un pod en el clúster de destino en su lugar. -
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.
-
Consulta "Documentación de AWS API" para más información sobre cómo comprobar la expiración del token de sesión actual.
-
Consulta "Documentación de AWS" para más información sobre las credenciales con los recursos de AWS.
-
-
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>Asegúrate de que el espacio de nombres previsto para la restauración de la aplicación existe en el clúster de destino. -
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 | +-------------+-----------+--------+-----------------+--------------------------+-------------+
-
Restaura la aplicación en el clúster de destino usando el nombre AppVault y la ruta de archivo:
-
Crea el archivo de recurso personalizado (CR) y asígnale el nombre
trident-protect-backup-restore-cr.yaml. -
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}'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-namespaceymy-destination-namespacecon 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"}] -
-
Después de rellenar el archivo
trident-protect-backup-restore-cr.yamlcon los valores correctos, aplica la CR:kubectl apply -f trident-protect-backup-restore-cr.yaml
-
Usa el siguiente comando para restaurar la aplicación, reemplazando los valores entre corchetes por la información de tu entorno. El argumento namespace-mapping utiliza espacios de nombres separados por dos puntos para asignar los 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 <restore_name> \ --namespace-mapping <source_to_destination_namespace_mapping> \ --appvault <appvault_name> \ --path <backup_path> \ --context <destination_cluster_name> \ -n <application_namespace>
Restaurar desde una snapshot a un namespace 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. Cuando restauras una instantánea en un espacio de nombres diferente usando un CR de SnapshotRestore, Trident Protect 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 un programa de protección.
|
|
|
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.
-
Consulta "Documentación de AWS API" para más información sobre cómo comprobar la expiración del token de sesión actual.
-
Consulta "Documentación de AWS IAM" para más información sobre las credenciales con los recursos de AWS.
-
Crea el archivo de recurso personalizado (CR) y asígnale el nombre
trident-protect-snapshot-restore-cr.yaml. -
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-namespaceymy-destination-namespacecon 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"}]
-
-
(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:
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
IncludeoExcludepara 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"] -
-
Después de rellenar el archivo
trident-protect-snapshot-restore-cr.yamlcon los valores correctos, aplica la CR:kubectl apply -f trident-protect-snapshot-restore-cr.yaml
-
Restaura la instantánea en un espacio de nombres diferente, reemplazando los valores entre corchetes con información de tu entorno.
-
El
snapshot`argumento usa un espacio de nombres y un nombre de instantánea en el formato `<namespace>/<name>. -
El
namespace-mappingargumento utiliza espacios de nombres separados por dos puntos para asignar los espacios de nombres de origen a los espacios de nombres de destino correctos en el formatosource1:dest1,source2:dest2.Por ejemplo:
tridentctl-protect create snapshotrestore <my_restore_name> \ --snapshot <namespace/snapshot_to_restore> \ --namespace-mapping <source_to_destination_namespace_mapping> \ -n <application_namespace> -
Restaurar desde una snapshot al namespace original
Puedes restaurar una instantánea al espacio de nombres original en cualquier momento.
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.
-
Consulta "Documentación de AWS API" para más información sobre cómo comprobar la expiración del token de sesión actual.
-
Consulta "Documentación de AWS IAM" para más información sobre las credenciales con los recursos de AWS.
-
Crea el archivo de recurso personalizado (CR) y asígnale el nombre
trident-protect-snapshot-ipr-cr.yaml. -
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
-
-
(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:
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
IncludeoExcludepara 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"] -
-
Después de rellenar el archivo
trident-protect-snapshot-ipr-cr.yamlcon los valores correctos, aplica la CR:kubectl apply -f trident-protect-snapshot-ipr-cr.yaml
-
Restaura la instantánea en el espacio de nombres original, reemplazando los valores entre corchetes por información de tu entorno. Por ejemplo:
tridentctl-protect create snapshotinplacerestore <my_restore_name> \ --snapshot <namespace/snapshot_to_restore> \ -n <application_namespace>
Verifica el estado de una operación de restauración
Puedes usar la línea de comandos para comprobar el estado de una operación de restauración que está en curso, ha finalizado o ha fallado.
-
Usa el siguiente comando para obtener el estado de la operación de restauración, reemplazando los valores entre corchetes por la información de tu entorno:
kubectl get backuprestore -n <namespace_name> <my_restore_cr_name> -o jsonpath='{.status}'