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.
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.
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.
Agar pengguna dapat membangun aplikasi serverless berbasis peristiwa, fokus awal kami ada dua:
- 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.
- 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
- 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.
- 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.
- 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:
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.
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:
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:
Di sisi kanan, pastikan Admin, Baca, dan Tulis dipilih. Klik simpan:
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
:
Setelah menjalankan kueri, Anda akan melihat log untuk topik Pub/Sub dan salah satunya seharusnya adalah google.pubsub.v1.Publisher.CreateTopic
:
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:
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:
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