Dalam tutorial ini, Anda akan men-deploy contoh aplikasi buku log yang menggunakan Node.js untuk frontend dan MySQL untuk backend-nya. Di akhir tutorial, deployment Anda 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 penampung Docker.
Membuat template resource
Contoh ini meluncurkan deployment yang berisi berbagai resource Google Cloud. Untuk memulai, buat template yang menentukan resource ini secara terpisah. Kemudian, 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 frontend instance, 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 berfungsi atau tidak.
- Load balancer jaringan dengan aturan penerusan.
- Kumpulan target untuk grup instance terkelola.
Membuat template untuk backend MySQL
Backend aplikasi ini adalah instance Compute Engine tunggal 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 ini, atau download dari repositori GitHub:
Download file skema untuk template tersebut.
Template ini memiliki beberapa properti yang belum ditentukan, seperti containerImage
, yang ditentukan dalam template berikutnya.
Saat menggunakan image container pada instance Compute Engine, Anda juga harus menyediakan file manifes yang menjelaskan image container mana yang akan digunakan. Buat
metode bantuan yang disebut container_helper.py
untuk menentukan manifes
container secara dinamis:
Membuat template untuk frontend Node.js
Frontend aplikasi menjalankan Node.js, dan memungkinkan pengguna memposting pesan ke halaman web. Frontend berjalan pada sekelompok instance virtual machine, yang didukung oleh penskala otomatis dan load balancer. Untuk membuat template frontend, gunakan petunjuk berikut.
Buat resource instance template.
Anda memerlukan template instance untuk membuat grup instance terkelola, yang merupakan grup instance virtual machine (VM) identik yang Anda kontrol sebagai satu entitas.
Buat file bernama
container_instance_template.py
, dan download skema untuk template tersebut:Membuat penskala otomatis, grup instance terkelola, dan load balancer.
Selanjutnya, buat template lain yang menggunakan template
container_instance_template.py
dan membuat resource frontend Anda lainnya, termasuk penskala otomatis, load balancer, dan grup instance terkelola.
Template ini mencakup referensi berikut:
Template instance menggunakan template
container_instance_template.py
.Grup instance terkelola yang menggunakan template instance, dan autoscaler yang mereferensikan grup instance terkelola. Menggunakan referensi akan memastikan bahwa Deployment Manager membuat resource dalam urutan tertentu. Dalam hal ini, grup instance terkelola dibuat sebelum penskala otomatis.
Load balancer jaringan yang berisi resource berikut:
- Aturan penerusan dengan satu alamat IP eksternal yang terekspos ke Internet.
- Kumpulan target berisi grup instance terkelola yang Anda buat sebelumnya.
- Health check untuk dipasang ke kumpulan target.
Buat file bernama frontend.py
, lalu download skema untuk template tersebut:
Download file skema untuk template tersebut.
Membuat {i>template<i} terpadu
Terakhir, buat template yang menyatukan template back-end dan frontend. Buat file bernama nodejs.py
dengan konten
berikut:
Download file skema untuk template tersebut.
Perlu diketahui bahwa frontend aplikasi Anda diberi nama 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 Anda
Setelah menyiapkan semua template, 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 ingin 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, seperti berikut:
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 Anda, pertama-tama dapatkan alamat IP eksternal yang menyalurkan traffic, dengan membuat 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 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, seperti yang diharapkan. Selanjutnya, posting pesan ke laman tersebut. Buka URL berikut:
http://104.154.81.44:8080?msg=hellothere!
Anda akan melihat konfirmasi bahwa pesan telah ditambahkan. Kembali ke URL utama, dan halaman akan menampilkan pesan berikut:
hellothere!
Anda sekarang memiliki aplikasi yang telah di-deploy dan dapat mencatat pesan yang dikirim ke aplikasi tersebut.
Langkah berikutnya
Setelah Anda menyelesaikan contoh ini, Anda dapat:
- Bangun aplikasi berdasarkan contoh ini dengan men-deploy instance dengan 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.