1. Pengantar
Dengan Cloud Run, Anda dapat menjalankan container stateless di lingkungan yang terkelola sepenuhnya. Layanan ini dibangun dari Knative open source, yang memungkinkan Anda memilih untuk menjalankan container secara terkelola sepenuhnya dengan Cloud Run, atau di cluster Google Kubernetes Engine dengan Cloud Run for Anthos.
Eventarc memudahkan untuk menghubungkan berbagai layanan (Cloud Run, Cloud Functions, Workfklows) dengan peristiwa dari berbagai sumber. Solusi ini memungkinkan Anda membangun arsitektur berbasis peristiwa tempat microservice dikaitkan dan didistribusikan secara longgar. Layanan ini juga menangani penyerapan, pengiriman, keamanan, otorisasi, dan penanganan error peristiwa untuk Anda sehingga meningkatkan ketangkasan developer dan ketahanan aplikasi.
Dalam codelab ini, Anda akan mempelajari Eventarc. Lebih khususnya, Anda akan memproses peristiwa dari Pub/Sub, Cloud Storage, dan Cloud Audit Logs dengan Eventarc dan meneruskannya ke layanan Cloud Run.
Yang akan Anda pelajari
- Visi Eventarc
- Menemukan peristiwa di Eventarc
- Membuat sink Cloud Run
- Membuat pemicu untuk Pub/Sub
- Membuat pemicu untuk Cloud Storage
- Membuat pemicu untuk Cloud Audit Logs
- Menjelajahi UI Eventarc
2. Visi Eventarc
Eventarc bertujuan untuk mengirimkan peristiwa dari berbagai sumber peristiwa Google, Google Cloud, dan pihak ketiga ke tujuan peristiwa Google Cloud.
Sumber Google Cloud | Sumber peristiwa yang merupakan produk milik Google Cloud |
Sumber Google | Sumber peristiwa yang merupakan produk milik Google seperti Gmail, Hangouts, Pengelolaan Android, dan lainnya |
Sumber kustom | Sumber peristiwa yang bukan produk milik Google dan dibuat oleh pengguna akhir itu sendiri |
Sumber pihak ketiga | Sumber peristiwa yang tidak dimiliki Google atau diproduksi pelanggan. Hal ini mencakup sumber peristiwa populer seperti Check Point CloudGuard, Datadog, ForgeRock, Lacework, dll. yang dimiliki dan dikelola oleh penyedia dan partner pihak ketiga. |
Peristiwa dinormalkan ke format CloudEvents v1.0 untuk interoperabilitas lintas layanan. CloudEvents adalah spesifikasi terbuka yang tidak terikat dengan vendor yang mendeskripsikan data peristiwa dalam format umum, sehingga memungkinkan interoperabilitas di seluruh layanan, platform, dan sistem.
3. 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.
Mulai Cloud Shell
Meskipun Google Cloud dapat dioperasikan dari jarak jauh menggunakan laptop Anda, dalam codelab ini, Anda akan menggunakan Google Cloud Shell, lingkungan command line yang berjalan di Cloud.
Dari GCP Console, klik ikon Cloud Shell di toolbar kanan atas:
Hanya perlu waktu beberapa saat untuk penyediaan dan terhubung ke lingkungan. Jika sudah selesai, Anda akan melihat tampilan seperti ini:
Mesin virtual ini berisi semua alat pengembangan yang Anda perlukan. Layanan ini menawarkan direktori beranda tetap sebesar 5 GB dan beroperasi di Google Cloud, sehingga sangat meningkatkan performa dan autentikasi jaringan. Semua pekerjaan Anda di lab ini dapat dilakukan hanya dengan browser.
Sebelum memulai
Di dalam Cloud Shell, pastikan project ID Anda sudah disiapkan:
PROJECT_ID=your-project-id gcloud config set project $PROJECT_ID
4. Men-deploy layanan Cloud Run
Deploy layanan Cloud Run untuk menerima peristiwa. Anda akan men-deploy container Hello Cloud Run yang mencatat konten CloudEvents.
Pertama, aktifkan layanan yang diperlukan untuk Cloud Run:
gcloud services enable run.googleapis.com
Deploy container hello ke Cloud Run:
REGION=us-central1 SERVICE_NAME=hello gcloud run deploy $SERVICE_NAME \ --allow-unauthenticated \ --image=gcr.io/cloudrun/hello \ --region=$REGION
Jika berhasil, command line akan menampilkan URL layanan. Anda dapat membuka URL layanan di jendela browser apa pun untuk memeriksa kembali bahwa layanan kini telah di-deploy.
5. Penemuan Peristiwa
Sebelum membuat pemicu di Eventarc, Anda dapat mencari tahu apa itu sumber peristiwa, jenis peristiwa yang dapat dimunculkan, dan cara mengonfigurasi pemicu untuk memakainya.
Untuk melihat daftar berbagai jenis peristiwa:
gcloud beta eventarc attributes types list NAME DESCRIPTION google.cloud.audit.log.v1.written Cloud Audit Log written google.cloud.pubsub.topic.v1.messagePublished Cloud Pub/Sub message published google.cloud.storage.object.v1.archived Cloud Storage: Sent when a live version of an (object versioned) object is archived or deleted. google.cloud.storage.object.v1.deleted Cloud Storage: Sent when an object has been permanently deleted. google.cloud.storage.object.v1.finalized Cloud Storage: Sent when a new object (or a new generation of an existing object). google.cloud.storage.object.v1.metadataUpdated Cloud Storage: Sent when the metadata of an existing object changes.
Untuk mendapatkan informasi selengkapnya tentang setiap jenis peristiwa:
gcloud beta eventarc attributes types describe google.cloud.audit.log.v1.written attributes: type,serviceName,methodName,resourceName description: 'Cloud Audit Log: Sent when a log is written.' name: google.cloud.audit.log.v1.written
Untuk melihat daftar layanan yang memunculkan jenis peristiwa tertentu:
gcloud beta eventarc attributes service-names list --type=google.cloud.audit.log.v1.written SERVICE_NAME DISPLAY_NAME accessapproval.googleapis.com Access Approval accesscontextmanager.googleapis.com Access Context Manager admin.googleapis.com Google Workspace Admin aiplatform.googleapis.com AI Platform (under Vertex AI) apigee.googleapis.com Apigee apigeeconnect.googleapis.com Apigee Connect ... workflows.googleapis.com Workflows
Untuk melihat daftar nama metode (sub-peristiwa) yang dapat dikeluarkan oleh setiap layanan:
gcloud beta eventarc attributes method-names list --type=google.cloud.audit.log.v1.written --service-name=workflows.googleapis.com METHOD_NAME google.cloud.workflows.v1.Workflows.CreateWorkflow google.cloud.workflows.v1.Workflows.DeleteWorkflow google.cloud.workflows.v1.Workflows.GetWorkflow google.cloud.workflows.v1.Workflows.ListWorkflows google.cloud.workflows.v1.Workflows.UpdateWorkflow google.cloud.workflows.v1beta.Workflows.CreateWorkflow google.cloud.workflows.v1beta.Workflows.DeleteWorkflow google.cloud.workflows.v1beta.Workflows.GetWorkflow google.cloud.workflows.v1beta.Workflows.ListWorkflows google.cloud.workflows.v1beta.Workflows.UpdateWorkflow
6. Membuat pemicu Pub/Sub
Salah satu cara untuk menerima peristiwa adalah melalui Cloud Pub/Sub. Semua aplikasi dapat memublikasikan pesan ke Pub/Sub dan pesan tersebut dapat dikirim ke Cloud Run melalui Eventarc.
Penyiapan
Sebelum membuat pemicu, aktifkan layanan yang diperlukan untuk Eventarc:
gcloud services enable eventarc.googleapis.com
Anda juga memerlukan akun layanan yang dapat digunakan oleh pemicu. Buat akun layanan:
SERVICE_ACCOUNT=eventarc-trigger-sa gcloud iam service-accounts create $SERVICE_ACCOUNT
Buat
Buat pemicu untuk memfilter peristiwa yang dipublikasikan ke topik Pub/Sub ke layanan Cloud Run yang di-deploy:
TRIGGER_NAME=trigger-pubsub gcloud eventarc triggers create $TRIGGER_NAME \ --destination-run-service=$SERVICE_NAME \ --destination-run-region=$REGION \ --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \ --location=$REGION \ --service-account=$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com
Tes
Pemicu Pub/Sub membuat topik di balik sampul. Mari kita cari dan tetapkan ke sebuah variabel:
TOPIC_ID=$(gcloud eventarc triggers describe $TRIGGER_NAME --location $REGION --format='value(transport.pubsub.topic)')
Gunakan gcloud
untuk memublikasikan pesan ke topik:
gcloud pubsub topics publish $TOPIC_ID --message="Hello World"
Layanan Cloud Run mencatat isi pesan masuk. Anda dapat melihatnya di bagian Logs pada instance Cloud Run Anda:
Membuat dengan topik Pub/Sub yang ada
Secara default, saat Anda membuat pemicu Pub/Sub, Eventarc akan membuat topik di balik layar untuk Anda gunakan sebagai topik transportasi antara aplikasi Anda dan layanan Cloud Run. Hal ini berguna untuk membuat pemicu yang didukung Pub/Sub dengan mudah dan cepat, tetapi terkadang Anda mungkin ingin menggunakan topik yang sudah ada. Eventarc memungkinkan Anda menentukan topik Pub/Sub yang ada dalam project yang sama dengan flag gcloud --transport-topic
.
Untuk melihat cara kerjanya, buat topik Pub/Sub untuk digunakan sebagai topik transportasi:
TOPIC_ID=eventarc-topic gcloud pubsub topics create $TOPIC_ID
Buat pemicu:
TRIGGER_NAME=trigger-pubsub-existing gcloud eventarc triggers create $TRIGGER_NAME \ --destination-run-service=$SERVICE_NAME \ --destination-run-region=$REGION \ --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \ --location=$REGION \ --transport-topic=projects/$PROJECT_ID/topics/$TOPIC_ID \ --service-account=$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com
Anda dapat menguji pemicu dengan mengirim pesan ke topik:
gcloud pubsub topics publish $TOPIC_ID --message="Hello again"
7. Membuat pemicu Cloud Storage
Pada langkah ini, Anda akan membuat pemicu untuk memproses peristiwa dari Cloud Storage.
Penyiapan
Pertama, buat bucket untuk menerima peristiwa dari:
BUCKET_NAME=eventarc-gcs-$PROJECT_ID gsutil mb -l $REGION gs://$BUCKET_NAME
Berikan peran eventarc.eventReceiver
agar akun layanan dapat digunakan dalam pemicu Cloud Storage:
gcloud projects add-iam-policy-binding $PROJECT_ID \ --role roles/eventarc.eventReceiver \ --member serviceAccount:$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com
Anda juga perlu menambahkan peran pubsub.publisher
ke akun layanan Cloud Storage untuk pemicu Cloud Storage:
SERVICE_ACCOUNT_STORAGE=$(gsutil kms serviceaccount -p $PROJECT_ID) gcloud projects add-iam-policy-binding $PROJECT_ID \ --member serviceAccount:$SERVICE_ACCOUNT_STORAGE \ --role roles/pubsub.publisher
Buat
Buat pemicu untuk mengarahkan peristiwa pembuatan file baru dari bucket ke layanan Anda:
TRIGGER_NAME=trigger-storage gcloud eventarc triggers create $TRIGGER_NAME \ --destination-run-service=$SERVICE_NAME \ --destination-run-region=$REGION \ --event-filters="type=google.cloud.storage.object.v1.finalized" \ --event-filters="bucket=$BUCKET_NAME" \ --location=$REGION \ --service-account=$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com
Tes
Buat daftar semua pemicu untuk mengonfirmasi bahwa pemicu berhasil dibuat:
gcloud eventarc triggers list
Upload file ke bucket Cloud Storage:
echo "Hello World" > random.txt gsutil cp random.txt gs://$BUCKET_NAME/random.txt
Jika Anda memeriksa log layanan Cloud Run di Cloud Console, Anda akan melihat peristiwa yang diterima:
8. Membuat pemicu Cloud Audit Logs
Meskipun pemicu Cloud Storage adalah cara yang lebih baik untuk memproses peristiwa Cloud Storage, pada langkah ini Anda membuat pemicu Cloud Audit Log untuk melakukan hal yang sama.
Penyiapan
Untuk menerima peristiwa dari layanan, Anda harus mengaktifkan Cloud Audit Logs. Dari Cloud Console, pilih IAM & Admin
dan Audit Logs
dari menu sebelah kiri atas. Dalam daftar layanan, centang Google Cloud Storage
:
Di sisi kanan, pastikan Admin
, Read
, dan Write
dipilih, lalu klik Save
:
Buat
Buat pemicu untuk mengarahkan peristiwa pembuatan file baru dari bucket ke layanan Anda:
TRIGGER_NAME=trigger-auditlog-storage gcloud eventarc triggers create $TRIGGER_NAME\ --destination-run-service=$SERVICE_NAME \ --destination-run-region=$REGION \ --event-filters="type=google.cloud.audit.log.v1.written" \ --event-filters="serviceName=storage.googleapis.com" \ --event-filters="methodName=storage.objects.create" \ --event-filters-path-pattern="resourceName=/projects/_/buckets/$BUCKET_NAME/objects/*" \ --location=$REGION \ --service-account=$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com
Tes
Pemicu Log Audit memerlukan sedikit waktu untuk melakukan inisialisasi. Anda dapat memeriksa apakah pemicu dibuat dengan mencantumkan semua pemicu:
gcloud eventarc triggers list
Anda akan melihat bahwa kolom ACTIVE
adalah Yes
:
NAME TYPE DESTINATION ACTIVE trigger-auditlog-storage google.cloud.audit.log.v1.written Cloud Run service: hello Yes
Upload file yang sama ke bucket Cloud Storage seperti yang Anda lakukan sebelumnya:
gsutil cp random.txt gs://$BUCKET_NAME/random.txt
Jika Anda memeriksa log layanan Cloud Run di Cloud Console, Anda akan melihat peristiwa yang diterima:
9. Menjelajahi UI Eventarc
Pada langkah ini, Anda akan menjelajahi UI Eventarc di Konsol Google Cloud. Di UI Eventarc, Anda bisa mendapatkan ringkasan tentang semua pemicu, mengedit dan menghapusnya, serta membuat pemicu baru dari Konsol Google Cloud.
Buka bagian Eventarc di Google Cloud:
Anda akan melihat daftar pemicu yang Anda buat sebelumnya:
Jika mengklik pemicu, Anda dapat melihat detail pemicu, mengedit, atau menghapusnya:
Anda juga dapat membuat pemicu baru dengan memilih Create trigger
dan mengisi detail pemicu:
10. Selamat!
Selamat, Anda telah menyelesaikan codelab.
Yang telah kita bahas
- Visi Eventarc
- Menemukan peristiwa di Eventarc
- Membuat sink Cloud Run
- Membuat pemicu untuk Pub/Sub
- Membuat pemicu untuk Cloud Storage
- Membuat pemicu untuk Cloud Audit Logs
- Menjelajahi UI Eventarc