Restaura aplicaciones Kubernetes usando un recurso personalizado
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.
|
|
|
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.
|
|
|
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 la API de AWS" 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 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. |
-
Crea el archivo de recurso personalizado (CR) y ponle 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 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.
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 la API de AWS" 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 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. |
-
Crea el archivo de recurso personalizado (CR) y ponle 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 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 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 la API de AWS" 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 ponle 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
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.
|
|
|
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 la API de AWS" 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 ponle 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 una instantánea al espacio de nombres 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 la API de AWS" 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