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.
Nella console Google Cloud, vai alla pagina Istanze VM.
Seleziona la casella di controllo all'estremità sinistra della riga per la VM
ledgermonolith-service
.Nella parte superiore della pagina, fai clic sul pulsante Arresta per arrestare la VM.
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
Apri la pagina Migrate to Containers nella console Google Cloud.
Nella scheda Origini e candidati, fai clic su Aggiungi origine.
In Seleziona cluster di elaborazione, scegli il cluster di elaborazione della migrazione dall'elenco a discesa e fai clic su Avanti.
Specifica il Nome dell'origine come
ledgermonolith-source
.Imposta Tipo di origine su Compute Engine e fai clic su Avanti.
Assicurati che sia selezionato il progetto corretto come progetto di origine.
Per creare un account di servizio che ti consenta di utilizzare Compute Engine come origine di migrazione, seleziona Crea un nuovo account di servizio.
Fai clic su Continua e poi su Aggiungi origine.
Crea una migrazione
Apri la pagina Migrate to Containers nella console Google Cloud.
Nella scheda Migrazioni, fai clic su Crea migrazione.
Imposta il Nome migrazione su
ledgermonolith-migration
.Seleziona l'origine della migrazione creata nel passaggio precedente:
ledgermonolith-source
.Imposta il Tipo di carico di lavoro su
Linux system container
.Imposta il Nome istanza di origine su
ledgermonolith-service
.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.
Nella tabella, fai clic sul Nome della migrazione
ledgermonolith-migration
per aprire la pagina dei dettagli.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.
Nella scheda Piano di migrazione, in
deployment
, assicurati che il servizio abbia il nomeledgermonolith-service
, la porta8080
e il protocolloTCP
. L'oggetto dovrebbe essere simile al seguente:... endpoints: - name: ledgermonolith-service port: 8080 protocol: TCP ...
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.
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
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
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
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
Una volta che tutti i pod sono impostati su
Running
, puoi trovare l'indirizzo IP esterno del LoadBalancer difrontend
.kubectl get service frontend
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE frontend LoadBalancer 10.79.248.161 ##.##.##.##. 80:31304/TCP 46m
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.
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.
Passaggi successivi
- Scopri di più sull'ottimizzazione (giorno 2).