Dalam tutorial ini, Anda akan men-deploy aplikasi buku catatan contoh yang menggunakan Node.js untuk frontend dan MySQL untuk backend-nya. Di akhir tutorial, deployment Anda akan memiliki resource berikut:
Jika Anda baru menggunakan Deployment Manager, lihat tutorial Panduan Memulai Cepat atau Panduan Langkah demi Langkah.
Sebelum memulai
- Jika Anda ingin menggunakan contoh command line dalam panduan ini, instal alat command line`gcloud`.
- Jika Anda ingin menggunakan contoh API dalam panduan ini, siapkan akses API.
- Baca ringkasan load balancing jaringan Compute Engine.
- Baca ringkasan container Docker.
Membuat template resource
Contoh ini meluncurkan deployment yang berisi berbagai resource Google Cloud. Untuk memulai, Anda membuat template yang menentukan resource ini secara terpisah. Selanjutnya, Anda akan memanggil template ini dalam konfigurasi akhir. Deployment Anda berisi resource berikut:
- Instance Compute Engine yang menghosting database MySQL untuk aplikasi.
- Template instance untuk instance frontend, yang menggunakan image Docker untuk aplikasi Node.js.
- Grup instance terkelola, yang menggunakan template instance untuk membuat dua instance frontend.
- Autoscaler, yang memulai atau menghentikan instance frontend tambahan berdasarkan traffic masuk.
- Health check, yang memeriksa apakah instance frontend tersedia untuk melakukan pekerjaan.
- Load balancer jaringan dengan aturan penerusan.
- Kumpulan target untuk grup instance terkelola.
Membuat template untuk backend MySQL
Backend aplikasi ini adalah satu instance Compute Engine yang menjalankan
container Docker MySQL. Template container_vm.py
menentukan instance Compute Engine yang dapat menjalankan container Docker. Untuk memastikan bahwa template mengikuti struktur yang benar dan berisi semua properti yang diperlukan, Anda juga memerlukan file skema.
Salin template di bawah, atau download dari repositori GitHub:
Download file skema untuk template.
Template memiliki beberapa properti yang tidak ditentukan, seperti containerImage
, yang ditentukan dalam template berikutnya.
Saat menggunakan image container di instance Compute Engine, Anda juga perlu menyediakan file manifes yang menjelaskan image container mana yang akan digunakan. Buat metode helper bernama container_helper.py
untuk menentukan manifes penampung secara dinamis:
Membuat template untuk frontend Node.js
Frontend aplikasi menjalankan Node.js, dan memungkinkan pengguna memposting pesan ke halaman web. Frontend berjalan di grup instance virtual machine, yang didukung oleh autoscaler dan load balancer. Untuk membuat template frontend, gunakan petunjuk berikut.
Buat resource template instance.
Anda memerlukan template instance untuk membuat grup instance terkelola, yang merupakan grup instance virtual machine (VM) identik yang Anda kontrol sebagai satu entity.
Buat file bernama
container_instance_template.py
, dan download skema untuk template:Buat autoscaler, grup instance terkelola, dan load balancer.
Selanjutnya, buat template lain yang menggunakan template
container_instance_template.py
dan membuat resource frontend lainnya, termasuk autoscaler, load balancer, dan grup instance terkelola.
Template ini mencakup resource berikut:
Template instance menggunakan template
container_instance_template.py
.Grup instance terkelola yang menggunakan template instance, dan autoscaler yang mereferensikan grup instance terkelola. Penggunaan referensi memastikan bahwa Deployment Manager membuat resource dalam urutan tertentu. Dalam hal ini, grup instance terkelola dibuat sebelum autoscaler.
Load balancer jaringan yang berisi resource berikut:
- Aturan penerusan dengan satu alamat IP eksternal yang diekspos ke Internet.
- Kumpulan target yang berisi grup instance terkelola yang Anda buat sebelumnya.
- Health check yang akan dilampirkan ke kumpulan target.
Buat file bernama frontend.py
, lalu download skema untuk template:
Download file skema untuk template.
Membuat template penyatuan
Terakhir, buat template yang menggabungkan template backend dan frontend. Buat file bernama nodejs.py
dengan konten
berikut:
Download file skema untuk template.
Perhatikan bahwa frontend aplikasi Anda diberi nama env["deployment"]-frontend
, dan backend Anda juga diberi nama yang serupa. Saat Anda men-deploy aplikasi, Deployment Manager akan otomatis mengganti env["deployment"]
dengan nama deployment.
Membuat konfigurasi
Setelah semua template siap, Anda dapat membuat konfigurasi yang akan digunakan untuk men-deploy resource. Buat file konfigurasi bernama
nodejs.yaml
dengan konten berikut:
Ganti ZONE_TO_RUN
dengan zona tempat Anda menginginkan resource, seperti
us-central1-a
.
Mendeploy resource Anda
Sekarang, deploy resource Anda. Dengan menggunakan Google Cloud CLI, jalankan:
gcloud deployment-manager deployments create advanced-configuration --config nodejs.yaml
Setelah deployment selesai, Deployment Manager akan menampilkan ringkasan resource yang dibuat, yang mirip dengan berikut ini:
Waiting for create operation-1468522101491-5379cf2344539-5961abe8-a500190c...done.
Create operation operation-1468522101491-5379cf2344539-5961abe8-a500190c completed successfully.
NAME TYPE STATE ERRORS
advanced-configuration-application-fw compute.v1.firewall COMPLETED []
advanced-configuration-backend compute.v1.instance COMPLETED []
advanced-configuration-frontend-as compute.v1.autoscaler COMPLETED []
advanced-configuration-frontend-hc compute.v1.httpHealthCheck COMPLETED []
advanced-configuration-frontend-igm compute.v1.instanceGroupManager COMPLETED []
advanced-configuration-frontend-it compute.v1.instanceTemplate COMPLETED []
advanced-configuration-frontend-lb compute.v1.forwardingRule COMPLETED []
advanced-configuration-frontend-tp compute.v1.targetPool COMPLETED []
Menguji aplikasi
Untuk menguji aplikasi, pertama-tama dapatkan alamat IP eksternal yang melayani traffic, dengan mengirimkan kueri ke aturan penerusan:
$ gcloud compute forwarding-rules describe advanced-configuration-frontend-lb --region us-central1 IPAddress: 104.154.81.44 IPProtocol: TCP creationTimestamp: '2016-07-14T11:48:37.228-07:00' description: '' id: '9033201246750269546' kind: compute#forwardingRule name: advanced-configuration-frontend-lb portRange: 8080-8080 region: https://www.googleapis.com/compute/v1/projects/myproject/regions/us-central1 selfLink: https://www.googleapis.com/compute/v1/projects/myproject/regions/us-central1/forwardingRules/advanced-configuration-frontend-lb target: https://www.googleapis.com/compute/v1/projects/myproject/regions/us-central1/targetPools/advanced-configuration-frontend-tp
Dalam hal ini, IP eksternalnya adalah 104.154.81.44
.
Selanjutnya, di browser, buka alamat IP eksternal dengan port 8080. Misalnya,
jika alamat IP eksternal Anda adalah 104.154.81.44
, URL-nya adalah:
http://104.154.81.44:8080
Anda akan melihat halaman kosong, yang memang seharusnya. Selanjutnya, posting pesan ke halaman. Buka URL berikut:
http://104.154.81.44:8080?msg=hellothere!
Anda akan melihat konfirmasi bahwa pesan Anda telah ditambahkan. Kembali ke URL utama, dan halaman akan menampilkan pesan:
hellothere!
Sekarang Anda memiliki aplikasi yang di-deploy yang dapat mencatat pesan yang dikirimkan kepadanya.
Langkah berikutnya
Setelah menyelesaikan sampel ini, Anda dapat:
- Bangun contoh ini dengan men-deploy instance menggunakan container Docker Anda sendiri. Jika Anda ingin mengubah container Docker yang digunakan dalam tutorial ini, edit Dockerfile di repositori GitHub.
- Lihat contoh deployment lainnya di repositori GitHub Deployment Manager.
- Baca selengkapnya tentang template dan deployment.