Migrar aplicaciones usando 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 existe un gancho de ejecución posterior a la restauración, se ejecuta automáticamente como parte de la operación de restauración. |
Operaciones de copia de seguridad y restauración
Para realizar operaciones de copia de seguridad y restauración en los siguientes escenarios, puede automatizar tareas específicas de copia de seguridad y restauración.
Clonar al mismo clúster
Para clonar una aplicación en el mismo clúster, cree una instantánea o copia de seguridad 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, dependiendo de si creó una instantánea o una copia de seguridad:
Clonar a un clúster diferente
Para clonar una aplicación en un clúster diferente (realizar una clonación entre clústeres), cree una copia de seguridad en el clúster de origen y, a continuación, restaure la copia de seguridad en un clúster diferente. Asegúrese de que Trident Protect esté instalado en el clúster de destino.
|
|
Puedes replicar una aplicación entre diferentes clústeres usando"Replicación de SnapMirror" . |
-
Asegúrese de que el CR de AppVault para el bucket 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,"Restaura tus datos desde la copia de seguridad" .
Migrar 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 restauración CR):
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
-
Crea el archivo de recursos personalizados (CR) y nómbralo.
trident-protect-snapshot-restore-cr.yaml. -
En el archivo que creó, configure los siguientes atributos:
-
metadata.name: (Obligatorio) El nombre de este recurso personalizado; elija un nombre único y adecuado para su entorno.
-
spec.appArchivePath: La ruta dentro de AppVault donde se almacenan los contenidos de las instantáneas. Puedes utilizar el siguiente comando para encontrar esta ruta:
kubectl get snapshots <my-snapshot-name> -n trident-protect -o jsonpath='{.status.appArchivePath}' -
spec.appVaultRef: (Obligatorio) El nombre del AppVault donde se almacenan los contenidos 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. Reemplazar
my-source-namespaceymy-destination-namespacecon información de tu 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 un filtro que incluya o excluya los recursos marcados con etiquetas particulares:
-
resourceFilter.resourceSelectionCriteria: (Obligatorio para filtrar) Usar
include or excludepara incluir o excluir un recurso definido en resourceMatchers. Agregue los siguientes parámetros resourceMatchers para definir los recursos que se incluirán o excluirán:-
resourceFilter.resourceMatchers: Una matriz de objetos resourceMatcher. Si defines 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: (Opcional) Grupo del recurso a filtrar.
-
resourceMatchers[].kind: (Opcional) Tipo de 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 etiquetas en el campo metadata.name de Kubernetes 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 el
trident-protect-snapshot-restore-cr.yamlArchivo con los valores correctos, aplicar 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 corchetes con información de su entorno.
-
El
snapshotEl argumento utiliza un espacio de nombres y un nombre de instantánea en el formato<namespace>/<name>. -
El
namespace-mappingEl argumento 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> -