Migrar aplicaciones con Trident Protect
Puede migrar sus aplicaciones entre clústeres o a diferentes clases de almacenamiento restaurando datos de respaldo.
|
Al migrar una aplicación, todos los ganchos de ejecución configurados para la aplicación se migran 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. |
Operaciones de backup y restauración
Para realizar operaciones de backup y restauración para las siguientes situaciones, se pueden automatizar tareas de backup y restauración específicas.
Clone en el mismo clúster
Para clonar una aplicación en el mismo clúster, cree una copia Snapshot o un backup y restaure los datos en el mismo clúster.
-
Debe realizar una de las siguientes acciones:
-
En el mismo clúster, realice una de las siguientes acciones, según si se ha creado una snapshot o un backup:
Clone en otro clúster
Para clonar una aplicación en un clúster diferente (realizar un clon entre clústeres), crear un backup en el clúster de origen y, a continuación, restaurar el backup en un clúster diferente. Asegúrese de que Trident Protect está instalado en el clúster de destino.
|
Puede replicar una aplicación entre diferentes clusters mediante "Replicación de SnapMirror". |
-
Asegúrese de que el CR de AppVault para el depósito de almacenamiento de objetos que contiene la copia de seguridad se haya configurado en el clúster de destino.
-
En el clúster de destino, "restaure los datos del backup".
Migre aplicaciones de una clase de almacenamiento a otra clase de almacenamiento
Puede migrar aplicaciones de una clase de almacenamiento a una clase de almacenamiento diferente restaurando una copia de seguridad en la clase de almacenamiento de destino.
Por ejemplo (excluyendo los secretos de la CR de restauración):
apiVersion: protect.trident.netapp.io/v1
kind: SnapshotRestore
metadata:
name: "${snapshotRestoreCRName}"
spec:
appArchivePath: "${snapshotArchivePath}"
appVaultRef: "${appVaultCRName}"
namespaceMapping:
- destination: "${destinationNamespace}"
source: "${sourceNamespace}"
storageClassMapping:
- destination: "${destinationStorageClass}"
source: "${sourceStorageClass}"
resourceFilter:
resourceMatchers:
kind: Secret
version: v1
resourceSelectionCriteria: exclude
-
Cree el archivo de recursos personalizados (CR) y asígnele un nombre
trident-protect-snapshot-restore-cr.yaml
. -
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 instantánea. Puede utilizar el siguiente comando para buscar esta ruta:
kubectl get snapshots <my-snapshot-name> -n trident-protect -o jsonpath='{.status.appArchivePath}'
-
Spec.appVaultRef: (required) El nombre del AppVault donde se almacena el contenido de la instantánea.
-
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
ymy-destination-namespace
con la información de su entorno.--- apiVersion: protect.trident.netapp.io/v1 kind: SnapshotRestore metadata: name: my-cr-name namespace: trident-protect spec: appArchivePath: my-snapshot-path appVaultRef: appvault-name namespaceMapping: [{"source": "my-source-namespace", "destination": "my-destination-namespace"}]
-
-
Opcionalmente, si necesita seleccionar solo ciertos recursos de la aplicación para restaurar, agregue filtros que incluyan o excluyan recursos marcados con etiquetas concretas:
-
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: Una matriz de objetos resourceMatcher. Si define varios elementos en esta matriz, coinciden como una OPERACIÓN OR y los campos dentro de cada elemento (grupo, tipo, versión) coinciden como una operación AND.
-
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-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
trident-protect-snapshot-restore-cr.yaml
el archivo con los valores correctos, aplique el CR:kubectl apply -f trident-protect-snapshot-restore-cr.yaml
-
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 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>
-