Tutorial ini menunjukkan cara membuat endpoint HTTP internal di jaringan Virtual Private Cloud (VPC) yang menerima peristiwa pesan Pub/Sub menggunakan Eventarc. Untuk mempelajari tujuan peristiwa ini lebih lanjut, lihat Merutekan peristiwa ke endpoint HTTP internal dalam jaringan VPC.
Anda dapat menjalankan perintah berikut menggunakan Google Cloud CLI di terminal atau Cloud Shell.
Tujuan
Dalam tutorial ini, Anda akan:
- Buat jaringan VPC untuk menyediakan jaringan bagi resource dan layanan berbasis cloud Anda. Jaringan VPC secara logis terisolasi dari jaringan lain di Google Cloud.
- Buat subnet. Setiap jaringan VPC terdiri dari satu atau beberapa rentang alamat IP yang disebut subnet. Subnet adalah resource regional, dan memiliki rentang alamat IP yang terkait dengannya.
- Buat aturan firewall VPC agar Anda dapat mengizinkan atau menolak traffic ke atau dari instance VM (virtual machine) di jaringan VPC.
- Buat lampiran jaringan yang memungkinkan jaringan VPC produsen memulai koneksi ke jaringan VPC konsumen.
- Buat instance VM Compute Engine di jaringan VPC.
- Men-deploy server web sebagai layanan penerima peristiwa di instance VM Anda.
- Buat pemicu Eventarc yang merutekan peristiwa Pub/Sub ke penerima peristiwa di instance VM Anda.
- Buat koneksi SSH ke instance VM.
- Publikasikan pesan ke topik Pub/Sub untuk membuat peristiwa, dan lihat isi peristiwa di alat SSH-in-browser.
Biaya
Dalam dokumen ini, Anda akan menggunakan komponen Google Cloudyang dapat ditagih berikut:
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda,
gunakan kalkulator harga.
Setelah menyelesaikan tugas yang dijelaskan dalam dokumen ini, Anda dapat menghindari penagihan berkelanjutan dengan menghapus resource yang Anda buat. Untuk mengetahui informasi selengkapnya, lihat Pembersihan.
Sebelum memulai
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Compute Engine, Eventarc, and Pub/Sub APIs:
gcloud services enable compute.googleapis.com
eventarc.googleapis.com pubsub.googleapis.com - Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Compute Engine, Eventarc, and Pub/Sub APIs:
gcloud services enable compute.googleapis.com
eventarc.googleapis.com pubsub.googleapis.com - Update komponen Google Cloud CLI:
gcloud components update
- Login menggunakan akun Anda:
gcloud auth login
- Tetapkan variabel konfigurasi yang digunakan dalam panduan memulai ini:
REGION=us-central1 ZONE=us-central1-a
-
Jika Anda adalah project creator, Anda diberi peran Pemilik dasar (
roles/owner
). Secara default, peran Identity and Access Management (IAM) ini mencakup izin yang diperlukan untuk akses penuh ke sebagian besar resource Google Cloud dan Anda dapat melewati langkah ini.Jika Anda bukan project creator, izin yang diperlukan harus diberikan pada project kepada akun utama yang sesuai. Misalnya, akun utama dapat berupa Akun Google (untuk pengguna akhir) atau akun layanan (untuk aplikasi dan workload komputasi). Untuk mengetahui informasi selengkapnya, lihat halaman eran dan izin untuk tujuan peristiwa Anda.
Izin yang diperlukan
Untuk mendapatkan izin yang Anda perlukan untuk menyelesaikan panduan memulai ini, minta administrator untuk memberi Anda peran IAM berikut di project Anda:
-
Compute Network Admin (
roles/compute.networkAdmin
) -
Compute Security Admin (
roles/compute.securityAdmin
) -
Eventarc Admin (
roles/eventarc.admin
) -
Logs View Accessor (
roles/logging.viewAccessor
) -
Project IAM Admin (
roles/resourcemanager.projectIamAdmin
) -
Pub/Sub Publisher (
roles/pubsub.publisher
) -
Service Account Admin (
roles/iam.serviceAccountAdmin
) -
Service Account User (
roles/iam.serviceAccountUser
) -
Service Usage Admin (
roles/serviceusage.serviceUsageAdmin
)
Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.
Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.
-
Compute Network Admin (
- Jika Anda mengaktifkan agen layanan Cloud Pub/Sub pada atau sebelum
8 April 2021, untuk mendukung permintaan push Pub/Sub yang diautentikasi, berikan
peran
Service Account Token Creator (
roles/iam.serviceAccountTokenCreator
) ke agen layanan. Jika tidak, peran ini akan diberikan secara default: Ganti kode berikut:gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com \ --role=roles/iam.serviceAccountTokenCreator
PROJECT_ID
: Google Cloud project ID AndaPROJECT_NUMBER
: Google Cloud nomor project Anda. Anda dapat menemukan nomor project di halaman Selamat Datang pada Konsol Google Cloud atau dengan menjalankan perintah berikut:gcloud projects describe PROJECT_ID --format='value(projectNumber)'
Membuat jaringan VPC mode kustom
Jaringan VPC adalah versi virtual dari jaringan fisik yang diterapkan di dalam jaringan produksi Google. Jaringan ini menyediakan konektivitas untuk instance VM Compute Engine Anda.
Saat jaringan VPC mode kustom dibuat, tidak ada subnet yang dibuat secara otomatis. Jenis jaringan ini memberi Anda kendali penuh atas subnet dan rentang IP miliknya.
gcloud compute networks create NETWORK_NAME \ --subnet-mode=custom \ --bgp-routing-mode=regional \ --mtu=1460
Ganti NETWORK_NAME
dengan nama untuk jaringan VPC.
Perhatikan hal berikut:
- Setiap jaringan baru yang Anda buat harus memiliki nama unik dalam project yang sama.
- Mode perutean
Border Gateway Protocol (BGP) mengontrol perilaku
Cloud Router di jaringan dan dapat berupa
global
atauregional
. Defaultnya adalahregional
. - Unit transmisi maksimum (MTU) adalah ukuran paket terbesar di jaringan.
MTU dapat ditetapkan ke nilai apa pun mulai dari
1300
hingga8896
. Defaultnya adalah1460
. Sebelum menyetel MTU ke nilai yang lebih tinggi dari1460
, tinjau Unit transmisi maksimum.
Untuk informasi selengkapnya, lihat Membuat dan mengelola jaringan VPC.
Membuat subnet khusus IPv4
Jaringan harus memiliki minimal satu subnet sebelum Anda dapat menggunakannya.
Saat membuat subnet, Anda menetapkan nama, region, dan setidaknya rentang alamat IPv4 primer sesuai dengan aturan subnet. Perhatikan bahwa Anda tidak dapat membuat instance di region yang tidak memiliki subnet yang ditentukan.
gcloud compute networks subnets create SUBNET_NAME \ --region=$REGION \ --network=NETWORK_NAME \ --range=10.10.10.0/24
Ganti SUBNET_NAME
dengan nama untuk subnet baru.
Untuk mengetahui informasi selengkapnya, lihat Subnet.
Membuat aturan firewall VPC
Dengan aturan firewall VPC, Anda dapat mengizinkan atau menolak traffic antar-resource dalam jaringan VPC berdasarkan nomor port, tag, atau protokol.
Aturan firewall VPC ditentukan di tingkat jaringan, dan hanya berlaku untuk jaringan tempat aturan dibuat; namun, nama yang Anda pilih untuk aturan harus unik untuk project.
Buat aturan firewall untuk jaringan VPC Anda yang mengizinkan traffic masuk dari alamat IPv4 mana pun (
0.0.0.0/0
) ke instance mana pun di jaringan menggunakan port 22. Aturan ini tidak diperlukan untuk pengiriman peristiwa. Namun, untuk tujuan tutorial ini, buat aturan agar Anda dapat terhubung ke VM menggunakan SSH dan mengonfirmasi pengiriman peristiwa:gcloud compute firewall-rules create RULE_NAME_ONE \ --network=projects/PROJECT_ID/global/networks/NETWORK_NAME \ --direction=INGRESS \ --priority=65534 \ --action=ALLOW \ --source-ranges=0.0.0.0/0 \ --rules=tcp:22
Buat aturan firewall untuk jaringan VPC yang mengizinkan traffic masuk dari rentang alamat IP tertentu ke instance mana pun di jaringan menggunakan port 80 (karena Anda akan men-deploy server web di VM yang memproses di port 80):
gcloud compute firewall-rules create RULE_NAME_TWO \ --network=projects/PROJECT_ID/global/networks/NETWORK_NAME \ --direction=INGRESS \ --priority=1000 \ --action=ALLOW \ --source-ranges=10.10.10.0/24 \ --rules=tcp:80
Ganti
RULE_NAME_ONE
danRULE_NAME_TWO
dengan nama unik untuk aturan firewall Anda.Perhatikan bahwa penggunaan
--source-ranges
bersifat opsional dan menunjukkan daftar blok alamat IP yang diizinkan untuk membuat koneksi masuk yang cocok dengan aturan firewall ke instance di jaringan. Dalam hal ini, rentang cocok dengan rentang yang digunakan di subnet yang Anda buat sebelumnya.Sebaiknya gunakan flag untuk menerapkan aturan firewall secara khusus ke traffic Eventarc. Jika
--source-ranges
atau--source-tags
tidak ditentukan,--source-ranges
akan ditetapkan secara default ke0.0.0.0/0
, yang berarti aturan tersebut berlaku untuk semua koneksi IPv4 masuk dari dalam atau luar jaringan.
Untuk informasi selengkapnya, lihat Menggunakan aturan firewall VPC.
Membuat lampiran jaringan
Lampiran jaringan adalah resource yang memungkinkan jaringan VPC produsen memulai koneksi ke jaringan VPC konsumen melalui antarmuka Private Service Connect.
Untuk memublikasikan peristiwa, Eventarc menggunakan lampiran jaringan untuk membangun koneksi ke endpoint HTTP internal yang dihosting di jaringan VPC.
Anda dapat membuat lampiran jaringan yang otomatis menerima koneksi dari antarmuka Private Service Connect mana pun yang merujuk ke lampiran jaringan. Buat lampiran jaringan di jaringan dan region yang sama yang berisi layanan tujuan HTTP.
gcloud compute network-attachments create ATTACHMENT_NAME \ --region=$REGION \ --subnets=SUBNET_NAME \ --connection-preference=ACCEPT_AUTOMATIC
Ganti ATTACHMENT_NAME
dengan nama untuk lampiran jaringan.
Untuk mengetahui informasi selengkapnya, lihat Tentang lampiran jaringan.
Membuat instance VM di subnet yang ditentukan
Instance VM Compute Engine adalah virtual machine yang dihosting di infrastruktur Google. Istilah instance Compute Engine, instance VM, dan VM adalah istilah yang sama dan digunakan secara bergantian. Instance VM mencakup cluster Google Kubernetes Engine (GKE), instance lingkungan fleksibel App Engine, dan produk Google Cloud lainnya yang di-build di VM Compute Engine.
Buat instance VM Compute Engine di jaringan VPC tempat Anda dapat men-deploy layanan penerima peristiwa.
gcloud compute instances create INSTANCE_NAME \ --zone=$ZONE \ --machine-type=e2-medium \ --subnet=SUBNET_NAME
Ganti INSTANCE_NAME
dengan nama untuk VM.
Untuk mengetahui informasi selengkapnya, baca Membuat dan memulai instance VM.
Men-deploy penerima peristiwa di VM
Deploy server web di VM Anda yang memproses port 80, serta menerima dan mencatat peristiwa ke dalam log.
Buat koneksi SSH ke instance VM Anda menggunakan tombol SSH di konsol Google Cloud untuk terhubung ke VM Anda.
Setelah koneksi ke server SSH dibuat, gunakan terminal SSH-in-browser untuk menjalankan perintah di instance VM Anda.
Di terminal SSH dalam browser, buat file teks dengan nama file
server.py
yang berisi kode Python berikut:Mulai server dan biarkan server tetap berjalan untuk langkah-langkah yang tersisa dalam tutorial ini:
sudo python3 server.py
Membuat pemicu Eventarc
Buat pemicu Eventarc yang membuat topik Pub/Sub baru dan merutekan peristiwa ke penerima peristiwa yang di-deploy di VM saat pesan dipublikasikan ke topik Pub/Sub.
Setelah Anda mengaktifkan Compute Engine API, akun layanan default adalah akun layanan default Compute Engine (PROJECT_NUMBER-compute@developer.gserviceaccount.com
). Untuk tujuan pengujian, pemicu menggunakan akun layanan default ini untuk identitasnya.
gcloud eventarc triggers create TRIGGER_NAME \ --location=$REGION \ --destination-http-endpoint-uri=http://INSTANCE_NAME.$ZONE.c.PROJECT_ID.internal \ --network-attachment="projects/PROJECT_ID/regions/$REGION/networkAttachments/ATTACHMENT_NAME" \ --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \ --service-account=PROJECT_NUMBER-compute@developer.gserviceaccount.com
Ganti PROJECT_NUMBER
dengan Google Cloudnomor project Anda. Anda dapat menemukan nomor project di halaman
Selamat Datang
pada Konsol Google Cloud atau dengan menjalankan perintah berikut:
gcloud projects describe PROJECT_ID --format='value(projectNumber)'
Untuk informasi selengkapnya tentang cara mengonfigurasi pemicu, lihat Merutekan peristiwa ke endpoint HTTP internal dalam jaringan VPC.
Membuat dan melihat peristiwa topik Pub/Sub
Anda dapat membuat peristiwa dengan memublikasikan pesan ke topik Pub/Sub.
Cari dan tetapkan topik Pub/Sub sebagai variabel lingkungan:
export MY_TOPIC=$(gcloud eventarc triggers describe TRIGGER_NAME \ --location=$REGION \ --format='value(transport.pubsub.topic)')
Publikasikan pesan ke topik Pub/Sub untuk membuat peristiwa:
gcloud pubsub topics publish $MY_TOPIC --message "Hello World"
Pemicu Eventarc merutekan peristiwa ke endpoint HTTP internal di jaringan VPC Anda. Di terminal SSH dalam browser, isi peristiwa adalah output. Tampilannya akan terlihat seperti berikut:
Body: { "message": { "data": "SGVsbG8gV29ybGQ=", "messageId": "8795720366614192", "publishTime": "2023-08-26T13:09:48Z" } } 10.10.10.3 - - [26/Aug/2023 13:09:49] "POST / HTTP/1.1" 200 -
Perhatikan bahwa jika Anda mendekode nilai
data
dariSGVsbG8gV29ybGQ=
dari format Base64-nya, "Hello World" akan ditampilkan.
Anda telah berhasil men-deploy layanan penerima peristiwa ke endpoint HTTP internal di jaringan VPC, membuat pemicu Eventarc, membuat peristiwa dari Pub/Sub, dan mengonfirmasi bahwa peristiwa dirutekan seperti yang diharapkan oleh pemicu ke endpoint target.
Pembersihan
Agar tidak perlu membayar biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini, hapus project yang berisi resource tersebut, atau simpan project dan hapus setiap resource.
Menghapus project
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID
Menghapus resource satu per satu
- Hapus pemicu Eventarc:
gcloud eventarc triggers delete TRIGGER_NAME --location=$REGION
-
Hapus instance:
gcloud compute instances delete INSTANCE_NAME
- Hapus lampiran jaringan:
gcloud compute network-attachments delete ATTACHMENT_NAME --region=$REGION
- Hapus aturan Firewall:
gcloud compute firewall-rules delete RULE_NAME_ONE gcloud compute firewall-rules delete RULE_NAME_TWO
- Hapus subnet:
gcloud compute networks subnets delete SUBNET_NAME --region=$REGION
- Hapus jaringan VPC:
gcloud compute networks delete NETWORK_NAME