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

  1. Créez un manifeste de CR MigCluster pour 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
    EOF
    Copy to Clipboard Toggle word wrap
  2. Créez un manifeste d’objets Secret pour 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
    Copy to Clipboard Toggle word wrap
    1
    Indiquez le token de compte de service (SA) migration-controller codé 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 0
    Copy to Clipboard Toggle word wrap
  3. Créez un manifeste de CR MigCluster pour 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: 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
    Indiquez la ressource personnalisée Cluster du 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 sur true.
    4
    Indiquez l’objet Secret du cluster distant.
    5
    Indiquez l’URL du cluster distant.
  4. Vérifiez que tous les clusters sont dans l’état Ready :

    $ oc describe cluster <cluster>
    Copy to Clipboard Toggle word wrap
  5. Créez un manifeste d’objets Secret pour 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
    
    EOF
    Copy to Clipboard Toggle word wrap
    1
    Indiquez l’ID de la clé au format base64.
    2
    Indiquez la clé secrète au format base64.

    Les 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 0 
    1
    Copy to Clipboard Toggle word wrap
    1
    Indiquez l’ID de la clé ou la clé secrète. Les deux clés doivent être codées en base64.
  6. Créez un manifeste de CR MigStorage pour 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
    Copy to Clipboard Toggle word wrap
    1
    Indiquez le nom du compartiment.
    2
    Indiquez la ressource personnalisée Secrets du stockage d’objets. Vous devez vous assurer que les informations d’identification stockées dans la ressource personnalisée Secrets du 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 Secrets du stockage d’objets. Vous devez vous assurer que les informations d’identification stockées dans la ressource personnalisée Secrets du stockage d’objets sont correctes.
    5
    Facultatif : si vous copiez des données en utilisant des clichés, indiquez le fournisseur de stockage.
  7. Vérifiez que la ressource personnalisée MigStorage se trouve dans l’état Ready :

    $ oc describe migstorage <migstorage>
    Copy to Clipboard Toggle word wrap
  8. 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: 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
    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 MigCluster du cluster source.
  9. Vérifiez que l’instance MigPlan se trouve dans l’état Ready :

    $ oc describe migplan <migplan> -n openshift-migration
    Copy to Clipboard Toggle word wrap
  10. Créez un manifeste de CR MigMigration pour lancer la migration définie dans l’instance 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
    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.
  11. Vérifiez la migration en observant la progression de la ressource personnalisée MigMigration :

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

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

Retour au début
Red Hat logoGithubredditYoutubeTwitter

Apprendre

Essayez, achetez et vendez

Communautés

À propos de la documentation Red Hat

Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance. Découvrez nos récentes mises à jour.

Rendre l’open source plus inclusif

Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez le Blog Red Hat.

À propos de Red Hat

Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.

Theme

© 2025 Red Hat