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.
Di konsol Google Cloud, buka halaman VM instances.
Pilih kotak centang di ujung kiri baris untuk VM
ledgermonolith-service
.Di bagian atas halaman, klik tombol Stop untuk menghentikan VM.
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
Buka halaman Migrate to Containers di Konsol Google Cloud.
Di tab Sumber & kandidat, klik Tambahkan sumber.
Di bagian Pilih cluster pemrosesan, pilih cluster pemrosesan migrasi dari daftar dropdown, lalu klik Berikutnya.
Tentukan Name sumber sebagai
ledgermonolith-source
.Setel Source type ke Compute Engine, lalu klik Next.
Pastikan project yang tepat dipilih sebagai project sumber.
Buat akun layanan yang memungkinkan Anda menggunakan Compute Engine sebagai sumber migrasi dengan memilih Create a new service account.
Klik Lanjutkan lalu Tambahkan sumber.
Buat migrasi
Buka halaman Migrate to Containers di Konsol Google Cloud.
Pada tab Migrasi, klik Buat migrasi.
Tetapkan Migration name sebagai
ledgermonolith-migration
.Pilih sumber migrasi yang Anda buat di langkah sebelumnya:
ledgermonolith-source
.Setel Workload type ke
Linux system container
.Setel Nama instance sumber ke
ledgermonolith-service
.Klik Buat migrasi. Proses ini mungkin perlu waktu 1-2 menit.
Setelah migrasi selesai, kolom Status akan menampilkan Paket migrasi yang dibuat.
Di tabel, klik Nama migrasi Anda,
ledgermonolith-migration
untuk membuka halaman detail.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.
Di tab Migration plan, di bagian
deployment
, pastikan layanan Anda memiliki namaledgermonolith-service
, port8080
, dan protokolTCP
. Objek akan terlihat seperti ini:... endpoints: - name: ledgermonolith-service port: 8080 protocol: TCP ...
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.
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
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
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
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
Setelah semua Pod ditetapkan ke
Running
, Anda dapat menemukan alamat IP eksternal LoadBalancerfrontend
.kubectl get service frontend
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE frontend LoadBalancer 10.79.248.161 ##.##.##.##. 80:31304/TCP 46m
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.
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.
Langkah selanjutnya
- Pelajari pengoptimalan (Hari ke-2).