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.