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

  1. 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
  2. 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
  3. 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 son verdaderos.
    4
    Especifique el objeto secreto del clúster remoto.
    5
    Especifique la URL del clúster remoto.
  4. Compruebe que todos los clústeres tengan el estado Ready (Listo):

    $ oc describe cluster <cluster>
  5. 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
    1
    Especifique el ID de la clave en formato base64.
    2
    Especifique la clave secreta en formato base64.

    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.
  6. 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 CR Secrets 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 CR Secrets del almacenamiento de objetos sean correctas.
    5
    Opcional: si copia los datos mediante el uso de instantáneas, especifique el proveedor de almacenamiento.
  7. Compruebe que el CR MigStorage tenga el estado Ready (Listo):

    $ oc describe migstorage <migstorage>
  8. 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.
  9. Compruebe que la instancia MigPlan se encuentre en el estado Ready (Listo):

    $ oc describe migplan <migplan> -n openshift-migration
  10. Cree un manifiesto de CR de MigMigration para iniciar la migración definida en la instancia 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
    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.
  11. 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

Red Hat logoGithubRedditYoutubeTwitter

Aprender

Pruebe, compre y venda

Comunidades

Acerca de la documentación de Red Hat

Ayudamos a los usuarios de Red Hat a innovar y alcanzar sus objetivos con nuestros productos y servicios con contenido en el que pueden confiar.

Hacer que el código abierto sea más inclusivo

Red Hat se compromete a reemplazar el lenguaje problemático en nuestro código, documentación y propiedades web. Para más detalles, consulte el Blog de Red Hat.

Acerca de Red Hat

Ofrecemos soluciones reforzadas que facilitan a las empresas trabajar en plataformas y entornos, desde el centro de datos central hasta el perímetro de la red.

© 2024 Red Hat, Inc.