Migrazione di una VM monolitica - Migrazione e deployment

Una volta configurato un cluster di elaborazione e installato Migrate to Containers, puoi eseguire la migrazione. Per prima cosa, devi aggiungere un'origine di migrazione pertinente per il cluster di elaborazione e generare un piano di migrazione per la VM. Dopo aver esaminato e personalizzato il piano in base alle tue esigenze, potrai generare ed eseguire il deployment degli artefatti Kubernetes nel cluster GKE dove è già in esecuzione il resto della tua applicazione.

Obiettivi

Al termine di questo tutorial, avrai imparato a:

  • Aggiungi un'origine di migrazione.
  • Crea un piano di migrazione dal carico di lavoro della VM.
  • Rivedi e personalizza il piano di migrazione.
  • Genera ed esegui il deployment degli artefatti di migrazione nel tuo cluster GKE.

Prima di iniziare

Questo tutorial è un completamento del tutorial di scoperta e valutazione. Prima di iniziare questo tutorial, segui le istruzioni nella pagina per eseguire gli strumenti di rilevamento sulla VM monolitica e creare il cluster di elaborazione.

Arresta la VM monolith

Prima di eseguire la migrazione, devi arrestare la VM monolitica per evitare interruzioni intenzionali o danni ai dati, che potrebbero verificarsi se i dati sono in movimento durante i processi di migrazione.

  1. Nella console Google Cloud, vai alla pagina Istanze VM.

    Vai alla pagina Istanze VM

  2. Seleziona la casella di controllo all'estremità sinistra della riga per la VM ledgermonolith-service.

  3. Nella parte superiore della pagina, fai clic sul pulsante Arresta per arrestare la VM.

  4. Attendi che la VM sia stata arrestata completamente. L'operazione potrebbe richiedere 1-2 minuti.

Esegui la migrazione della VM

Prima di poter eseguire la migrazione della VM, devi creare un'origine della migrazione che rappresenti la piattaforma di origine (Compute Engine o VMWare).

Aggiungi un'origine

  1. Apri la pagina Migrate to Containers nella console Google Cloud.

    Vai alla pagina Migrate to Containers

  2. Nella scheda Origini e candidati, fai clic su Aggiungi origine.

  3. In Seleziona cluster di elaborazione, scegli il cluster di elaborazione della migrazione dall'elenco a discesa e fai clic su Avanti.

  4. Specifica il Nome dell'origine come ledgermonolith-source.

  5. Imposta Tipo di origine su Compute Engine e fai clic su Avanti.

  6. Assicurati che sia selezionato il progetto corretto come progetto di origine.

  7. Per creare un account di servizio che ti consenta di utilizzare Compute Engine come origine di migrazione, seleziona Crea un nuovo account di servizio.

  8. Fai clic su Continua e poi su Aggiungi origine.

Crea una migrazione

  1. Apri la pagina Migrate to Containers nella console Google Cloud.

    Vai alla pagina Migrate to Containers

  2. Nella scheda Migrazioni, fai clic su Crea migrazione.

  3. Imposta il Nome migrazione su ledgermonolith-migration.

  4. Seleziona l'origine della migrazione creata nel passaggio precedente: ledgermonolith-source.

  5. Imposta il Tipo di carico di lavoro su Linux system container.

  6. Imposta il Nome istanza di origine su ledgermonolith-service.

  7. Fai clic su Crea migrazione. L'operazione potrebbe richiedere 1-2 minuti.

    Al termine della migrazione, nella colonna Stato viene visualizzato Piano di migrazione generato.

  8. Nella tabella, fai clic sul Nome della migrazioneledgermonolith-migration per aprire la pagina dei dettagli.

  9. Nella scheda Configurazione dei dati, crea un nuovo volume per eseguire la migrazione del database PostgreSQL della VM, /var/lib/postgresql. La configurazione dovrebbe avere il seguente aspetto:

    volumes:
     - deploymentPvcName: ledgermonolith-db
       folders:
      # Folders to include in the data volume, e.g. "/var/lib/postgresql"
      # Included folders contain data and state, and therefore are automatically excluded from a generated container image
       - /var/lib/postgresql
       newPvc:
         spec:
           accessModes:
           - ReadWriteOnce
           resources:
             requests:
               storage: 10G
    

    In questo modo potrai mantenere il database durante la migrazione. Fai clic su Salva.

  10. Nella scheda Piano di migrazione, in deployment, assicurati che il servizio abbia il nome ledgermonolith-service, la porta 8080 e il protocollo TCP. L'oggetto dovrebbe essere simile al seguente:

    ...
    endpoints:
      - name: ledgermonolith-service
        port: 8080
        protocol: TCP
    ...
    
  11. Fai clic su Salva e genera artefatti per avviare il processo di migrazione. Il processo richiederà circa 7-8 minuti.

    Gli artefatti generati da Migrate to Containers per questa VM sono:

    • Un'immagine Docker del processo VM.
    • Uno StatefulSet e un Service per eseguire il processo appena migrato.
    • Uno spazio dei nomi e un DaemonSet per contenere il runtime del container.
    • Un PersistentVolumeClaim e un PersistentVolume per contenere il database PostgreSQL.

Esegui il deployment del carico di lavoro di cui è stata eseguita la migrazione

Nella sezione precedente hai eseguito correttamente la migrazione della VM monolitica a un set di risorse Kubernetes di cui è possibile eseguire il deployment in un cluster. Ora puoi eseguire il deployment di queste risorse nel tuo cluster Bank of Anthos, riconfigurare l'applicazione in modo che parli con l'endpoint giusto per il servizio di registro appena migrato e verificare che tutto funzioni.

  1. Ora che gli artefatti di migrazione sono stati generati, puoi connetterti al cluster di elaborazione e scaricare gli artefatti nel tuo ambiente Cloud Shell.

    gcloud container clusters get-credentials migration-processing --zone COMPUTE_ZONE --project PROJECT_ID
    cd ${HOME}/bank-of-anthos/src/ledgermonolith/
    migctl migration get-artifacts ledgermonolith-migration
    
  2. Connettiti al cluster Bank of Anthos ed esegui il deployment delle risorse Kubernetes generate. Inoltre, installa un runtime del container utilizzando migctl per consentire al tuo cluster di eseguire il pod di cui è stata appena eseguita la migrazione.

    gcloud container clusters get-credentials boa-cluster --zone COMPUTE_ZONE --project=PROJECT_ID
    migctl setup install --runtime
    kubectl apply -f ${HOME}/bank-of-anthos/src/ledgermonolith/deployment_spec.yaml
    
    Fetching cluster endpoint and auth data.
    kubeconfig entry generated for boa-cluster.
    
    applying resources to the cluster
    namespace/v2k-system created
    daemonset.apps/runtime-deploy-node created
    
    statefulset.apps/ledgermonolith-service created
    service/ledgermonolith-service-java created
    persistentvolumeclaim/data-pvc-0-4e1b2e0e-021f-422a-8319-6da201a960e5 created
    persistentvolume/pvc-4d41e0f2-569e-415d-87d9-019490f18b1c created
    
  3. Modifica il ConfigMap contenente gli host del registro in modo che punti al nuovo pod Kubernetes, anziché alla VM del monolite del registro non più in servizio.

    sed -i 's/'.c.PROJECT_ID.internal'//g' ${HOME}/bank-of-anthos/src/ledgermonolith/config.yaml
    kubectl apply -f ${HOME}/bank-of-anthos/src/ledgermonolith/config.yaml
    
  4. Elimina tutti i pod per ricrearli con la nuova configurazione.

    kubectl delete pods --all
    

    Puoi visualizzare lo stato dei pod utilizzando il seguente comando:

    kubectl get pods
    

    Potrebbero essere necessari alcuni minuti prima che tutti i pod siano operativi.

    NAME                           READY   STATUS    RESTARTS   AGE
    accounts-db-0                  1/1     Running   0          5m43s
    contacts-d5dcdc87c-jbrhf       1/1     Running   0          5m44s
    frontend-5768bd978-xdvpl       1/1     Running   0          5m44s
    ledgermonolith-service-0       1/1     Running   0          5m44s
    loadgenerator-8485dfd-582xv    1/1     Running   0          5m44s
    userservice-8477dfcb46-rzw7z   1/1     Running   0          5m43s
    
  5. Una volta che tutti i pod sono impostati su Running, puoi trovare l'indirizzo IP esterno del LoadBalancer di frontend.

    kubectl get service frontend
    
    NAME       TYPE           CLUSTER-IP      EXTERNAL-IP     PORT(S)        AGE
    frontend   LoadBalancer   10.79.248.161   ##.##.##.##.    80:31304/TCP   46m
    
  6. Apri un browser e visita la pagina web all'indirizzo IP esterno indicato in precedenza (assicurati di utilizzare HTTP, anziché HTTPS).

    http://EXTERNAL_IP
    

    Dovresti essere in grado di accedere con le credenziali predefinite e visualizzare le transazioni. Le transazioni che vedi provengono dal monolite del registro, di cui è stata eseguita la migrazione a un container Kubernetes.

    Screenshot di Bank of Anthos

Passaggi successivi

Ora che hai imparato a creare e personalizzare un piano di migrazione dal carico di lavoro delle VM e che hai eseguito la migrazione della VM ad artefatti containerizzati, puoi passare alla sezione successiva del tutorial, Ottimizzazione.

Se termini il tutorial qui, non dimenticare di ripulire le risorse e il progetto Google Cloud.

Esegui la pulizia

Per evitare addebiti inutili di Google Cloud, elimina le risorse utilizzate per questo tutorial non appena hai finito. Queste risorse sono:

  • Il cluster GKE boa-cluster
  • Il cluster GKE migration-processing
  • La VM di Compute Engine ledgermonolith-service

Puoi eliminare queste risorse manualmente o seguire i passaggi riportati di seguito per eliminare il progetto. In questo modo verranno eliminate anche tutte le risorse.

  • Nella console Google Cloud, vai alla pagina Gestisci risorse.

    Vai a Gestisci risorse

  • Nell'elenco dei progetti, seleziona il progetto che vuoi eliminare, quindi fai clic su Elimina.
  • Nella finestra di dialogo, digita l'ID del progetto e fai clic su Chiudi per eliminare il progetto.
  • Passaggi successivi