Peristiwa Codelab Cloud Run for Anthos

1. Pengantar

6a5cf23c8e20491f.png

Cloud Run memungkinkan Anda menjalankan container stateless di lingkungan yang terkelola sepenuhnya. Dibuat dari Knative open source, Anda dapat memilih untuk menjalankan container secara terkelola sepenuhnya dengan Cloud Run, atau di cluster Google Kubernetes Engine dengan Cloud Run for Anthos.

Events for Cloud Run for Anthos memudahkan Anda menghubungkan layanan Cloud Run dengan peristiwa dari berbagai sumber. Layanan ini memungkinkan Anda membangun arsitektur berbasis peristiwa yang microservicenya dikaitkan secara longgar dan didistribusikan. Layanan ini juga menangani penyerapan, pengiriman, keamanan, otorisasi, dan penanganan error untuk Anda, sehingga meningkatkan ketangkasan developer dan ketahanan aplikasi.

Dalam codelab ini, Anda akan mempelajari Events for Cloud Run for Anthos. Lebih khusus lagi, Anda akan memantau peristiwa dari Cloud Pub/Sub, Log Audit, Cloud Storage, Cloud Scheduler, dan cara membuat/menggunakan peristiwa kustom.

Yang akan Anda pelajari

  • Visi jangka panjang Events for Cloud Run for Anthos
  • Status Events for Cloud Run for Anthos saat ini
  • 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. Visi Jangka Panjang

Saat kita mengadopsi arsitektur serverless, peristiwa menjadi bagian integral dari cara microservice yang tidak terikat berkomunikasi. Events for Cloud Run for Anthos menjadikan peristiwa sebagai bagian penting dari penawaran Cloud Run for Anthos, sehingga memudahkan pembuatan aplikasi tanpa server berbasis peristiwa.

Events for Cloud Run for Anthos memungkinkan pengiriman peristiwa asinkron yang andal, aman, dan skalabel dari sumber peristiwa yang dikemas atau dibuat aplikasi ke konsumen di dalam 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 Cloud Event.

Sumber pihak ketiga

Sumber peristiwa yang bukan milik Google maupun 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 dinormalisasi ke format CloudEvents v1.0 untuk interoperabilitas lintas layanan. CloudEvents adalah spesifikasi terbuka yang netral terhadap vendor yang mendeskripsikan data peristiwa dalam format umum, sehingga memungkinkan interoperabilitas di seluruh layanan, platform, dan sistem.

Events for Cloud Run sesuai dengan Knative Eventing dan memungkinkan portabilitas container ke dan dari penerapan berbasis Knative lainnya. Hal ini memberikan framework yang konsisten dan agnostik terhadap cloud untuk menghubungkan produsen peristiwa dengan konsumen peristiwa secara deklaratif.

3. Status saat ini

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

b1dd0d8a73185b95.png

Untuk memungkinkan pengguna membuat aplikasi serverless berbasis peristiwa, fokus awal kami adalah dua hal:

  1. Menyediakan ekosistem luas Sumber Google Cloud yang memungkinkan layanan Cloud Run di cluster Anthos bereaksi terhadap peristiwa dari layanan Google Cloud.
  • Pada awalnya, peristiwa dari Sumber Google Cloud dikirimkan melalui Cloud Audit Logs (CAL), sehingga memungkinkan berbagai sumber peristiwa. Latensi dan ketersediaan pengiriman peristiwa dari sumber ini terkait dengan latensi dan ketersediaan Cloud Audit Logs. 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 kelas satu seiring kami mempelajari lebih lanjut perjalanan dan masukan pengguna.
  1. Mengizinkan aplikasi dan layanan pengguna akhir memancarkan peristiwa kustom dengan memublikasikan ke URL Broker lokal cluster yang tercakup dalam namespace.

Mekanisme pengiriman yang mendasarinya menggunakan topik dan langganan Cloud Pub/Sub yang terlihat di project pelanggan. 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 dikirimkan ke tujuan (atau sink) yang ditunjuk oleh Pemicu.

Semua peristiwa dikirimkan dalam format Cloud Events v1.0 untuk interoperabilitas lintas layanan.

Kami akan terus memberikan nilai lebih secara iteratif hingga ketersediaan umum 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

  • Nama Project 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). Konsol Cloud otomatis membuat string unik; biasanya Anda tidak mementingkan kata-katanya. Di sebagian besar codelab, Anda harus merujuk Project ID (dan biasanya diidentifikasi sebagai PROJECT_ID), jadi jika tidak suka, buat ID acak lainnya, atau Anda dapat mencoba ID Anda sendiri dan melihat apakah ID tersebut tersedia. Kemudian file akan "dibekukan" setelah project 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 Konsol GCP, 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. Mengaktifkan API, menetapkan zona dan platform

Menyiapkan ID project dan menginstal komponen alfa

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

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

Pastikan komponen gcloud untuk alpha telah diinstal:

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 Cloud Run Events, tetapkan nama cluster, zona, dan platform. Sebagai contoh, di sini kita menyetel nama dan zona ke events-cluster dan europe-west1-b, serta platformnya 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 ditetapkan:

gcloud config list

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

6. Membuat cluster GKE dengan Cloud Run Events

Buat cluster GKE yang menjalankan Kubernetes >= 1.15.9-gke.26, dengan add-on berikut 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 (Control Plane)

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

Dalam Cloud Shell:

gcloud beta events init 

Tindakan ini akan melakukan inisialisasi eventing dan juga 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

Running status, 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 (Data Plane)

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 Anda gunakan untuk objek Anda. Anda dapat menyetelnya ke default jika ingin menggunakan namespace default seperti yang ditunjukkan di bawah:

export NAMESPACE=default

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

kubectl create namespace ${NAMESPACE}

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}

Pastikan broker telah 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 Acara

Anda dapat menemukan sumber terdaftar, jenis peristiwa yang dapat dimunculkan, dan cara mengonfigurasi pemicu untuk menggunakannya.

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.

Anda dapat menggunakan event_display Knative yang sudah dikompilasi dan image containernya dibangun 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

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 ini dapat dikirimkan ke sink Google Cloud Run melalui Peristiwa untuk 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 untuk 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 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 telah dibuat dengan mendaftar semua pemicu:

gcloud beta events triggers list

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

Untuk menyimulasikan aplikasi kustom yang mengirim pesan, Anda dapat menggunakan gcloud untuk memicu peristiwa:

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

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

9526909a06c6d4f4.png

Perhatikan bahwa "Hello there" akan dienkode base64 saat dikirim oleh Pub/Sub dan Anda harus mendekodenya jika ingin melihat pesan asli yang dikirim.

Menghapus pemicu

Secara opsional, Anda dapat menghapus pemicu setelah selesai menguji.

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

12. Membuat pemicu Peristiwa untuk Log Audit

Anda akan menyiapkan pemicu untuk memantau peristiwa dari Log Audit. Lebih khusus lagi, Anda akan mencari peristiwa pembuatan topik Pub/Sub di Log Audit.

Mengaktifkan Log Audit

Untuk menerima peristiwa dari suatu layanan, Anda perlu mengaktifkan log audit. Dari Konsol Cloud, pilih IAM & Admin > Audit Logs dari menu kiri atas. Dalam daftar layanan, centang Google Cloud Pub/Sub:

97bd4b57c6a05fcc.png

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

bec31b4f35fbcea.png

Menguji Log Audit

Untuk mempelajari cara mengidentifikasi parameter, Anda perlu menyiapkan pemicu yang sebenarnya dan melakukan operasi yang sebenarnya.

Misalnya, buat topik Pub/Sub:

gcloud pubsub topics create cre-gke-topic1

Sekarang, mari kita lihat jenis log audit yang dihasilkan oleh update ini. Dari Konsol Cloud, pilih Logging > Logs Viewer dari menu kiri atas.

Di bagian Query Builder,, pilih Cloud Pub/Sub Topic, lalu Klik Add:

f5c634057e935bc6.png

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

b083cce219773d24.png

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

Membuat pemicu

Sekarang Anda siap membuat pemicu peristiwa untuk Log Audit.

Anda bisa mendapatkan detail selengkapnya tentang parameter yang Anda perlukan untuk membuat pemicu untuk 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

Daftar semua pemicu untuk mengonfirmasi bahwa pemicu berhasil dibuat:

gcloud beta events triggers list

Tunggu hingga 10 menit sebelum pembuatan pemicu dipropagasi dan mulai memfilter peristiwa. Setelah siap, peristiwa create akan difilter dan dikirim 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 selesai menguji:

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 memantau 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 pilihan Anda:

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 harus memberi akun layanan default untuk Cloud Storage izin untuk memublikasikan ke Pub/Sub.

Pertama, Anda perlu menemukan Akun Layanan yang digunakan Cloud Storage untuk memublikasikan 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 bagian email_address.

Dengan asumsi akun layanan yang Anda temukan dari langkah 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 kepada 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 Anda perlukan 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

Daftar semua pemicu untuk mengonfirmasi bahwa pemicu berhasil dibuat:

gcloud beta events triggers list

Tunggu hingga 10 menit sebelum pembuatan pemicu dipropagasi dan mulai memfilter peristiwa. Setelah siap, peristiwa create akan difilter dan dikirim 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 selesai menguji:

gcloud beta events triggers delete trigger-storage

14. Membuat pemicu Peristiwa untuk Cloud Scheduler

Anda akan menyiapkan pemicu untuk memantau peristiwa dari Cloud Scheduler.

Buat aplikasi App Engine

Saat ini, Cloud Scheduler mengharuskan pengguna 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 Anda perlukan untuk membuat pemicu untuk 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 scheduler:

export SCHEDULER_LOCATION=europe-west1

Buat Pemicu yang akan membuat tugas untuk 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

Daftar semua pemicu untuk mengonfirmasi bahwa pemicu berhasil dibuat:

gcloud beta events triggers list

Tunggu hingga 10 menit sebelum pembuatan pemicu dipropagasi dan mulai memfilter peristiwa. Setelah siap, peristiwa create akan difilter dan dikirim ke layanan.

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

Menghapus pemicu

Secara opsional, Anda dapat menghapus pemicu setelah selesai menguji:

gcloud beta events triggers delete trigger-scheduler

15. Peristiwa Kustom (Endpoint Broker)

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

Membuat Pod Curl untuk Menghasilkan Acara

Acara biasanya dibuat secara terprogram. Namun, pada langkah ini, Anda akan menggunakan curl untuk mengirim peristiwa satu per satu secara manual dan melihat cara peristiwa ini diterima oleh konsumen yang tepat.

Untuk membuat Pod yang bertindak sebagai produsen 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

Pastikan 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 keluarkan. Perhatikan bahwa pemfilteran kecocokan persis pada sejumlah atribut CloudEvents serta ekstensi didukung. Jika filter Anda menetapkan beberapa atribut, suatu peristiwa harus memiliki semua atribut agar Pemicu dapat 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

Daftar semua pemicu untuk mengonfirmasi bahwa pemicu berhasil dibuat:

gcloud beta events triggers list

Buat peristiwa dengan mengirim permintaan HTTP ke Broker. Ingatkan diri Anda tentang URL Broker dengan menjalankan perintah berikut:

kubectl get brokers -n ${NAMESPACE}

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

Terapkan SSH ke pod curl yang Anda buat sebelumnya:

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

Anda telah menjalankan SSH ke dalam pod, dan kini dapat membuat permintaan HTTP. Perintah yang mirip 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 acara:

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 peristiwa telah diterima, Anda akan menerima respons HTTP 202 Accepted. Keluar dari sesi SSH dengan Ctrl + D

Pastikan 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 selesai menguji:

gcloud beta events triggers delete trigger-custom

16. Selamat!

Selamat, Anda telah menyelesaikan codelab.

Yang telah kita bahas

  • Visi jangka panjang Events for Cloud Run for Anthos
  • Status Events for Cloud Run for Anthos saat ini
  • 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