1. Ringkasan
Menulis ulang atau merekayasa ulang aplikasi yang sudah ada agar berfungsi di Kubernetes tidak selalu dapat dilakukan atau tidak mungkin dilakukan secara manual. Migrate for Anthos dapat membantu memodernisasi aplikasi Anda yang sudah ada dan menjalankannya di Kubernetes. Dalam codelab ini, Anda akan memigrasikan aplikasi web yang ada dan dihosting di Compute Engine ke Kubernetes Engine menggunakan Migrate for Anthos.
Yang akan Anda pelajari
- Cara men-deploy Migrate for Anthos di cluster Kubernetes
- Cara membuat container dalam set stateful dari instance Compute Engine yang ada
- Cara men-deploy container ke Kubernetes dan mengonfigurasinya dengan load balancer
Yang Anda butuhkan
- Project Google Cloud dengan penyiapan penagihan. Jika belum memilikinya, Anda harus membuatnya.
2. Mempersiapkan
Codelab ini dapat berjalan sepenuhnya di Google Cloud Platform tanpa penginstalan atau konfigurasi lokal apa pun.
Aktifkan API
Sebelum memulai, pastikan untuk mengaktifkan API yang diperlukan di project Google Cloud Anda:
Membuat Server Web Instance Compute
Mari kita buat instance compute yang akan digunakan untuk menghosting server web nginx awal, bersama dengan aturan firewall yang memungkinkan kita melihat halaman landing default server web. Ada beberapa cara yang dapat kita lakukan, tetapi untuk kemudahan penggunaan, kita akan menggunakan Cloud Shell.
Di Cloud Shell jalankan perintah berikut:
gcloud compute instances create webserver --zone=us-central1-a && \ gcloud compute firewall-rules create default-allow-http --allow=tcp:80
Paruh pertama perintah ini akan membuat instance Google Cloud di zona us-central1-a, sedangkan bagian kedua akan membuat aturan firewall bernama 'default-allow-http' yang akan mengizinkan lalu lintas http ke dalam jaringan kita.
Setelah berhasil dibuat, instance akan menampilkan tabel yang berisi detail instance. Catat IP Eksternal - kami akan membutuhkannya untuk memverifikasi bahwa server web kami berjalan nanti.
Setelah instance aktif dan berjalan, kita dapat menjalankan SSH ke instance dari Cloud Shell untuk menginstal nginx dan memulai server web:
gcloud compute ssh --zone us-central1-a webserver
Setelah login ke instance komputasi, instal nginx:
sudo apt install nginx
Logout dari sesi ssh dengan perintah logout
Mari pastikan bahwa server web sudah berjalan dengan memasukkan IP eksternal instance dari halaman sebelumnya ke browser. Anda akan melihat layar sambutan nginx default:
Server web ini akan berfungsi sebagai aplikasi web lama yang akan kami migrasikan ke Kubernetes menggunakan Migrate for Anthos.
3. Cluster Kubernetes dengan Migrate for Anthos
Selanjutnya, kita akan membuat cluster GKE tempat kita pada akhirnya akan memigrasikan server web Compute Engine. Di Konsol Cloud, jalankan perintah berikut:
gcloud container clusters create my-gke-cluster \ --zone us-central1-a \ --cluster-version 1.13 \ --machine-type n1-standard-4 \ --image-type "UBUNTU" \ --num-nodes 1 \ --enable-stackdriver-kubernetes
Tunggu beberapa menit hingga perintah ini selesai. Setelah cluster dibuat, Anda akan menerima beberapa output yang berisi detailnya:
Selanjutnya, buka GCP Marketplace untuk Men-deploy Migrate for Anthos:
Di halaman marketplace untuk Migrate for Anthos, klik konfigurasikan dan jika diminta, pilih project Anda dari daftar. Halaman proses akan menampilkan formulir dengan beberapa nilai default yang dimasukkan. Pastikan bahwa cluster yang dipilih adalah cluster yang baru saja dibuat, lalu klik Deploy:
Migrate for Anthos sekarang sudah di-deploy di cluster kubernetes kita. Setelah selesai di-deploy, Anda akan melihat status 'OK' di halaman Aplikasi Kubernetes Engine:
4. Dari instance komputasi ke kumpulan stateful
Ada cluster Kubernetes yang menjalankan Migrate for Anthos, jadi sekarang kita dapat memulai proses migrasi. Untuk men-deploy instance komputasi ke cluster Kubenetes, kita akan mematikan instance Compute Engine sehingga kita dapat mengambil snapshot disk. Sebelum melanjutkan, catat ID instance, yang akan kita perlukan nanti:
gcloud compute instances describe webserver --zone us-central1-a | grep ^id
Mari kita matikan instance komputasi:
gcloud compute instances stop webserver --zone us-central1-a
Setelah instance dihentikan, kita dapat mengambil snapshot disk secara aman dengan menjalankan skrip berikut. Pastikan untuk memasukkan project ID dan ID instance Anda:
python3 /google/migrate/anthos/gce-to-gke/clone_vm_disks.py \ -p <project-id> -i <instance-id> \ -z us-central1-a \ -T us-central1-a \ -A webserver-statefulset \ -o containerized-webserver.yaml
Dengan tanda tersebut, clone_vm_disks.py
akan:
- Pastikan instance GCE Anda nonaktif
- Membuat snapshot dari setiap disk instance
- Buat disk baru dari setiap snapshot
- Menghapus snapshot yang dibuatnya
- Buat file YAML di direktori kerja Anda saat ini untuk men-deploy set stateful yang akan menghosting server web Anda
File yaml yang dibuat akan menyediakan stateful set di cluster kubernetes, beserta klaim volume persisten yang diperlukan untuk memasang disk yang disalin ke container server web. Kita dapat menerapkan perubahan ini dengan kubectl
:
kubectl apply -f containerized-webserver.yaml
Periksa status webserver-statefulset di halaman Workloads:
Status 'Pods are pending' adalah hal yang normal selama beberapa menit setelah menjalankan kubectl apply
. Lanjutkan setelah statusnya terbaca 'Oke'.
5. Mengekspos cluster ke load balancer
Pada tahap ini, cluster Kubenetes harus menjalankan server web sebagai set stateful, tetapi kita juga harus mengekspos container-nya ke load balancer untuk mengakses server web kita melalui alamat IP eksternal. Di Cloud Shell, buat file baru bernama loadbalancer.yaml
dengan konten berikut:
loadbalancer.yaml
apiVersion: v1
kind: Service
metadata:
name: webserver-loadbalancer
spec:
type: LoadBalancer
selector:
app: webserver-statefulset
ports:
- protocol: TCP
port: 80
targetPort: 80
Dan sekarang terapkan dengan kubectl
:
kubectl apply -f loadbalancer.yaml
Kita dapat menggunakan kubectl untuk mengambil alamat IP eksternal dari layanan webserver-container:
kubectl get services
Jika memasukkan alamat IP eksternal di browser, kita akan mendapatkan layar sambutan nginx default yang sama seperti sebelumnya:
Kita sudah berhasil! Server web GCE kita sekarang dihosting di Kubernetes. Bagus!
6. Stackdriver Monitoring
Metrik
Sebagai layanan Kubernetes terkelola, Kubernetes Engine otomatis diinstrumentasikan untuk logging dan pemantauan dengan Stackdriver. Mari kita lihat beberapa metrik yang ditangkap Stackdriver secara otomatis.
Klik link Monitoring pada menu produk - mengakses ini untuk pertama kalinya dari project Anda mungkin memerlukan waktu beberapa menit saat menyiapkan ruang kerja Anda.
Setelah dimuat, arahkan kursor ke Resources di panel kiri, lalu pilih "Kubernetes Engine NEW" dari menu.
Setiap baris di dasbor yang ditampilkan di sini merepresentasikan resource Kubernetes. Anda dapat beralih antara tampilan infrastruktur, beban kerja, atau layanan dengan link di atas dasbor.
Di tampilan Workloads, luaskan 'my-gke-cluster' dan lihat perincian ke default > webserver-statefulset > webserver-statefulset-0 > dengan menggunakan webserver-statefulset. Klik penampung set webserver-stateful. Di sini Anda akan menemukan beberapa metrik siap pakai yang ditangkap oleh Stackdriver, termasuk penggunaan memori dan penggunaan CPU.
Diagram yang ditampilkan di dasbor ini adalah diagram yang dapat kita gunakan untuk membuat dasbor kustom.
Dasbor Kustom
Stackdriver memungkinkan kita membuat dasbor kustom yang dapat digunakan untuk mengatur diagram dan grafik untuk data metrik yang tersedia bagi kita. Mari kita buat dasbor kustom untuk memberikan tampilan sekilas dari beberapa metrik server web kita.
Di panel sebelah kiri, arahkan kursor ke Dashboards, lalu klik Create Dashboard.
Sekarang setelah memiliki dasbor kosong, kita dapat menambahkan metrik yang ingin kita perhatikan. Mari beri nama yang berguna untuk Dasbor Tanpa Judul seperti 'Penampung Server Web Saya' dan klik 'Add Chart' di kanan atas:
Ingat metrik siap pakai? Mari tambahkan diagram untuk pemakaian CPU container. Di kolom Chart Title, masukkan 'CPU Utilization'. Pada kotak 'Find resource type and metric', ketik request_utilization lalu pilih CPU request utilization dari daftar yang difilter. Pilihan ini akan mengisi kolom Jenis resource dan Metrik untuk kita.
Selanjutnya, kita ingin memfilter berdasarkan project_id (jika kita memiliki beberapa project) dan container_name. Di kotak Filter, ketik project_id, pilih dari daftar yang difilter, lalu pilih project Anda pada kolom Nilai. Kita juga perlu memfilter menurut container_name. Di kotak Filter, ketik container_name, pilih dari daftar yang difilter dan pilih webserver-statefulset di kolom Nilai. Klik Simpan.
Kita sekarang memiliki dasbor dengan bagan pertama kita.
7. Kebijakan pemberitahuan dan cek uptime
Dengan Stackdriver, pemberitahuan dapat disiapkan untuk memberi tahu saat metrik mencapai nilai minimum yang telah ditentukan. Misalnya, kita dapat meminta Stackdriver mengirimkan email kepada kita ketika pemakaian CPU dari langkah terakhir berada di atas batas tertentu selama jangka waktu yang berkelanjutan, yang mungkin menunjukkan adanya masalah pada aplikasi. Untuk mendemonstrasikan tampilan pemberitahuan ini, mari kita siapkan cek uptime, lalu simulasikan pemadaman.
Dari panel kiri, pilih Uptime Checks dan Uptime Checks Overview:
Seperti yang disarankan oleh halaman Cek Uptime, mari kita siapkan cek uptime pertama kita. Klik tombol Add Uptime Check di kanan atas halaman.
Dalam formulir proses, masukkan 'Endpoint Uptime' sebagai judul, dan alamat IP eksternal load balancer sebagai nama host.
Klik Simpan dan Anda akan diminta untuk membuat Kebijakan Notifikasi yang menyertainya:
Klik Buat Kebijakan Pemberitahuan.
Mari kita beri nama 'Endpoint Uptime Policy'. Di bagian Konfigurasi, tetapkan 'Kondisi dipicu jika' ke 'Deret waktu mana saja melanggar' lalu klik simpan.
Kita belum selesai. Selanjutnya, kita akan menentukan Saluran Notifikasi sehingga kita diberi tahu saat kebijakan pemberitahuan telah dilanggar. Di menu drop-down Jenis Saluran Notifikasi, pilih Email diikuti dengan alamat email yang valid.
Klik Tambahkan Saluran Notifikasi. Terakhir, di bagian bawah formulir, beri nama kebijakan 'Waktu Beroperasi Aplikasi Web' lalu klik Simpan.
Untuk melihat tampilan pemberitahuan, buka Cloud Shell sekali lagi di Konsol Cloud Anda. Perintah berikut akan menghentikan layanan nginx yang berjalan di pod server web:
kubectl exec -t webserver-statefulset-0 -- /bin/bash -c "nginx -s stop"
Setelah beberapa menit, Anda akan menerima email yang memberi tahu tentang pemadaman layanan:
Mari kita urungkan. Kembali ke Cloud Shell, mari mulai ulang nginx:
kubectl exec -t webserver-statefulset-0 -- /bin/bash -c "nginx"
Setelah beberapa menit , Anda akan mendapatkan email Stackdriver lagi, kali ini dengan berita yang lebih baik dari sebelumnya:
8. Pembersihan
Setelah bermigrasi dari GCE ke GKE dengan Migrate for Anthos, mari bersihkan project dari semua resource yang telah dibuat.
Menghapus Project
Jika mau, Anda dapat menghapus seluruh project. Di GCP Console, buka halaman Cloud Resource Manager:
Dalam daftar project, pilih project yang sedang kita kerjakan lalu klik Delete. Anda akan diminta untuk mengetikkan ID project. Masukkan dan klik Shut Down.
Jika Anda memilih untuk menghapus komponen yang berbeda satu per satu, lanjutkan ke bagian berikutnya.
Stackdriver
Dasbor
Dari halaman dasbor, klik ikon setelan di bagian atas halaman, lalu pilih Hapus Dasbor.
Kebijakan Pemberitahuan
Dari halaman Kebijakan, pilih Hapus dari menu Tindakan di sebelah kanan untuk setiap kebijakan yang Anda buat.
Cek Uptime
Dari halaman Cek Uptime, pilih Delete dari menu Tindakan di sebelah kanan setiap cek yang Anda buat.
GCE dan Kubernetes
Instance Google Compute Engine
gcloud compute instances delete webserver --zone=us-central1-a
Cluster Kubernetes (mencakup Migrate for Anthos, set stateful, dan layanan load balancer)
gcloud container clusters delete my-gke-cluster --zone=us-central1-a
Disk
Set stateful kita menggunakan {i>disk<i} yang kita buat. Gunakan kode berikut untuk mengambil nama:
gcloud compute disks list --filter=webserver
Menggunakan nama {i>disk <i}Anda sebagai pengganti nama {i>disk<i} saya, hapus dengan:
gcloud compute disks delete vls-690d-webserver --zone=us-central1-a
Semuanya dihapus.
9. Selamat!
Selamat! Anda telah memigrasikan server web dari instance GCE ke cluster Kubernetes menggunakan Migrate for Anthos.
Yang telah kita bahas
- Kami memigrasikan server web dari GCE ke cluster Kubernetes menggunakan Migrate for Anthos
- Kita membuka server web kumpulan stateful kepada dunia dengan mengeksposnya melalui layanan load balancer Kubernetes.
- Kita mengaktifkan Stackdriver dan membuat dasbor kustom
- Kami mengonfigurasi cek uptime beserta kebijakan pemberitahuan untuk memberi tahu kami saat server web nonaktif