11.2.4. Migration d’une application à l’aide de l’API MTC
Vous pouvez migrer une application à partir de la ligne de commande en utilisant l’API Migration Toolkit for Containers (MTC).
Procédure
Créez un manifeste de CR
MigClusterpour le cluster hôte :$ cat << EOF | oc apply -f - apiVersion: migration.openshift.io/v1alpha1 kind: MigCluster metadata: name: <host_cluster> namespace: openshift-migration spec: isHostCluster: true EOFCréez un manifeste d’objets
Secretpour chaque cluster distant :$ 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
- Indiquez le token de compte de service (SA)
migration-controllercodé en base64 du cluster distant. Vous pouvez obtenir le token en exécutant la commande suivante :
$ oc sa get-token migration-controller -n openshift-migration | base64 -w 0Créez un manifeste de CR
MigClusterpour chaque cluster distant :$ 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: false3 isHostCluster: false serviceAccountSecretRef: name: <remote_cluster_secret>4 namespace: openshift-config url: <remote_cluster_url>5 EOF- 1
- Indiquez la ressource personnalisée
Clusterdu cluster distant. - 2
- Facultatif : pour la migration directe d’images, indiquez la route de registre exposée.
- 3
- La vérification SSL est activée si la valeur est définie sur
false. Les certificats CA ne sont pas requis ni vérifiés si la valeur est définie surtrue. - 4
- Indiquez l’objet
Secretdu cluster distant. - 5
- Indiquez l’URL du cluster distant.
Vérifiez que tous les clusters sont dans l’état
Ready:$ oc describe cluster <cluster>Créez un manifeste d’objets
Secretpour le référentiel de réplication :$ 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 EOFLes informations d’identification AWS sont codées en base64 par défaut. Pour les autres fournisseurs de stockage, vous devez coder vos informations d’identification en exécutant la commande suivante avec chaque clé :
$ echo -n "<key>" | base64 -w 01 - 1
- Indiquez l’ID de la clé ou la clé secrète. Les deux clés doivent être codées en base64.
Créez un manifeste de CR
MigStoragepour le référentiel de réplication :$ 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
- Indiquez le nom du compartiment.
- 2
- Indiquez la ressource personnalisée
Secretsdu stockage d’objets. Vous devez vous assurer que les informations d’identification stockées dans la ressource personnaliséeSecretsdu stockage d’objets sont correctes. - 3
- Indiquez le fournisseur de stockage.
- 4
- Facultatif : si vous copiez des données en utilisant des clichés, indiquez la ressource personnalisée
Secretsdu stockage d’objets. Vous devez vous assurer que les informations d’identification stockées dans la ressource personnaliséeSecretsdu stockage d’objets sont correctes. - 5
- Facultatif : si vous copiez des données en utilisant des clichés, indiquez le fournisseur de stockage.
Vérifiez que la ressource personnalisée
MigStoragese trouve dans l’étatReady:$ oc describe migstorage <migstorage>Créez un manifeste de 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: true1 indirectVolumeMigration: true2 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 migration directe des images est activée si la valeur est définie sur
false. - 2
- La migration directe des volumes est activée si la valeur est définie sur
false. - 3
- Indiquez le nom de l’instance CR
MigStorage. - 4
- Indiquez un ou plusieurs espaces de nommage sources. Par défaut, l’espace de nommage de destination porte le même nom.
- 5
- Indiquez un espace de nommage de destination s’il est différent de l’espace de nommage source.
- 6
- Indiquez le nom de l’instance
MigClusterdu cluster source.
Vérifiez que l’instance
MigPlanse trouve dans l’étatReady:$ oc describe migplan <migplan> -n openshift-migrationCréez un manifeste de CR
MigMigrationpour lancer la migration définie dans l’instanceMigPlan:$ 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: true2 stage: false3 rollback: false4 EOF- 1
- Indiquez le nom de la ressource personnalisée
MigPlan. - 2
- Les pods sur le cluster source sont arrêtés avant la migration si la valeur est définie sur
true. - 3
- Une migration par étapes, qui copie la plupart des données sans arrêter l’application, est effectuée si la valeur est définie sur
true. - 4
- Une migration terminée est annulée si la valeur est définie sur
true.
Vérifiez la migration en observant la progression de la ressource personnalisée
MigMigration:$ oc watch migmigration <migmigration> -n openshift-migrationLa sortie se présente comme suit :
Exemple de sortie
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