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

  1. Crie um manifesto de CR MigCluster para 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
    EOF
    Copy to Clipboard Toggle word wrap
  2. Criar um manifesto de objeto Secret para 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
    Copy to Clipboard Toggle word wrap
    1
    Especifique o token da conta de serviço (SA) migration-controller codificada 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 0
    Copy to Clipboard Toggle word wrap
  3. Crie um manifesto de CR MigCluster para 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: false 
    3
    
      isHostCluster: false
      serviceAccountSecretRef:
        name: <remote_cluster_secret> 
    4
    
        namespace: openshift-config
      url: <remote_cluster_url> 
    5
    
    EOF
    Copy to Clipboard Toggle word wrap
    1
    Especifique o CR Cluster do 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 se true.
    4
    Especifique o objeto Secret do cluster remoto.
    5
    Especifique a URL do cluster remoto.
  4. Verifique se todos os clusters estão em um estado Ready:

    $ oc describe cluster <cluster>
    Copy to Clipboard Toggle word wrap
  5. Crie um manifesto de objeto Secret para 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
    
    EOF
    Copy to Clipboard Toggle word wrap
    1
    Especifique a ID da chave no formato base64.
    2
    Especifique a chave secreta no formato base64.

    As 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 0 
    1
    Copy to Clipboard Toggle word wrap
    1
    Especifique a ID da chave ou a chave secreta. Ambas as chaves devem ser codificadas em base64.
  6. Crie um manifesto de CR MigStorage para 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
    Copy to Clipboard Toggle word wrap
    1
    Especifique o nome do bucket.
    2
    Especifique o CR Segredos do armazenamento de objetos. Você deve garantir que as credenciais armazenadas no CR Secret do armazenamento de objetos estejam corretas.
    3
    Especifique o provedor de armazenamento.
    4
    Opcional: se estiver copiando dados usando snapshots, especifique o CR Secret do armazenamento de objetos. Você deve garantir que as credenciais armazenadas no CR Secret do armazenamento de objetos estejam corretas.
    5
    Opcional: se estiver copiando dados usando snapshots, especifique o provedor de armazenamento.
  7. Verifique se o CR MigStorage está em um estado Ready:

    $ oc describe migstorage <migstorage>
    Copy to Clipboard Toggle word wrap
  8. 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: 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
    Copy to Clipboard Toggle word wrap
    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 MigCluster do cluster de origem.
  9. Verifique se a instância MigPlan está em um estado Ready:

    $ oc describe migplan <migplan> -n openshift-migration
    Copy to Clipboard Toggle word wrap
  10. Crie um manifesto de CR MigMigration para iniciar a migração definida na instância MigPlan:

    $ 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
    Copy to Clipboard Toggle word wrap
    1
    Especifique o nome do CR MigPlan.
    2
    Os pods no cluster de origem são interrompidos antes da migração se true.
    3
    Uma migração em etapas, que copia a maioria dos dados sem parar o aplicativo, é realizada se true.
    4
    Uma migração concluída é revertida se true.
  11. Verifique a migração observando o progresso do CR MigMigration

    $ oc watch migmigration <migmigration> -n openshift-migration
    Copy to Clipboard Toggle word wrap

    A 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
    Copy to Clipboard Toggle word wrap

Voltar ao topo
Red Hat logoGithubredditYoutubeTwitter

Aprender

Experimente, compre e venda

Comunidades

Sobre a documentação da Red Hat

Ajudamos os usuários da Red Hat a inovar e atingir seus objetivos com nossos produtos e serviços com conteúdo em que podem confiar. Explore nossas atualizações recentes.

Tornando o open source mais inclusivo

A Red Hat está comprometida em substituir a linguagem problemática em nosso código, documentação e propriedades da web. Para mais detalhes veja o Blog da Red Hat.

Sobre a Red Hat

Fornecemos soluções robustas que facilitam o trabalho das empresas em plataformas e ambientes, desde o data center principal até a borda da rede.

Theme

© 2025 Red Hat