Deploy, Scale, dan Update Website menggunakan Google Kubernetes Engine
Pada kesempatan kali ini Anda akan berperan sebagai pengembang/developer di perusahaan fiksi, Fancy Store, yang menjalankan situs web e-niaga. Karena masalah scalling dan outages, Anda ditugaskan untuk men-deploy aplikasi Anda ke Google Kubernetes Engine (GKE).
STEP PERTAMA - Buat Cluster GKE
Setup default zone ke asia-southeast2-a(jakarta):
gcloud config set compute/zone asia-southeast2-a
Jalankan perintah berikut ini untuk mengaktifkan Container Registry API:
gcloud services enable container.googleapis.com
Jalankan perintah berikut untuk membuat cluster GKE bernama fancy-cluster dengan 3 node:
gcloud container clusters create fancy-cluster --num-nodes 3
jalankan perintah berikut untuk melihat list instance :
gcloud compute instances list
Output:
Lihat cluster Kubernetes yang sudah Anda buat dan informasi untuk Google Cloud Console. Klik menu Navigasi, lalu scroll ke bawah ke Kubernetes Engine dan klik Cluster Anda akan melihat cluster Anda bernama fancy-cluster.
STEP KEDUA - Clone Source Repository
Jalankan perintah berikut untuk mendownload microservices monolith di github di Cloud Shell Anda:
cd ~
git clone https://github.com/googlecodelabs/monolith-to-microservices.git
Ganti ke direktori monolith-to-microservices. lalu jalankan perintah berikut:
cd ~/monolith-to-microservices
./setup.sh
Tunggu sampai running
Ubah ke direktori yang sesuai dan uji aplikasi dengan menjalankan perintah berikut untuk memulai server web:
cd ~/monolith-to-microservices/monolith
npm start
Output :
Ketika anda tekan Preview on port 8080 otomatis akan membuka tab baru:
STEP KETIGA - Buat Docker di Cloud Build
Pertama, untuk memastikan Anda mengaktifkan Cloud Build API, jalankan perintah berikut:
gcloud services enable cloudbuild.googleapis.com
Jalankan yang berikut ini untuk memulai proses pembuatan:
cd ~/monolith-to-microservices/monolith
gcloud builds submit --tag gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:1.0.0 .
Tunggu beberapa saat
Output:
Untuk melihat riwayat build Anda atau melihat prosesnya secara real time dengan mengeklik menu Navigasi dan menggulir ke bawah ke bagian Alat, lalu klik Cloud Build > History. Di sini Anda dapat melihat daftar semua Cloud Build yang Anda sudah buat sebelumnya.
Opsional: Dari halaman Detail build, klik Build Summary > Executaion Details > Image:
STEP KEEMPAT - Deploy Kontainer ke GKE
Untuk men-deploy dan mengelola aplikasi di cluster GKE, Anda harus menggunakan perintah berikut "kubectl"
Jalankan perintah berikut untuk mengapply aplikasi Anda:
kubectl create deployment monolith --image=gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:1.0.0
Catatan: disarankan untuk menggunakan file YAML dan sistem kontrol sumber seperti GitHub atau Cloud Source Repositories untuk menyimpan perubahan tersebut.
Jalankan perintah berikut untuk cek apakah berhasil di deploy atau tidak:
kubectl get all
output:
Untuk melihat mencoba sistem dari Kubernetes, coba Anda simulasikan server crash dengan menghapus pod dan lihat apa yang terjadi!
Salin nama pod dari perintah sebelumnya, lalu gunakan saat Anda menjalankan perintah berikut untuk menghapusnya(ganti <POD_NAME> dengan nama pod sebelumnya):
kubectl delete pod/<POD_NAME>
Anda dapat menjalankan kubectl get all lagi, dan Anda akan melihat dua pod: satu berhenti dan yang lainnya membuat atau menjalankan:
kubectl get all
Output:
STEP KELIMA - Expose GKE Deployment
Jalankan perintah berikut untuk mengexpose situs web Anda ke Internet:
kubectl expose deployment monolith --type=LoadBalancer --port 80 --target-port 8080
GKE menetapkan alamat IP eksternal ke resource Layanan, bukan Deployment. Jika Anda ingin mengetahui IP eksternal yang disediakan GKE untuk aplikasi Anda, Anda dapat menjalankan perintah berikut:
kubectl get service
Output:
STEP KEENAM -Scale GKE Deployment
Di Cloud Shell, jalankan perintah berikut untuk meng scale GKE Anda:
kubectl scale deployment monolith --replicas=3
Pastikan Deployment berhasil di scale:
kubectl get all
Output:
STEP KETUJUH - Changes website Anda
Jalankan perintah berikut salin file yang diperbarui ke nama file yang benar:
cd ~/monolith-to-microservices/react-app/src/pages/Home
mv index.js.new index.js
Cetak isinya untuk memverifikasi perubahan:
cat ~/monolith-to-microservices/react-app/src/pages/Home/index.js
Kode yang dihasilkan akan terlihat seperti ini:
Jalankan perintah berikut dan masuk ke direktori monolith-to-microservices/react-app terlebih dahulu:
cd ~/monolith-to-microservices/react-app
npm run build:monolith
Jalankan perintah berikut untuk memicu pembangunan cloud baru dengan versi gambar yang diperbarui 2.0.0:
cd ~/monolith-to-microservices/monolith
gcloud builds submit --tag gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:2.0.0 .
STEP KEDELAPAN - Update Website Tanpa Downtime
Mekanisme pembaruan berkelanjutan GKE memastikan bahwa aplikasi Anda tetap aktif dan tersedia bahkan saat sistem mengganti instance image container lama Anda dengan yang baru di semua replika yang berjalan.
Beri tahu Kubernetes bahwa Anda ingin memperbarui image untuk penerapan Anda ke versi baru dengan perintah berikut:
kubectl set image deployment/monolith monolith=gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:2.0.0
Anda dapat memvalidasi pembaruan penerapan dengan menjalankan perintah berikut:
kubectl get pods
Output:
Untuk memverifikasi perubahan kami, kembali ke tab halaman web aplikasi dan segarkan halaman. Perhatikan bahwa aplikasi Anda telah diperbarui.
Situs web Anda sekarang seharusnya menampilkan teks yang baru saja Anda tambahkan ke komponen beranda!
Sekian infromasi mengenai "Deploy, Scale, dan Update Website menggunakan Google Kubernetes Engine" semoga bermanfaat.
Terimakasih.