11.2.4. Eseguire la migrazione di un'applicazione tramite l'API MTC


È possibile eseguire la migrazione di un'applicazione dalla riga di comando tramite l'API Migration Toolkit for Containers (MTC).

Procedura

  1. Creare il manifest della risorsa personalizzata MigCluster per il cluster 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. Creare il manifest dell'oggetto Secret per ogni 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
    Specificare il token dell'account di servizio (SA) migration-controller con codifica base64 del cluster remoto. È possibile ottenere il token eseguendo il seguente comando:
    $ oc sa get-token migration-controller -n openshift-migration | base64 -w 0
  3. Creare il manifest della risorsa personalizzata MigCluster per ogni 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
    1
    Specificare la risorsa personalizzata Cluster del cluster remoto.
    2
    Facoltativo: per la migrazione diretta delle immagini, specificare il percorso del registro esposto.
    3
    La verifica SSL è abilitata se false. I certificati CA non sono richiesti o controllati se true.
    4
    Specificare l'oggetto Secret del cluster remoto.
    5
    Specificare l'URL del cluster remoto.
  4. Verificare che tutti i cluster siano nello stato Ready:

    $ oc describe cluster <cluster>
  5. Creare il manifest dell'oggetto Secret per il repository di replica:

    $ 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
    Specificare l'ID della chiave in formato base64.
    2
    Specificare la chiave segreta in formato base64.

    Le credenziali di AWS sono con codifica base64 per impostazione predefinita. Per gli altri provider di storage, è necessario codificare le proprie credenziali eseguendo il seguente comando con ogni chiave:

    $ echo -n "<key>" | base64 -w 0 1
    1
    Specificare l'ID della chiave o la chiave segreta. Entrambe le chiavi devono essere con codifica base64.
  6. Creare il manifest della risorsa personalizzata MigStorage per il repository di replica:

    $ 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
    Specificare il nome del bucket.
    2
    Specificare la risorsa personalizzata Secrets dello storage a oggetti. È necessario assicurarsi che le credenziali memorizzate nella risorsa personalizzata Secrets dello storage a oggetti siano corrette.
    3
    Specificare il provider di storage.
    4
    Facoltativo: se si copiano i dati usando gli snapshot, specificare la risorsa personalizzata Secrets dello storage a oggetti. È necessario assicurarsi che le credenziali memorizzate nella risorsa personalizzata Secrets dello storage a oggetti siano corrette.
    5
    Facoltativo: se si copiano i dati usando gli snapshot, specificare il provider di storage.
  7. Verificare che la risorsa personalizzata MigStorage sia nello stato Ready:

    $ oc describe migstorage <migstorage>
  8. Creare il manifest della risorsa personalizzata 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 migrazione diretta delle immagini è abilitata se false.
    2
    La migrazione diretta dei volumi è abilitata se false.
    3
    Specificare il nome dell'istanza della risorsa personalizzata MigStorage.
    4
    Specificare uno o più spazi dei nomi di origine. Per impostazione predefinita, lo spazio dei nomi di destinazione ha lo stesso nome.
    5
    Specificare uno spazio dei nomi di destinazione se è diverso dallo spazio dei nomi di origine.
    6
    Specificare il nome dell'istanza MigCluster del cluster di origine.
  9. Verificare che l'istanza MigPlan sia nello stato Ready:

    $ oc describe migplan <migplan> -n openshift-migration
  10. Creare il manifest della risorsa personalizzata MigMigration per avviare la migrazione definita nell'istanza 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
    Specificare il nome della risorsa personalizzata MigPlan.
    2
    I pod sul cluster di origine vengono fermati prima della migrazione, se true.
    3
    Una migrazione di fase, che copia la maggior parte dei dati senza fermare l'applicazione, viene eseguita se true.
    4
    Se true, una migrazione completata viene annullata.
  11. Verificare la migrazione guardando il progresso della risorsa personalizzata MigMigration:

    $ oc watch migmigration <migmigration> -n openshift-migration

    L'output assomiglia al seguente:

    Esempio di output

    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

Formazione

Prova, acquista e vendi

Community

Informazioni sulla documentazione di Red Hat

Aiutiamo gli utenti Red Hat a innovarsi e raggiungere i propri obiettivi con i nostri prodotti e servizi grazie a contenuti di cui possono fidarsi.

Rendiamo l’open source più inclusivo

Red Hat si impegna a sostituire il linguaggio problematico nel codice, nella documentazione e nelle proprietà web. Per maggiori dettagli, visita ilBlog di Red Hat.

Informazioni su Red Hat

Forniamo soluzioni consolidate che rendono più semplice per le aziende lavorare su piattaforme e ambienti diversi, dal datacenter centrale all'edge della rete.

© 2024 Red Hat, Inc.