Dalam tutorial ini, Anda akan men-deploy contoh aplikasi logbook yang menggunakan Node.js untuk frontend-nya dan MySQL untuk backend-nya. Di akhir tutorial, deployment Anda akan memiliki resource berikut:
Jika Anda baru menggunakan Deployment Manager, lihat tutorial Panduan Memulai 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. Nanti, 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 penampung 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 yang akan digunakan. Buat
metode helper yang disebut 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
, lalu 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 menyertakan 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 ditampilkan 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 pemersatu
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 bernama env["deployment"]-frontend
, dan backend Anda juga diberi nama yang sama. 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, 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, dapatkan alamat IP eksternal yang menyalurkan traffic terlebih dahulu, dengan mengajukan kueri 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 eksternal 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 diharapkan. 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 kini akan menampilkan pesan:
hellothere!
Sekarang Anda memiliki aplikasi yang di-deploy yang dapat mencatat pesan yang dikirim ke aplikasi tersebut.
Langkah berikutnya
Setelah menyelesaikan contoh ini, Anda dapat:
- Buat contoh ini dengan men-deploy instance dengan container Docker Anda sendiri. Jika Anda ingin mengubah penampung 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.