Peristiwa Codelab Cloud Run for Anthos

1. Pengantar

6a5cf23c8e20491f.png

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.

Peristiwa untuk Cloud Run for Anthos memudahkan untuk menghubungkan layanan Cloud Run 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 Peristiwa untuk Cloud Run for Anthos. Lebih spesifiknya, Anda akan memproses peristiwa dari Cloud Pub/Sub, Log Audit, Cloud Storage, Cloud Scheduler, dan cara menghasilkan/menggunakan peristiwa kustom.

Yang akan Anda pelajari

  • Visi jangka panjang Acara untuk Cloud Run for Anthos
  • Status Peristiwa saat ini untuk Cloud Run for Anthos
  • Membuat sink Cloud Run
  • Membuat pemicu Peristiwa untuk Cloud Pub/Sub
  • Membuat Pemicu Peristiwa untuk Log Audit
  • Membuat pemicu Peristiwa untuk Cloud Storage
  • Membuat pemicu Peristiwa untuk Cloud Scheduler
  • Membuat dan menggunakan peristiwa kustom

2. Penglihatan Jangka Panjang

Saat kita mengadopsi arsitektur serverless, peristiwa menjadi bagian integral dari cara komunikasi microservice yang dipisahkan. Events for Cloud Run for Anthos menjadikan acara sebagai warga kelas satu dari penawaran Cloud Run for Anthos, sehingga mudah untuk membangun aplikasi serverless berbasis peristiwa.

Event untuk Cloud Run for Anthos memungkinkan pengiriman peristiwa asinkron yang andal, aman, dan skalabel dari sumber peristiwa terpaket atau yang dibuat aplikasi ke konsumen di dalam cluster dan di luar cluster.

ce389bcafba6d669.png

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 ini dapat berupa Sumber Knative yang dikembangkan pengguna atau aplikasi lain yang berjalan di cluster yang dapat menghasilkan Peristiwa Cloud.

Sumber pihak ketiga

Sumber peristiwa yang bukan milik Google atau milik pengguna akhir. Hal ini mencakup sumber peristiwa populer seperti GitHub, SAP, Datadog, Pagerduty, dll. yang dimiliki dan dikelola oleh penyedia pihak ketiga, partner, atau komunitas OSS.

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.

Peristiwa untuk Cloud Run sesuai dengan Knative Eventing dan memungkinkan portabilitas container ke dan dari implementasi berbasis Knative lainnya. Hal ini memberikan framework yang konsisten dan agnostik cloud untuk produser peristiwa secara deklaratif dengan konsumen peristiwa.

3. Status saat ini

Pratinjau ini adalah versi pertama yang memberikan serangkaian fungsi jangka panjang awal.

b1dd0d8a73185b95.png

Agar pengguna dapat membangun aplikasi serverless berbasis peristiwa, fokus awal kami ada dua:

  1. Menyediakan ekosistem Sumber Google Cloud yang luas yang memungkinkan layanan Cloud Run di cluster Anthos untuk bereaksi terhadap peristiwa dari layanan Google Cloud.
  • Pada awalnya, peristiwa dari Sumber Google Cloud dikirimkan melalui Cloud Audit Logs (CAL), yang memungkinkan berbagai sumber peristiwa. Latensi dan ketersediaan pengiriman peristiwa dari sumber ini terikat dengan yang ada di Log Audit Cloud. Setiap kali peristiwa dari sumber Google Cloud dipublikasikan, entri Cloud Audit Log yang sesuai akan dibuat.
  • Selain Cloud Audit Logs, ada dukungan kelas satu untuk menggunakan peristiwa dari Cloud Storage, Cloud Pub/Sub, dan Cloud Scheduler. Kami akan terus memperluas ekosistem sumber ini dengan lebih banyak sumber terbaik berdasarkan masukan dan perjalanan pengguna.
  1. Aktifkan aplikasi dan layanan pengguna akhir untuk memunculkan peristiwa kustom dengan memublikasikan ke URL Broker lokal cluster dengan cakupan namespace.

Mekanisme pengiriman yang mendasarinya menggunakan topik dan langganan Cloud Pub/Sub yang terlihat di halaman pelanggan project secara terprogram. Oleh karena itu, fitur ini memberikan jaminan pengiriman yang sama dengan Cloud Pub/Sub.

Pemicu Peristiwa menyediakan cara untuk berlangganan peristiwa sehingga peristiwa yang cocok dengan filter pemicu dikirim ke tujuan (atau sink) yang ditunjuk oleh Pemicu.

Semua peristiwa ditayangkan dalam format Peristiwa Cloud v1.0 untuk interoperabilitas lintas layanan.

Kami akan terus memberikan lebih banyak nilai secara berulang, hingga ke tahap GA dan seterusnya.

4. Penyiapan dan Persyaratan

Penyiapan lingkungan mandiri

  1. Login ke Cloud Console lalu buat project baru atau gunakan kembali project yang sudah ada. Jika belum memiliki akun Gmail atau Google Workspace, Anda harus membuatnya.

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

  • Project Name adalah nama tampilan Anda untuk project ini. Selama Anda mengikuti konvensi penamaannya, Anda dapat menggunakan apa pun yang Anda inginkan dan 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 membuat string unik; biasanya Anda tidak peduli tentang apa itu. Di sebagian besar codelab, Anda harus mereferensikan Project ID (dan biasanya diidentifikasi sebagai PROJECT_ID). Jadi, jika tidak suka, buat codelab acak lainnya, atau, Anda dapat mencobanya sendiri dan melihat apakah tersedia. Kemudian akan "dibekukan" setelah proyek dibuat.
  1. Selanjutnya, Anda harus mengaktifkan penagihan di Cloud Console untuk menggunakan resource Google Cloud.

Menjalankan operasi dalam codelab ini seharusnya tidak memerlukan banyak biaya, bahkan mungkin tidak sama sekali. Pastikan untuk mengikuti petunjuk yang ada di bagian "Membersihkan" yang memberi tahu Anda cara menonaktifkan resource sehingga tidak menimbulkan penagihan di luar tutorial ini. 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:

bce75f34b2c53987.png

Hanya perlu waktu beberapa saat untuk penyediaan dan terhubung ke lingkungan. Jika sudah selesai, Anda akan melihat tampilan seperti ini:

f6ef2b5f13479f3a.png

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.

5. Aktifkan API, setel zona dan platform

Menyiapkan project ID dan menginstal komponen alfa

Di dalam Cloud Shell, GOOGLE_CLOUD_PROJECT seharusnya sudah ditetapkan ke project ID Anda. Jika belum, pastikan nilai ini ditetapkan dan gcloud Anda dikonfigurasi dengan ID project tersebut:

export GOOGLE_CLOUD_PROJECT=your-project-id
gcloud config set project ${GOOGLE_CLOUD_PROJECT}

Pastikan komponen gcloud untuk alfa di terinstal:

gcloud components install alpha

Mengaktifkan API

Aktifkan semua layanan yang diperlukan:

gcloud services enable cloudapis.googleapis.com 
gcloud services enable container.googleapis.com 
gcloud services enable containerregistry.googleapis.com
gcloud services enable cloudbuild.googleapis.com

Menetapkan zona dan platform

Sebelum membuat cluster GKE dengan Peristiwa Cloud Run, tetapkan nama cluster, zona, dan platform. Sebagai contoh, di sini kita menetapkan nama dan zona ke events-cluster dan europe-west1-b dan platform adalah gke,

Dalam Cloud Shell:

export CLUSTER_NAME=events-cluster
export CLUSTER_ZONE=europe-west1-b

gcloud config set run/cluster ${CLUSTER_NAME}
gcloud config set run/cluster_location ${CLUSTER_ZONE}
gcloud config set run/platform gke

Anda dapat memeriksa apakah konfigurasi telah disetel:

gcloud config list

...
[run]
cluster = events-cluster
cluster_location = europe-west1-b
platform = gke

6. Membuat cluster GKE dengan Peristiwa Cloud Run

Buat cluster GKE yang menjalankan Kubernetes >= 1.15.9-gke.26, dengan add-on berikut yang diaktifkan: CloudRun, HttpLoadBalancing, HorizontalPodAutoscaling:

gcloud beta container clusters create ${CLUSTER_NAME} \
  --addons=HttpLoadBalancing,HorizontalPodAutoscaling,CloudRun \
  --machine-type=n1-standard-4 \
  --enable-autoscaling --min-nodes=3 --max-nodes=10 \
  --no-issue-client-certificate --num-nodes=3 --image-type=cos \
  --enable-stackdriver-kubernetes \
  --scopes=cloud-platform,logging-write,monitoring-write,pubsub \
  --zone ${CLUSTER_ZONE} \
  --release-channel=rapid

7. Menyiapkan Peristiwa Cloud Run (Bidang Kontrol)

Peristiwa Cloud Run memiliki Bidang Kontrol dan Bidang Data yang perlu disiapkan secara terpisah. Untuk menyiapkan Bidang Kontrol:

Dalam Cloud Shell:

gcloud beta events init 

Tindakan ini akan menginisialisasi eventing serta membuat sejumlah akun layanan yang diperlukan. Pastikan Anda memilih 'Ya' saat diminta untuk membuat akun layanan.

Pada tahap ini, bidang kontrol harus diinisialisasi dengan benar. Anda akan melihat empat pod dengan

Status Running, 2 (controller-xxx-xxx dan webhook-xxx-xxx) di namespace cloud-run-events dan 2 (eventing-controller-xxx-xxx dan eventing-webhook-xxx-xxx) di namespace knative-eventing. Anda dapat memeriksanya dengan menjalankan perintah berikut:

kubectl get pods -n cloud-run-events

NAME                         READY   STATUS    RESTARTS   AGE
controller-9cc679b67-2952n   1/1     Running   0          22s
webhook-8576c4cfcb-dhz82     1/1     Running   0          16m
kubectl get pods -n knative-eventing

NAME                                   READY   STATUS    RESTARTS   AGE
eventing-controller-77f46f6cf8-kj9ck   1/1     Running   0          17m
eventing-webhook-5bc787965f-hcmwg      1/1     Running   0          17m

8. Menyiapkan Peristiwa Cloud Run (Paket Data)

Selanjutnya adalah menyiapkan bidang data di namespace pengguna. Tindakan ini akan membuat Broker dengan izin yang sesuai untuk membaca/menulis dari/ke Pub/Sub.

Di dalam Cloud Shell, tetapkan variabel lingkungan NAMESPACE untuk namespace yang ingin digunakan untuk objek Anda. Anda dapat menetapkannya ke default jika ingin menggunakan namespace default seperti yang ditunjukkan di bawah ini:

export NAMESPACE=default

Perhatikan bahwa jika namespace yang ditentukan tidak ada (misalnya namespace bukan setelan default), Anda harus membuatnya:

kubectl create namespace ${NAMESPACE}

Lakukan inisialisasi namespace dengan secret default:

gcloud beta events namespaces init ${NAMESPACE} --copy-default-secret 

Buat broker default di namespace:

gcloud beta events brokers create default --namespace ${NAMESPACE}

Periksa apakah pialang sudah dibuat. Perhatikan bahwa mungkin perlu waktu beberapa detik hingga broker siap:

kubectl get broker -n ${NAMESPACE}

NAME      READY   REASON   URL
default   True             http://default-brokercell-ingress.cloud-run-events.svc.cluster.local/default/default

9. Penemuan Peristiwa

Anda dapat mengetahui apa saja sumber terdaftar, jenis peristiwa yang dapat dimunculkan, dan cara mengonfigurasi pemicu untuk memakainya.

Untuk melihat daftar berbagai jenis peristiwa:

gcloud beta events types list

Untuk mendapatkan informasi selengkapnya tentang setiap jenis peristiwa:

gcloud beta events types describe google.cloud.pubsub.topic.v1.messagePublished

10. Membuat Sink Cloud Run

Sebagai sink peristiwa, deploy layanan Cloud Run yang mencatat konten CloudEvent yang diterimanya ke dalam log.

Anda dapat menggunakan event_display Knative yang sudah dikompilasi dan image container-nya yang dibuat sebagai bagian dari rilis Knative. Anda dapat melihat detail image container di event-display.yaml:

...
containers:
  - image: gcr.io/knative-releases/knative.dev/eventing-contrib/cmd/event_display@sha256:8da2440b62a5c077d9882ed50397730e84d07037b1c8a3e40ff6b89c37332b27

Men-deploy ke Cloud Run

Deploy aplikasi dalam container Anda ke Cloud Run:

export SERVICE_NAME=event-display
gcloud run deploy ${SERVICE_NAME} \
  --namespace=${NAMESPACE} \
  --image gcr.io/knative-releases/knative.dev/eventing-contrib/cmd/event_display@sha256:8da2440b62a5c077d9882ed50397730e84d07037b1c8a3e40ff6b89c37332b27

Jika berhasil, command line akan menampilkan URL layanan. Sekarang Anda dapat melihat container yang telah di-deploy dengan membuka URL layanan di jendela browser apa pun.

11. Membuat pemicu Peristiwa untuk Cloud Pub/Sub

Salah satu cara untuk menerima peristiwa adalah melalui Cloud Pub/Sub. Aplikasi kustom dapat memublikasikan pesan ke Cloud Pub/Sub dan pesan tersebut dapat dikirimkan ke sink Google Cloud Run melalui Events for Cloud Run.

Membuat topik

Pertama, buat topik Cloud Pub/Sub. Anda dapat mengganti TOPIC_ID dengan nama topik unik yang Anda inginkan:

export TOPIC_ID=cr-gke-topic
gcloud pubsub topics create ${TOPIC_ID}

Membuat pemicu

Sebelum membuat pemicu, dapatkan detail selengkapnya tentang parameter yang Anda perlukan untuk membuat pemicu peristiwa dari Cloud Pub/Sub:

gcloud beta events types describe google.cloud.pubsub.topic.v1.messagePublished

Buat pemicu untuk memfilter peristiwa yang dipublikasikan ke topik Cloud Pub/Sub ke layanan Cloud Run yang telah di-deploy:

gcloud beta events triggers create trigger-pubsub \
  --namespace ${NAMESPACE} \
  --target-service ${SERVICE_NAME} \
  --type google.cloud.pubsub.topic.v1.messagePublished \
  --parameters topic=${TOPIC_ID}

Menguji pemicu

Anda dapat memeriksa apakah pemicu dibuat dengan mencantumkan semua pemicu:

gcloud beta events triggers list

Anda mungkin perlu menunggu hingga 10 menit hingga pembuatan pemicu diterapkan dan mulai memfilter peristiwa.

Untuk menyimulasikan pengiriman pesan aplikasi kustom, Anda dapat menggunakan gcloud untuk mengaktifkan peristiwa:

gcloud pubsub topics publish ${TOPIC_ID} --message="Hello there"

Sink Cloud Run yang kita buat mencatat isi pesan masuk. Anda dapat melihatnya di bagian Logs pada instance Cloud Run Anda:

9526909a06c6d4f4.pngS

Perhatikan bahwa "Halo semuanya" akan dienkode dengan base64 seperti yang dikirim oleh Pub/Sub dan Anda harus mendekodenya jika ingin melihat pesan asli terkirim.

Menghapus pemicu

Secara opsional, Anda dapat menghapus pemicu setelah pengujian selesai.

gcloud beta events triggers delete trigger-pubsub --namespace ${NAMESPACE}

12. Membuat Pemicu Peristiwa untuk Log Audit

Anda akan menyiapkan pemicu untuk memproses peristiwa dari Log Audit. Lebih spesifiknya, Anda akan mencari peristiwa pembuatan topik Pub/Sub di Log Audit.

Mengaktifkan Log Audit

Untuk menerima peristiwa dari layanan, Anda harus mengaktifkan log audit. Dari Cloud Console, pilih IAM & Admin > Audit Logs dari menu sebelah kiri atas. Dalam daftar layanan, periksa Google Cloud Pub/Sub:

97bd4b57c6a05fcc.pngS

Di sisi kanan, pastikan Admin, Baca, dan Tulis dipilih. Klik simpan:

bec31b4f35fbcea.png

Menguji Log Audit

Untuk mempelajari cara mengidentifikasi parameter yang Anda perlukan untuk menyiapkan pemicu yang sebenarnya, lakukan operasi yang sebenarnya.

Misalnya, buat topik Pub/Sub:

gcloud pubsub topics create cre-gke-topic1

Sekarang, mari kita lihat jenis log audit yang dibuat oleh pembaruan ini. Dari Cloud Console, pilih Logging > Logs Viewer dari menu sebelah kiri atas.

Di bawah Query Builder, pilih Cloud Pub/Sub Topic dan klik Add:

f5c634057e935bc6.png

Setelah menjalankan kueri, Anda akan melihat log untuk topik Pub/Sub dan salah satunya seharusnya adalah google.pubsub.v1.Publisher.CreateTopic:

b083cce219773d24.png

Perhatikan serviceName, methodName, dan resourceName. Kita akan menggunakannya saat membuat pemicu.

Membuat pemicu

Sekarang Anda siap untuk membuat pemicu peristiwa untuk Log Audit.

Anda bisa mendapatkan detail selengkapnya tentang parameter yang diperlukan untuk membuat pemicu peristiwa dari sumber Google Cloud dengan menjalankan perintah berikut:

gcloud beta events types describe google.cloud.audit.log.v1.written

Buat pemicu dengan filter yang tepat:

gcloud beta events triggers create trigger-auditlog \
  --namespace ${NAMESPACE} \
  --target-service ${SERVICE_NAME} \
  --type=google.cloud.audit.log.v1.written \
  --parameters serviceName=pubsub.googleapis.com \
  --parameters methodName=google.pubsub.v1.Publisher.CreateTopic

Menguji pemicu

Buat daftar semua pemicu untuk mengonfirmasi bahwa pemicu berhasil dibuat:

gcloud beta events triggers list

Tunggu hingga 10 menit hingga pembuatan pemicu disebarluaskan dan mulai memfilter peristiwa. Setelah siap, kode ini akan memfilter peristiwa yang dibuat dan mengirimkannya ke layanan. Sekarang Anda siap untuk mengaktifkan peristiwa.

Buat topik Pub/Sub lain, seperti yang Anda lakukan sebelumnya:

gcloud pubsub topics create cre-gke-topic2

Jika Anda memeriksa log layanan Cloud Run di Cloud Console, Anda akan melihat peristiwa yang diterima:

aff3b2e7ad05c75d.png

Menghapus pemicu dan topik

Secara opsional, Anda dapat menghapus pemicu setelah pengujian selesai:

gcloud beta events triggers delete trigger-auditlog

Hapus juga topik:

gcloud pubsub topics delete cre-gke-topic1 cre-gke-topic2

13. Membuat pemicu Peristiwa untuk Cloud Storage

Anda akan menyiapkan pemicu untuk memproses peristiwa dari Cloud Storage.

Membuat bucket

Pertama, buat bucket Cloud Storage di region yang sama dengan layanan Cloud Run yang di-deploy. Anda dapat mengganti BUCKET_NAME dengan nama unik yang Anda inginkan:

export BUCKET_NAME=[new bucket name]
export REGION=europe-west1

gsutil mb -p $(gcloud config get-value project) \
  -l $REGION \
  gs://$BUCKET_NAME/

Menyiapkan izin Cloud Storage

Sebelum membuat pemicu, Anda perlu memberikan akun layanan default untuk Cloud Storage izin untuk melakukan publikasi ke Pub/Sub.

Pertama, Anda perlu menemukan Akun Layanan yang digunakan Cloud Storage untuk melakukan publikasi ke Pub/Sub. Anda dapat menggunakan langkah-langkah yang diuraikan dalam Mendapatkan akun layanan Cloud Storage untuk mendapatkan akun layanan atau menggunakan perintah berikut:

curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://storage.googleapis.com/storage/v1/projects/$(gcloud config get-value project)/serviceAccount"

Akun layanan harus tercantum di email_address.

Asumsikan akun layanan yang Anda temukan di atas adalah service-XYZ@gs-project-accounts.iam.gserviceaccount.com, tetapkan ini ke variabel lingkungan:

export GCS_SERVICE_ACCOUNT=service-XYZ@gs-project-accounts.iam.gserviceaccount.com

Kemudian, berikan hak ke Akun Layanan tersebut untuk memublikasikan ke Pub/Sub:

gcloud projects add-iam-policy-binding ${GOOGLE_CLOUD_PROJECT} \
  --member=serviceAccount:${GCS_SERVICE_ACCOUNT} \
  --role roles/pubsub.publisher

Membuat pemicu

Sekarang Anda siap membuat pemicu peristiwa untuk peristiwa Cloud Storage.

Anda bisa mendapatkan detail selengkapnya tentang parameter yang diperlukan untuk membuat pemicu:

gcloud beta events types describe google.cloud.storage.object.v1.finalized

Buat pemicu dengan filter yang tepat:

gcloud beta events triggers create trigger-storage \
  --namespace ${NAMESPACE} \
  --target-service ${SERVICE_NAME} \
  --type=google.cloud.storage.object.v1.finalized \
  --parameters bucket=${BUCKET_NAME}

Menguji pemicu

Buat daftar semua pemicu untuk mengonfirmasi bahwa pemicu berhasil dibuat:

gcloud beta events triggers list

Tunggu hingga 10 menit hingga pembuatan pemicu disebarluaskan dan mulai memfilter peristiwa. Setelah siap, kode ini akan memfilter peristiwa yang dibuat dan mengirimkannya ke layanan.

Sekarang Anda siap untuk mengaktifkan peristiwa.

Upload file acak 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:

aff3b2e7ad05c75d.png

Menghapus pemicu

Secara opsional, Anda dapat menghapus pemicu setelah pengujian selesai:

gcloud beta events triggers delete trigger-storage

14. Membuat pemicu Peristiwa untuk Cloud Scheduler

Anda akan menyiapkan pemicu untuk memproses peristiwa dari Cloud Scheduler.

Membuat aplikasi App Engine

Cloud Scheduler saat ini memerlukan pengguna untuk membuat aplikasi App Engine. Pilih Lokasi App Engine dan buat aplikasi:

export APP_ENGINE_LOCATION=europe-west
gcloud app create --region=${APP_ENGINE_LOCATION}

Buat pemicu

Anda bisa mendapatkan detail selengkapnya tentang parameter yang diperlukan untuk membuat pemicu peristiwa dari sumber Google Cloud dengan menjalankan perintah berikut:

gcloud beta events types describe google.cloud.scheduler.job.v1.executed

Pilih lokasi Cloud Scheduler untuk membuat penjadwal:

export SCHEDULER_LOCATION=europe-west1

Buat Pemicu yang akan membuat tugas yang akan dieksekusi setiap menit di Google Cloud Scheduler dan panggil layanan target:

gcloud beta events triggers create trigger-scheduler \
  --namespace ${NAMESPACE} \
  --target-service=${SERVICE_NAME} \
  --type=google.cloud.scheduler.job.v1.executed \
  --parameters location=${SCHEDULER_LOCATION} \
  --parameters schedule="* * * * *" \
  --parameters data="trigger-scheduler-data"

Menguji pemicu

Buat daftar semua pemicu untuk mengonfirmasi bahwa pemicu berhasil dibuat:

gcloud beta events triggers list

Tunggu hingga 10 menit hingga pembuatan pemicu disebarluaskan dan mulai memfilter peristiwa. Setelah siap, kode ini akan memfilter peristiwa yang dibuat dan mengirimkannya ke layanan.

Jika memeriksa log layanan Cloud Run di Cloud Console, Anda akan melihat peristiwa yang diterima.

Menghapus pemicu

Secara opsional, Anda dapat menghapus pemicu setelah pengujian selesai:

gcloud beta events triggers delete trigger-scheduler

15. Peristiwa Kustom (Endpoint Broker)

Di bagian codelab ini, Anda akan menghasilkan dan menggunakan peristiwa kustom menggunakan Broker.

Membuat Pod Curl untuk Menghasilkan Peristiwa

Peristiwa biasanya dibuat secara terprogram. Namun, pada langkah ini, Anda akan menggunakan curl untuk mengirim masing-masing peristiwa secara manual dan melihat bagaimana peristiwa tersebut diterima oleh konsumen yang tepat.

Untuk membuat Pod yang bertindak sebagai produser peristiwa, jalankan perintah berikut:

cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: Pod
metadata:
  labels:
    run: curl
  name: curl
  namespace: $NAMESPACE
spec:
  containers:
  - image: radial/busyboxplus:curl
    imagePullPolicy: IfNotPresent
    name: curl
    resources: {}
    stdin: true
    terminationMessagePath: /dev/termination-log
    terminationMessagePolicy: File
    tty: true
EOF

Memastikan Pod curl berfungsi dengan benar. Anda akan melihat pod bernama curl dengan Status=Running:

kubectl get pod curl -n ${NAMESPACE}

Membuat pemicu

Anda akan membuat Pemicu dengan filter pada jenis CloudEvents tertentu (dalam hal ini alpha-type) yang akan Anda munculkan. Perhatikan bahwa pemfilteran pencocokan persis pada sejumlah atribut CloudEvents serta ekstensi didukung. Jika filter Anda menetapkan beberapa atribut, peristiwa harus memiliki semua atribut agar Pemicu memfilternya. Sebaliknya, jika Anda tidak menentukan filter, semua peristiwa akan diterima di Layanan Anda.

Buat pemicu:

gcloud beta events triggers create trigger-custom \
  --namespace ${NAMESPACE} \
  --target-service ${SERVICE_NAME} \
  --type=alpha-type \
  --custom-type

Menguji pemicu

Buat daftar semua pemicu untuk mengonfirmasi bahwa pemicu berhasil dibuat:

gcloud beta events triggers list

Buat peristiwa dengan mengirimkan permintaan HTTP kepada Broker. Ingatkan diri Anda URL Broker dengan menjalankan perintah berikut:

kubectl get brokers -n ${NAMESPACE}

NAME      READY   REASON   URL
default   True             http://default-broker.<NAMESPACE>.svc.cluster.local

Jalankan SSH ke pod curl yang Anda buat sebelumnya:

kubectl --namespace ${NAMESPACE} attach curl -it

Anda telah menjalankan SSH ke pod, dan sekarang dapat membuat permintaan HTTP. Perintah yang serupa dengan yang di bawah ini akan muncul:

Defaulting container name to curl.
Use 'kubectl describe pod/curl -n default' to see all of the containers in this pod.
If you don't see a command prompt, try pressing enter.
[ root@curl:/ ]$

Membuat peristiwa:

curl -v "<BROKER-URL>" \
-X POST \
-H "Ce-Id: my-id" \
-H "Ce-Specversion: 1.0" \
-H "Ce-Type: alpha-type" \
-H "Ce-Source: my-source" \
-H "Content-Type: application/json" \
-d '{"msg":"send-cloudevents-to-broker"}'

Jika acara telah diterima, Anda akan menerima respons HTTP 202 Accepted. Keluar dari sesi SSH dengan Ctrl + D

Verifikasi bahwa peristiwa yang dipublikasikan telah dikirim dengan melihat log Layanan Cloud Run:

kubectl logs --selector serving.knative.dev/service=$SERVICE_NAME \
 -c user-container -n $NAMESPACE --tail=100

Menghapus pemicu

Secara opsional, Anda dapat menghapus pemicu setelah pengujian selesai:

gcloud beta events triggers delete trigger-custom

16. Selamat!

Selamat, Anda telah menyelesaikan codelab.

Yang telah kita bahas

  • Visi jangka panjang Acara untuk Cloud Run for Anthos
  • Status Peristiwa saat ini untuk Cloud Run for Anthos
  • Membuat sink Cloud Run
  • Membuat pemicu Peristiwa untuk Cloud Pub/Sub
  • Membuat Pemicu Peristiwa untuk Log Audit
  • Membuat pemicu Peristiwa untuk Cloud Storage
  • Membuat pemicu Peristiwa untuk Cloud Scheduler
  • Membuat dan menggunakan peristiwa kustom