11.2.4. Migração de aplicativos usando a API do MTC
Você pode migrar um aplicativo a partir da linha de comando usando a API do Migration Toolkit for Containers (MTC).
Procedimento
Crie um manifesto de CR
MigClusterpara o cluster de host:$ cat << EOF | oc apply -f - apiVersion: migration.openshift.io/v1alpha1 kind: MigCluster metadata: name: <host_cluster> namespace: openshift-migration spec: isHostCluster: true EOFCriar um manifesto de objeto
Secretpara cada cluster 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 o token da conta de serviço (SA)
migration-controllercodificada em base64 do cluster remoto. É possível obter o token executando o seguinte comando:
$ oc sa get-token migration-controller -n openshift-migration | base64 -w 0Crie um manifesto de CR
MigClusterpara cada cluster 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: false3 isHostCluster: false serviceAccountSecretRef: name: <remote_cluster_secret>4 namespace: openshift-config url: <remote_cluster_url>5 EOF- 1
- Especifique o CR
Clusterdo cluster remoto. - 2
- Opcional: para migração direta de imagem, especifique a rota do registro exposto.
- 3
- A verificação SSL é ativada se
false. Os certificados CA não são exigidos nem verificados setrue. - 4
- Especifique o objeto
Secretdo cluster remoto. - 5
- Especifique a URL do cluster remoto.
Verifique se todos os clusters estão em um estado
Ready:$ oc describe cluster <cluster>Crie um manifesto de objeto
Secretpara o repositório de replicação:$ 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 EOFAs credenciais da AWS são codificadas em base64 por padrão. Para outros provedores de armazenamento, você deve codificar suas credenciais executando o seguinte comando com cada chave:
$ echo -n "<key>" | base64 -w 01 - 1
- Especifique a ID da chave ou a chave secreta. Ambas as chaves devem ser codificadas em base64.
Crie um manifesto de CR
MigStoragepara o repositório de replicação:$ 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 o nome do bucket.
- 2
- Especifique o CR
Segredosdo armazenamento de objetos. Você deve garantir que as credenciais armazenadas no CRSecretdo armazenamento de objetos estejam corretas. - 3
- Especifique o provedor de armazenamento.
- 4
- Opcional: se estiver copiando dados usando snapshots, especifique o CR
Secretdo armazenamento de objetos. Você deve garantir que as credenciais armazenadas no CRSecretdo armazenamento de objetos estejam corretas. - 5
- Opcional: se estiver copiando dados usando snapshots, especifique o provedor de armazenamento.
Verifique se o CR
MigStorageestá em um estadoReady:$ oc describe migstorage <migstorage>Crie um manifesto 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
- A migração direta de imagem é ativada se
false. - 2
- A migração direta de volume é ativada se
false. - 3
- Especifique o nome da instância do CR
MigStorage. - 4
- Especifique um ou mais namespaces de origem. Por padrão, o namespace de destino tem o mesmo nome.
- 5
- Especifique um namespace de destino se ele for diferente do namespace de origem.
- 6
- Especifique o nome da instância
MigClusterdo cluster de origem.
Verifique se a instância
MigPlanestá em um estadoReady:$ oc describe migplan <migplan> -n openshift-migrationCrie um manifesto de CR
MigMigrationpara iniciar a migração definida na instânciaMigPlan:$ 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 EOFVerifique a migração observando o progresso do CR
MigMigration$ oc watch migmigration <migmigration> -n openshift-migrationA saída se assemelha ao seguinte:
Exemplo de saída
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