11.3.4. Migración de una aplicación mediante la API de MTC
Puede migrar una aplicación desde la línea de comandos utilizando la API de Migration Toolkit for Containers (MTC).
Procedimiento
Cree un manifiesto de CR de
MigCluster
para el clúster del host:$ cat << EOF | oc apply -f - apiVersion: migration.openshift.io/v1alpha1 kind: MigCluster metadata: name: <host_cluster> namespace: openshift-migration spec: isHostCluster: true EOF
Cree un manifiesto de objetos
Secret
para cada clúster remoto:$ cat << EOF | oc apply -f - apiVersion: v1 kind: Secret metadata: name: <cluster_secret> namespace: openshift-config type: Opaque data: saToken: <sa_token> 1 EOF
- 1
- Especifique el token de la cuenta de servicio (SA)
migration-controller
codificado en base64 del clúster remoto. Puede obtener el token ejecutando el siguiente comando:
$ oc sa get-token migration-controller -n openshift-migration | base64 -w 0
Cree un manifiesto de CR de
MigCluster
para cada clúster remoto:$ cat << EOF | oc apply -f - apiVersion: migration.openshift.io/v1alpha1 kind: MigCluster metadata: name: <remote_cluster> 1 namespace: openshift-migration spec: exposedRegistryPath: <exposed_registry_route> 2 insecure: false 3 isHostCluster: false serviceAccountSecretRef: name: <remote_cluster_secret> 4 namespace: openshift-config url: <remote_cluster_url> 5 EOF
- 1
- Especifique el CR de
clúster
del clúster remoto. - 2
- Opcional: para la migración directa de imágenes, especifique la ruta de registro expuesta.
- 3
- La verificación de SSL se activa si es
falsa
. Los certificados de CA no son necesarios ni se comprueban si sonverdaderos
. - 4
- Especifique el objeto
secreto
del clúster remoto. - 5
- Especifique la URL del clúster remoto.
Compruebe que todos los clústeres tengan el estado
Ready
(Listo):$ oc describe cluster <cluster>
Cree un manifiesto de objetos
Secret
para el repositorio de replicación:$ cat << EOF | oc apply -f - apiVersion: v1 kind: Secret metadata: namespace: openshift-config name: <migstorage_creds> type: Opaque data: aws-access-key-id: <key_id_base64> 1 aws-secret-access-key: <secret_key_base64> 2 EOF
Las credenciales de AWS están codificadas en base64 por defecto. Para otros proveedores de almacenamiento, debe codificar sus credenciales ejecutando el siguiente comando con cada clave:
$ echo -n "<key>" | base64 -w 0 1
- 1
- Especifique el ID de la clave o la clave secreta. Ambas claves deben estar codificadas en base64.
Cree un manifiesto de CR de
MigStorage
para el repositorio de replicación:$ cat << EOF | oc apply -f - apiVersion: migration.openshift.io/v1alpha1 kind: MigStorage metadata: name: <migstorage> namespace: openshift-migration spec: backupStorageConfig: awsBucketName: <bucket> 1 credsSecretRef: name: <storage_secret> 2 namespace: openshift-config backupStorageProvider: <storage_provider> 3 volumeSnapshotConfig: credsSecretRef: name: <storage_secret> 4 namespace: openshift-config volumeSnapshotProvider: <storage_provider> 5 EOF
- 1
- Especifique el nombre del bucket.
- 2
- Especifique el CR
Secrets
del almacenamiento de objetos. Debe asegurarse de que las credenciales almacenadas en el CRSecrets
del almacenamiento de objetos sean correctas. - 3
- Especifique el proveedor de almacenamiento.
- 4
- Opcional: si copia los datos mediante el uso de instantáneas, especifique el CR
Secrets
del almacenamiento de objetos. Debe asegurarse de que las credenciales almacenadas en el CRSecrets
del almacenamiento de objetos sean correctas. - 5
- Opcional: si copia los datos mediante el uso de instantáneas, especifique el proveedor de almacenamiento.
Compruebe que el CR
MigStorage
tenga el estadoReady
(Listo):$ oc describe migstorage <migstorage>
Cree un manifiesto del CR
MigPlan
:$ cat << EOF | oc apply -f - apiVersion: migration.openshift.io/v1alpha1 kind: MigPlan metadata: name: <migplan> namespace: openshift-migration spec: destMigClusterRef: name: <host_cluster> namespace: openshift-migration indirectImageMigration: true 1 indirectVolumeMigration: true 2 migStorageRef: name: <migstorage> 3 namespace: openshift-migration namespaces: - <source_namespace_1> 4 - <source_namespace_2> - <source_namespace_3>:<destination_namespace> 5 srcMigClusterRef: name: <remote_cluster> 6 namespace: openshift-migration EOF
- 1
- La migración directa de imágenes se activa si es
falsa
. - 2
- La migración directa de volúmenes se activa si es
falsa
. - 3
- Especifique el nombre de la instancia de CR
MigStorage
. - 4
- Especifique uno o más espacios de nombres de origen. Por defecto, el espacio de nombres de destino tiene el mismo nombre.
- 5
- Especifique un espacio de nombres de destino si es diferente del espacio de nombres de origen.
- 6
- Especifique el nombre de la instancia
MigCluster
del clúster de origen.
Compruebe que la instancia
MigPlan
se encuentre en el estadoReady
(Listo):$ oc describe migplan <migplan> -n openshift-migration
Cree un manifiesto de CR de
MigMigration
para iniciar la migración definida en la instanciaMigPlan
:$ cat << EOF | oc apply -f - apiVersion: migration.openshift.io/v1alpha1 kind: MigMigration metadata: name: <migmigration> namespace: openshift-migration spec: migPlanRef: name: <migplan> 1 namespace: openshift-migration quiescePods: true 2 stage: false 3 rollback: false 4 EOF
- 1
- Especifique el nombre del CR
MigPlan
. - 2
- Los pods del clúster de origen se detienen antes de la migración si son
verdaderos
. - 3
- Se realiza una migración por etapas que copia la mayor parte de los datos sin detener la aplicación si es
verdadera
. - 4
- Una migración completada se revierte si es
verdadera
.
Verifique la migración observando el progreso del CR
MigMigration
:$ oc watch migmigration <migmigration> -n openshift-migration
El resultado se parece a lo siguiente:
Ejemplo de salida
Name: c8b034c0-6567-11eb-9a4f-0bc004db0fbc Namespace: openshift-migration Labels: migration.openshift.io/migplan-name=django Annotations: openshift.io/touch: e99f9083-6567-11eb-8420-0a580a81020c API Version: migration.openshift.io/v1alpha1 Kind: MigMigration ... Spec: Mig Plan Ref: Name: migplan Namespace: openshift-migration Stage: false Status: Conditions: Category: Advisory Last Transition Time: 2021-02-02T15:04:09Z Message: Step: 19/47 Reason: InitialBackupCreated Status: True Type: Running Category: Required Last Transition Time: 2021-02-02T15:03:19Z Message: The migration is ready. Status: True Type: Ready Category: Required Durable: true Last Transition Time: 2021-02-02T15:04:05Z Message: The migration registries are healthy. Status: True Type: RegistriesHealthy Itinerary: Final Observed Digest: 7fae9d21f15979c71ddc7dd075cb97061895caac5b936d92fae967019ab616d5 Phase: InitialBackupCreated Pipeline: Completed: 2021-02-02T15:04:07Z Message: Completed Name: Prepare Started: 2021-02-02T15:03:18Z Message: Waiting for initial Velero backup to complete. Name: Backup Phase: InitialBackupCreated Progress: Backup openshift-migration/c8b034c0-6567-11eb-9a4f-0bc004db0fbc-wpc44: 0 out of estimated total of 0 objects backed up (5s) Started: 2021-02-02T15:04:07Z Message: Not started Name: StageBackup Message: Not started Name: StageRestore Message: Not started Name: DirectImage Message: Not started Name: DirectVolume Message: Not started Name: Restore Message: Not started Name: Cleanup Start Timestamp: 2021-02-02T15:03:18Z Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Running 57s migmigration_controller Step: 2/47 Normal Running 57s migmigration_controller Step: 3/47 Normal Running 57s (x3 over 57s) migmigration_controller Step: 4/47 Normal Running 54s migmigration_controller Step: 5/47 Normal Running 54s migmigration_controller Step: 6/47 Normal Running 52s (x2 over 53s) migmigration_controller Step: 7/47 Normal Running 51s (x2 over 51s) migmigration_controller Step: 8/47 Normal Ready 50s (x12 over 57s) migmigration_controller The migration is ready. Normal Running 50s migmigration_controller Step: 9/47 Normal Running 50s migmigration_controller Step: 10/47