Memigrasikan VM monolit - Migrasi dan deployment

Setelah menyiapkan cluster pemrosesan dan Migrate to Containers yang sudah diinstal, Anda siap untuk melakukan migrasi. Pertama, Anda perlu menambahkan sumber migrasi yang relevan untuk cluster pemrosesan serta membuat rencana migrasi untuk VM. Setelah meninjau dan menyesuaikan rencana dengan kebutuhan, Anda dapat membuat dan men-deploy artefak Kubernetes ke cluster GKE tempat aplikasi Anda lainnya sudah berjalan.

Tujuan

Di akhir tutorial ini, Anda akan mempelajari cara:

  • Tambahkan sumber migrasi.
  • Buat rencana migrasi dari workload VM Anda.
  • Tinjau dan sesuaikan rencana migrasi.
  • Membuat dan men-deploy artefak migrasi ke cluster GKE Anda.

Sebelum memulai

Tutorial ini adalah tindak lanjut dari tutorial Penemuan dan penilaian. Sebelum memulai tutorial ini, ikuti petunjuk di halaman tersebut untuk menjalankan alat penemuan pada VM monolit dan membuat cluster pemrosesan Anda.

Menghentikan VM monolit

Sebelum melakukan migrasi, Anda harus menghentikan VM monolit untuk menghindari gangguan yang tidak disengaja atau kerusakan data yang dapat terjadi jika data bergerak selama proses migrasi.

  1. Di konsol Google Cloud, buka halaman VM instances.

    Buka halaman VM instances

  2. Pilih kotak centang di ujung kiri baris untuk VM ledgermonolith-service.

  3. Di bagian atas halaman, klik tombol Stop untuk menghentikan VM.

  4. Tunggu hingga VM berhenti sepenuhnya. Proses ini mungkin perlu waktu 1-2 menit.

Memigrasikan VM

Sebelum memigrasikan VM, Anda harus membuat sumber migrasi yang mewakili platform sumber (Compute Engine atau VMWare).

Tambahkan sumber

  1. Buka halaman Migrate to Containers di Konsol Google Cloud.

    Buka halaman Migrate to Containers

  2. Di tab Sumber & kandidat, klik Tambahkan sumber.

  3. Di bagian Pilih cluster pemrosesan, pilih cluster pemrosesan migrasi dari daftar dropdown, lalu klik Berikutnya.

  4. Tentukan Name sumber sebagai ledgermonolith-source.

  5. Setel Source type ke Compute Engine, lalu klik Next.

  6. Pastikan project yang tepat dipilih sebagai project sumber.

  7. Buat akun layanan yang memungkinkan Anda menggunakan Compute Engine sebagai sumber migrasi dengan memilih Create a new service account.

  8. Klik Lanjutkan lalu Tambahkan sumber.

Buat migrasi

  1. Buka halaman Migrate to Containers di Konsol Google Cloud.

    Buka halaman Migrate to Containers

  2. Pada tab Migrasi, klik Buat migrasi.

  3. Tetapkan Migration name sebagai ledgermonolith-migration.

  4. Pilih sumber migrasi yang Anda buat di langkah sebelumnya: ledgermonolith-source.

  5. Setel Workload type ke Linux system container.

  6. Setel Nama instance sumber ke ledgermonolith-service.

  7. Klik Buat migrasi. Proses ini mungkin perlu waktu 1-2 menit.

    Setelah migrasi selesai, kolom Status akan menampilkan Paket migrasi yang dibuat.

  8. Di tabel, klik Nama migrasi Anda,ledgermonolith-migration untuk membuka halaman detail.

  9. Di tab Data configuration, buat volume baru untuk memigrasikan database PostgreSQL VM, /var/lib/postgresql. Konfigurasi akan terlihat seperti ini:

    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
    

    Tindakan ini akan memastikan bahwa Anda mempertahankan database selama migrasi. Klik Save.

  10. Di tab Migration plan, di bagian deployment, pastikan layanan Anda memiliki nama ledgermonolith-service, port 8080, dan protokol TCP. Objek akan terlihat seperti ini:

    ...
    endpoints:
      - name: ledgermonolith-service
        port: 8080
        protocol: TCP
    ...
    
  11. Klik Simpan dan buat artefak untuk memulai proses migrasi. Proses ini akan memerlukan waktu sekitar 7-8 menit.

    Artefak yang dibuat oleh Migrate to Containers untuk VM ini adalah:

    • Image Docker proses VM.
    • StatefulSet dan Service untuk menjalankan proses yang baru dimigrasikan.
    • Namespace dan DaemonSet untuk menampung runtime container.
    • PersistentVolumeClaim dan PersistentVolume untuk menyimpan database PostgreSQL.

Men-deploy beban kerja yang dimigrasikan

Di bagian sebelumnya, Anda telah berhasil memigrasikan VM monolit ke sekumpulan resource Kubernetes yang dapat di-deploy dalam sebuah cluster. Anda kini dapat men-deploy resource ini ke cluster Bank of Anthos, mengonfigurasi ulang aplikasi agar dapat berkomunikasi dengan endpoint yang tepat untuk layanan buku besar yang baru dimigrasikan, dan memverifikasi bahwa semuanya berfungsi.

  1. Setelah artefak migrasi dibuat, Anda dapat terhubung ke cluster pemrosesan dan mendownload artefak ke lingkungan Cloud Shell Anda.

    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. Hubungkan ke cluster Bank of Anthos dan deploy resource Kubernetes yang dihasilkan. Selain itu, instal runtime container menggunakan migctl agar cluster Anda dapat menjalankan Pod yang baru dimigrasikan.

    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. Edit ConfigMap yang berisi host buku besar agar mengarah ke Pod Kubernetes baru Anda, bukan VM monolit buku besar yang tidak lagi beroperasi.

    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. Hapus semua Pod untuk membuatnya kembali dengan konfigurasi baru Anda.

    kubectl delete pods --all
    

    Anda dapat melihat status Pod menggunakan perintah berikut:

    kubectl get pods
    

    Mungkin perlu waktu beberapa menit hingga semua Pod aktif dan berjalan.

    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. Setelah semua Pod ditetapkan ke Running, Anda dapat menemukan alamat IP eksternal LoadBalancer 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. Buka browser dan kunjungi halaman web di alamat IP eksternal yang ada di atas (pastikan untuk menggunakan HTTP, bukan HTTPS).

    http://EXTERNAL_IP
    

    Anda seharusnya dapat login dengan kredensial default dan melihat transaksi. Transaksi yang Anda lihat berasal dari monolit buku besar yang kini telah dimigrasikan ke container Kubernetes.

    Screenshot Bank of Anthos

Langkah selanjutnya

Setelah mempelajari cara membuat dan menyesuaikan rencana migrasi dari workload VM Anda, serta melakukan migrasi VM ke artefak dalam container, Anda dapat melanjutkan ke bagian tutorial berikutnya, Pengoptimalan.

Jika mengakhiri tutorial di sini, jangan lupa untuk membersihkan project dan resource Google Cloud.

Pembersihan

Untuk menghindari tagihan Google Cloud yang tidak perlu, Anda harus menghapus resource yang digunakan untuk tutorial ini segera setelah Anda selesai menggunakannya. Referensi tersebut adalah:

  • Cluster GKE boa-cluster
  • Cluster GKE migration-processing
  • VM Compute Engine ledgermonolith-service

Anda dapat menghapus resource ini secara manual, atau ikuti langkah-langkah di bawah ini untuk menghapus project, yang juga akan menghapus semua resource.

  • Di konsol Google Cloud, buka halaman Manage resource.

    Buka Manage resource

  • Pada daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
  • Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.
  • Langkah selanjutnya