1. Pengantar
Halo semuanya, terima kasih telah datang hari ini! Siap untuk mempelajari Google Compute Engine?
Dalam codelab ini, kita akan mempelajari Compute Engine yang berfungsi melalui contoh aplikasi Buku Tamu.
Anda akan membuat instance Compute Engine, men-deploy nginx, dan terakhir menempatkan load balancer jaringan di depan. Anda dapat membuat instance Compute Engine dari konsol grafis atau dari command line. Lab ini akan memandu Anda menggunakan command line.
Google Compute Engine menawarkan mesin virtual yang berjalan di pusat data Google yang terhubung ke jaringan fiber miliknya di seluruh dunia. Alat dan alur kerja yang ditawarkan memungkinkan penskalaan dari instance tunggal ke cloud computing global dan load balancing.
VM ini melakukan booting dengan cepat, dilengkapi dengan penyimpanan persistent disk, dan memberikan performa yang konsisten. Mesin ini tersedia dalam berbagai konfigurasi, termasuk ukuran standar dan juga dapat dibuat dengan Jenis Mesin Kustom yang dioptimalkan sesuai kebutuhan spesifik Anda.
Terakhir, virtual machine Compute Engine juga merupakan teknologi yang digunakan oleh beberapa produk Google Cloud lainnya (Kubernetes Engine, Cloud Dataproc, Cloud Dataflow, dll...).
2. Penyiapan dan Persyaratan
Penyiapan lingkungan mandiri
- Login ke Google Cloud Console dan buat project baru atau gunakan kembali project yang sudah ada. Jika belum memiliki akun Gmail atau Google Workspace, Anda harus membuatnya.
- Nama project adalah nama tampilan untuk peserta project ini. String ini adalah string karakter yang tidak digunakan oleh Google API, dan Anda dapat memperbaruinya kapan saja.
- Project ID harus unik di semua project Google Cloud dan tidak dapat diubah (tidak dapat diubah setelah ditetapkan). Cloud Console otomatis menghasilkan string unik; biasanya Anda tidak peduli dengan kata-katanya. Pada sebagian besar codelab, Anda harus mereferensikan Project ID (dan biasanya diidentifikasi sebagai
PROJECT_ID
). Jadi, jika Anda tidak menyukainya, buat ID acak lain, atau, Anda dapat mencoba sendiri dan melihat apakah tersedia. Kemudian file akan "dibekukan" setelah project dibuat. - Ada nilai ketiga, Nomor Project yang digunakan oleh beberapa API. Pelajari lebih lanjut ketiga nilai ini di dokumentasi.
- Selanjutnya, Anda harus mengaktifkan penagihan di Cloud Console untuk menggunakan API/resource Cloud. Menjalankan operasi dalam codelab ini seharusnya tidak memerlukan banyak biaya, bahkan mungkin tidak sama sekali. Untuk menonaktifkan resource agar tidak menimbulkan penagihan di luar tutorial ini, ikuti petunjuk "pembersihan" yang ada di akhir codelab. Pengguna baru Google Cloud memenuhi syarat untuk mengikuti program Uji Coba Gratis senilai $300 USD.
Google Cloud Shell
Meskipun Google Cloud dan Compute Engine dapat dioperasikan secara jarak jauh dari laptop Anda, dalam codelab ini kita akan menggunakan Google Cloud Shell, yakni lingkungan command line yang berjalan di Cloud.
Mesin virtual berbasis Debian ini memuat semua alat pengembangan yang akan Anda perlukan. Layanan ini menawarkan direktori beranda tetap sebesar 5 GB dan beroperasi di Google Cloud, sehingga sangat meningkatkan performa dan autentikasi jaringan. Ini berarti bahwa semua yang Anda perlukan untuk codelab ini adalah browser (ya, ini berfungsi di Chromebook).
- Untuk mengaktifkan Cloud Shell dari Cloud Console, cukup klik Aktifkan Cloud Shell (hanya perlu beberapa saat untuk melakukan penyediaan dan terhubung ke lingkungan).
Setelah terhubung ke Cloud Shell, Anda akan melihat bahwa Anda sudah diautentikasi dan project sudah ditetapkan ke PROJECT_ID
.
gcloud auth list
Output perintah
Credentialed accounts: - <myaccount>@<mydomain>.com (active)
gcloud config list project
Output perintah
[core] project = <PROJECT_ID>
Jika, untuk beberapa alasan, project belum disetel, cukup jalankan perintah berikut:
gcloud config set project <PROJECT_ID>
Mencari PROJECT_ID
Anda? Periksa ID yang Anda gunakan di langkah-langkah penyiapan atau cari di dasbor Cloud Console:
Cloud Shell juga menetapkan beberapa variabel lingkungan secara default, yang mungkin berguna saat Anda menjalankan perintah di masa mendatang.
echo $GOOGLE_CLOUD_PROJECT
Output perintah
<PROJECT_ID>
- Terakhir, tetapkan zona dan konfigurasi project default.
gcloud config set compute/zone us-central1-f
Anda dapat memilih berbagai zona yang berbeda. Untuk informasi selengkapnya, lihat Region & Zona.
3. Membuat instance Compute Engine
Seperti yang telah dibahas sebelumnya, kita akan menggunakan command line gcloud
dalam codelab ini. Semua yang dilakukan di sini dapat dilakukan menggunakan konsol (tersedia di console.cloud.google.com).
Pertama-tama, mari kita buat instance dengan setelan default :
$ gcloud compute instances create myinstance Created [...]. NAME: myinstance ZONE: us-central1-f MACHINE_TYPE: n1-standard-1 PREEMPTIBLE: INTERNAL_IP: 10.128.X.X EXTERNAL_IP: X.X.X.X STATUS: RUNNING
Catat EXTERNAL_IP
- yang akan penting nanti.
Instance dibuat menggunakan sejumlah setelan default :
- Zona yang Anda pilih. Semua instance berada di zona. Anda dapat memilih zona pada waktu pembuatan instance menggunakan tanda
--zone
atau menetapkan zona default (seperti yang kita lakukan di penyiapan awal) dan menghilangkan tanda--zone
. - Image Debian GNU/Linux 9 (stretch) terbaru. Jika Anda menggunakan gambar kustom Anda sendiri, berikan nama gambar di sini. Misalnya,
--image my-own-image
. - Jenis mesin
n1-standard-1
. Anda dapat memilih jenis mesin lain sepertin1-highmem-4
ataun1-highcpu-6
. Jika tidak ada jenis mesin yang telah ditetapkan yang cocok dengan kebutuhan Anda, gunakan jenis mesin kustom. - Jika nama persistent disk root sama dengan nama instance, disk akan otomatis dipasangkan ke instance.
Jalankan gcloud compute instances create --help
untuk melihat semua opsi yang tersedia.
4. Aktifkan Firewall untuk Port 80
Secara default, Google Cloud Platform hanya mengizinkan beberapa akses port. Karena kita akan segera menginstal Nginx - mari kita aktifkan port 80 dalam konfigurasi firewall terlebih dahulu.
$ gcloud compute firewall-rules create allow-80 --allow tcp:80 Created [...]. NAME: allow-80 NETWORK: default DIRECTION: INGRESS PRIORITY: 1000 ALLOW: tcp:80 DENY: DISABLED: False
Tindakan ini akan membuat aturan firewall bernama allow-80
yang memiliki daftar default blok alamat IP yang diizinkan untuk membuat koneksi masuk (--source-ranges
) ditetapkan ke 0.0.0.0/0
(Di mana saja).
Jalankan gcloud compute firewall-rules create --help
untuk melihat semua default dan semua opsi yang tersedia, termasuk kemampuan untuk menerapkan aturan firewall berdasarkan tag.
5. SSH Ke Instance
Untuk menerapkan SSH ke instance dari command line (masih dari Cloud Shell) :
$ gcloud compute ssh myinstance Waiting for SSH key to propagate. Warning: Permanently added 'compute.12345' (ECDSA) to the list of known hosts. ... yourusername@myinstance:~#
Selesai. cukup mudah. (Dalam produksi, pastikan Anda memasukkan frasa sandi :)
Atau, Anda juga dapat menjalankan SSH ke instance langsung dari konsol ( console.cloud.google.com), dengan membuka Compute Engine > VM Instances, lalu mengklik SSH.
6. Instal Nginx
Login ke myinstance, instance yang baru dibuat, lalu instal nginx:
$ sudo su - # apt update # apt install -y nginx # service nginx start # exit
Uji apakah server berfungsi menggunakan curl
dari myinstance:
$ curl -s localhost | grep nginx <title>Welcome to nginx!</title> <h1>Welcome to nginx!</h1> <p>If you see this page, the nginx web server is successfully installed and <a href="http://nginx.org/">nginx.org</a>.<br/> <a href="http://nginx.com/">nginx.com</a>.</p> <p><em>Thank you for using nginx.</em></p>
Temukan IP eksternal untuk instance Anda dengan mencantumkan instance melalui UI web:
Pastikan Anda keluar dari SSH, lalu jalankan perintah ini dari Cloud Shell:
$ gcloud compute instances list NAME: myinstance ZONE: us-central1-f MACHINE_TYPE: n1-standard-1 PREEMPTIBLE: INTERNAL_IP: 10.128.X.X EXTERNAL_IP: X.X.X.X STATUS: RUNNING
Kemudian, buka http://EXTERNAL_IP/
dengan EXTERNAL_IP
sebagai IP publik myinstance dan Anda akan dapat melihat halaman nginx:
7. Skrip Startup
Daripada menyiapkan instance setiap saat, Anda dapat menggunakan skrip startup untuk melakukan inisialisasi pada saat startup.
Buat file bernama startup.sh
dengan konten berikut (Anda dapat menggunakan editor teks favorit: vim
, nano
, atau emacs
):
#! /bin/bash apt-get update apt-get install -y nginx service nginx start sed -i -- 's/nginx/Google Cloud Platform - '"$HOSTNAME"'/' /var/www/html/index.nginx-debian.html
Untuk membuat instance VM baru dengan skrip startup ini, cukup ketik :
$ gcloud compute instances create nginx \ --metadata-from-file startup-script=startup.sh Created [...]. NAME: nginx ZONE: us-central1-f MACHINE_TYPE: n1-standard-1 PREEMPTIBLE: INTERNAL_IP: 10.128.X.X EXTERNAL_IP: X.X.X.X STATUS: RUNNING
Jelajahi http://EXTERNAL_IP/
dan Anda akan melihat halaman beranda yang diperbarui. Jika halaman tidak langsung muncul, coba lagi setelah beberapa detik, host mungkin masih memulai nginx.
8. Membuat Cluster Server
Untuk membuat cluster server, Anda harus membuat Template Instance terlebih dahulu. Setelah template instance dibuat, Anda kemudian dapat membuat grup instance untuk mengelola jumlah instance yang akan dibuat.
Pertama-tama, buat template instance menggunakan skrip startup :
$ gcloud compute instance-templates create nginx-template \ --metadata-from-file startup-script=startup.sh Created [...]. NAME: nginx-template MACHINE_TYPE: n1-standard-1 PREEMPTIBLE: CREATION_TIMESTAMP: 2022-03-18T15:10:37.621-07:00
Kedua, mari kita buat kumpulan target. Kumpulan target memungkinkan kita memiliki satu titik akses ke semua instance dalam grup dan diperlukan untuk load balancing pada langkah-langkah di masa mendatang.
$ gcloud compute target-pools create nginx-pool Created [...]. NAME: nginx-pool REGION: us-central1 SESSION_AFFINITY: NONE BACKUP: HEALTH_CHECKS:
Terakhir, buat grup instance menggunakan template:
$ gcloud compute instance-groups managed create nginx-group \ --base-instance-name nginx \ --size 2 \ --template nginx-template \ --target-pool nginx-pool Created [...]. NAME: nginx-group LOCATION: us-central1-f SCOPE: zone BASE_INSTANCE_NAME: nginx SIZE: 0 TARGET_SIZE: 2 INSTANCE_TEMPLATE: nginx-template AUTOSCALED: no
Tindakan ini akan membuat dua instance VM tambahan dengan nama yang diawali dengan nginx-
.
Sekarang Anda dapat melihat semua instance yang telah dibuat.
$ gcloud compute instances list NAME: myinstance ZONE: us-central1-f MACHINE_TYPE: n1-standard-1 PREEMPTIBLE: INTERNAL_IP: 10.128.X.X EXTERNAL_IP: X.X.X.X STATUS: RUNNING NAME: nginx ZONE: us-central1-f MACHINE_TYPE: n1-standard-1 PREEMPTIBLE: INTERNAL_IP: 10.128.X.X EXTERNAL_IP: X.X.X.X STATUS: RUNNING NAME: nginx-frpl ZONE: us-central1-f MACHINE_TYPE: n1-standard-1 PREEMPTIBLE: INTERNAL_IP: 10.128.X.X EXTERNAL_IP: X.X.X.X STATUS: RUNNING NAME: nginx-ztg4 ZONE: us-central1-f MACHINE_TYPE: n1-standard-1 PREEMPTIBLE: INTERNAL_IP: 10.128.X.X EXTERNAL_IP: X.X.X.X STATUS: RUNNING
9. Membuat Load Balancer Jaringan
Ada beberapa jenis load balancer di Google Cloud Platform, di antaranya :
Mari kita buat load balancer jaringan regional yang menargetkan grup instance:
$ gcloud compute forwarding-rules create nginx-lb \ --ports 80 \ --target-pool nginx-pool Created [...]. $ gcloud compute forwarding-rules list NAME: nginx-lb REGION: us-central1 IP_ADDRESS: X.X.X.X IP_PROTOCOL: TCP TARGET: us-central1/targetPools/nginx-pool
Selanjutnya, Anda dapat membuka load balancer dari browser http://IP_ADDRESS/
dengan IP_ADDRESS
adalah alamat yang ditampilkan sebagai hasil dari menjalankan perintah sebelumnya.
Karena keterbatasan waktu, kami tidak akan membuat load balancer HTTP hari ini.
10. Membersihkan Cluster
Jangan lupa untuk menonaktifkan cluster Anda, jika tidak, cluster akan terus berjalan dan dikenai biaya. Perintah berikut akan menghapus instance Google Compute Engine, Grup Instance, Grup Penargetan, dan Load Balancer.
$ gcloud compute forwarding-rules delete nginx-lb $ gcloud compute instance-groups managed delete nginx-group $ gcloud compute target-pools delete nginx-pool $ gcloud compute instance-templates delete nginx-template $ gcloud compute instances delete nginx $ gcloud compute instances delete myinstance $ gcloud compute firewall-rules delete allow-80
Setiap perintah di atas akan meminta Anda untuk mengonfirmasi penghapusan resource.
11. Apa langkah selanjutnya?
Selamat, Anda telah menyelesaikan codelab Compute Engine ini.
Fitur Compute Engine lainnya
Google Compute Engine memiliki serangkaian fitur yang beragam. Anda mungkin ingin mempelajari beberapa di antaranya :
- Preemptible VM - https://cloud.google.com/compute/docs/instances/create-start-preemptible-instance
- Sole-tenant node - https://cloud.google.com/compute/docs/nodes/create-nodes
- GPU & TPU - https://cloud.google.com/compute/docs/gpus/add-gpus
- Instance Windows - https://cloud.google.com/compute/docs/instances/windows/creating-managing-windows-instances
- Melabeli Resource - https://cloud.google.com/compute/docs/labeling-resources
- Memigrasikan VM ke Compute Engine - https://cloud.google.com/compute/docs/vm-migration/
Google Kubernetes Engine
Google Kubernetes Engine (GKE) adalah penawaran Kubernetes yang dihosting dan terkelola sepenuhnya dari Google Cloud. Ada beberapa codelab yang tersedia untuk membantu Anda memulai GKE. Berikut adalah langkah yang baik untuk memulai :
- Codelab Google Kubernetes Engine - https://codelabs.developers.google.com/codelabs/cloud-gke-workshop-v2
Kirimkan masukan Anda
- Luangkan waktu Anda untuk menyelesaikan survei singkat kami