Knative Eventing menyediakan model peristiwa yang menyederhanakan proses penerimaan peristiwa dari sistem eksternal. Anda dapat menerapkan komponen Knative Eventing dalam kluster Container Service for Kubernetes (ACK) dan membuat pemicu untuk mengaktifkan kemampuan berbasis peristiwa. Topik ini menjelaskan cara menggunakan EventBridge untuk menyediakan kemampuan berbasis peristiwa dalam lingkungan produksi untuk Knative.
Prasyarat
Versi Knative Serving adalah 1.12.7 atau lebih baru.
ossutil telah diinstal dan bucket telah dibuat. Untuk informasi lebih lanjut, lihat Instal ossutil dan Buat Bucket.
EventBridge telah diaktifkan dan Anda diberikan izin untuk menggunakan konsol EventBridge. Untuk informasi lebih lanjut, lihat Aktifkan EventBridge dan Berikan Izin kepada Pengguna RAM.
CatatanUntuk informasi lebih lanjut tentang EventBridge, lihat Apa itu EventBridge?
Pengenalan fitur
EventBridge mendukung berbagai macam sumber peristiwa. Anda dapat mengonfigurasi bus peristiwa, aturan, dan target untuk menyaring, mentransformasi, dan mengirimkan peristiwa. Dengan menggunakan EventBridge untuk memicu Layanan Knative mengonsumsi peristiwa, Anda dapat menggunakan sumber daya sesuai kebutuhan. Gambar berikut menunjukkan arsitektur tersebut.
Anda dapat menghubungkan Object Storage Service (OSS) ke EventBridge sebagai sumber peristiwa. Untuk informasi lebih lanjut tentang cara menghubungkan OSS ke EventBridge sebagai sumber peristiwa, lihat Peristiwa OSS.
Langkah 1: Terapkan komponen Eventing dan EventBridge
Knative menyediakan kemampuan berbasis peristiwa dari EventBridge dan mendukung sumber peristiwa layanan Alibaba Cloud serta pengalihan peristiwa.
Masuk ke konsol ACK. Di panel navigasi kiri, klik Clusters.
Di halaman Clusters, temukan kluster yang diinginkan dan klik namanya. Di panel navigasi kiri, pilih .
Di tab Components, terapkan komponen Eventing dan EventBridge.
Di tab Components, temukan Eventing dan klik Deploy di kolom Actions.
Setelah Eventing diterapkan, temukan EventBridge, dan klik Deploy di kolom Actions. Di kotak dialog yang muncul, masukkan ID AccessKey dan Rahasia AccessKey, lalu klik OK.
Untuk informasi lebih lanjut tentang cara mendapatkan pasangan AccessKey, lihat Buat Pasangan AccessKey.
CatatanUntuk memastikan keamanan akun pengguna RAM, kami sarankan Anda mengikat perangkat otentikasi multi-faktor (MFA) ke pengguna RAM untuk otentikasi sekunder selama masuk konsol atau operasi sensitif di konsol. MFA adalah peningkatan keamanan yang menambahkan lapisan perlindungan tambahan selain nama pengguna dan kata sandi. Untuk informasi lebih lanjut, lihat Ikat Perangkat MFA ke Pengguna RAM.
Jika Deployed ditampilkan di kolom Status komponen, komponen tersebut telah diterapkan.
Langkah 2: Buat Layanan Knative
Bagian ini menggunakan Layanan Knative bernama event-display sebagai contoh. Layanan ini secara otomatis mencatat semua peristiwa yang diterima. Berikut ini menjelaskan cara membuat Layanan Knative di konsol ACK dan kubectl.
Gunakan konsol ACK
Masuk ke konsol ACK. Di panel navigasi kiri, klik Clusters.
Di halaman Clusters, temukan kluster yang diinginkan dan klik namanya. Di panel navigasi kiri, pilih .
Klik tab Services lalu klik Create from Template untuk membuat Layanan Knative.
Berikut ini adalah contoh kode sampel:
apiVersion: serving.knative.dev/v1 kind: Service metadata: name: event-display namespace: default spec: template: spec: containers: - image: registry.cn-hangzhou.aliyuncs.com/knative-sample/event-display:20230207194118_3874dbdDi tab Services, jika Created ditampilkan di kolom Status Layanan Knative, Layanan Knative telah dibuat.
Gunakan kubectl
Buat file bernama event-display.yaml dan salin konten berikut ke file tersebut. File ini digunakan untuk membuat Layanan Knative.
apiVersion: serving.knative.dev/v1 kind: Service metadata: name: event-display namespace: default spec: template: spec: containers: - image: registry.cn-hangzhou.aliyuncs.com/knative-sample/event-display:20230207194118_3874dbdkubectl apply -f event-display.yamlJalankan perintah berikut untuk memeriksa apakah Layanan Knative telah dibuat:
kubectl get ksvcOutput yang diharapkan:
NAME URL LATESTCREATED LATESTREADY READY REASON event-display http://event-display.default.example.com event-display-00001 event-display-00001 True
Langkah 3: Buat pemicu
Gunakan konsol ACK
Di halaman Knative, klik tab Services, lalu klik nama Layanan Knative. Di halaman yang muncul, klik tab Trigger.
Klik Create Trigger. Di halaman Configure, konfigurasikan parameter berdasarkan petunjuk. Tabel berikut menjelaskan parameter tersebut.
Parameter
Deskripsi
Contoh
Name
Masukkan nama untuk pemicu.
my-service-trigger
Broker
Anda dapat memilih EventBridge atau Other.
EventBridge
Event Source
Beberapa sumber peristiwa didukung.
OSS
Event Type
Beberapa jenis peristiwa didukung.
oss:ActionTrail:ConsoleOperation
Setelah pemicu dibuat, Anda dapat melihat pemicu di tab Triggers.

Gunakan kubectl
Buat file bernama my-service-trigger.yaml, salin konten berikut ke file tersebut, lalu terapkan file ke kluster. File ini digunakan untuk membuat pemicu.
apiVersion: eventing.knative.dev/v1 kind: Trigger metadata: name: my-service-trigger spec: broker: eventbridge-default-broker filter: attributes: source: acs.oss type: 'oss:ActionTrail:ConsoleOperation' subscriber: ref: apiVersion: serving.knative.dev/v1 kind: Service name: helloworld-go namespace: defaultbroker: Atur nama menjadi eventbridge-default-broker, yang sesuai dengan bus peristiwa default.source: Tentukan sumber peristiwa yang didukung oleh EventBridge.type: Tentukan jenis peristiwa dari sumber peristiwa. Pisahkan beberapa jenis peristiwa dengan koma (,).subscriber: Tentukan layanan yang berlangganan.
kubectl apply -f my-service-trigger.yamlJalankan perintah berikut untuk memeriksa apakah pemicu telah dibuat:
kubectl get triggersOutput yang diharapkan:
NAME BROKER SUBSCRIBER_URI AGE READY REASON my-service-trigger eventbridge-default-broker http://helloworld-go.default.svc.cluster.local 42h True
Langkah 4: Periksa apakah EventBridge dapat memicu Layanan Knative untuk mengonsumsi peristiwa
Jalankan perintah berikut untuk mengunggah file ke OSS.
CatatanPastikan bahwa Bucket OSS dan EventBridge diterapkan di wilayah yang sama.
ossutil cp <Nama file> oss://<Nama bucket>Setelah file diunggah, EventBridge memicu Layanan Knative untuk mengonsumsi peristiwa.
Lihat jejak peristiwa.
Masuk ke konsol EventBridge. Di panel navigasi kiri, klik Event Buses.
Di halaman Bus Peristiwa, pilih peristiwa default dan klik Event Tracking di kolom Actions. Di tab Query By Time Range, konfigurasikan parameter Time Range. Klik Query.
Atur Event Source menjadi OSS dan Event Type menjadi Put Object, dan klik Event Trace di kolom Operations peristiwa yang sesuai.

Di halaman Event Trace, Anda dapat memeriksa apakah peristiwa dikirimkan.
Periksa apakah Layanan Knative mengonsumsi peristiwa.
Jalankan perintah berikut untuk memeriksa apakah Layanan Knative mengonsumsi peristiwa:
kubectl get podOutput yang diharapkan:
NAME READY STATUS RESTARTS AGE event-display-00001-deployment-56cc79****-z2vhv 2/2 Running 0 7sJalankan perintah berikut untuk melihat catatan Layanan Knative dari peristiwa:
kubectl logs event-display-00001-deployment-56cc79****-z2vhv user-containerOutput yang diharapkan:
{"data":{"eventVersion":"1.0","responseElements":{"requestId":"63E21F5FEE852133319101AD"},"eventSource":"acs:oss","eventTime":"2023-02-07T09:52:31.000Z","requestParameters":{"sourceIPAddress":"XX.XXX.XX.XXX"},"eventName":"ObjectCreated:PutObject","userIdentity":{"principalId":"1118324452360952"},"region":"cn-hangzhou","oss":{"bucket":{"name":"knative","arn":"acs:oss:cn-hangzhou:1581204543170042:knative","virtualBucket":"","ownerIdentity":"1581204543170042"},"ossSchemaVersion":"1.0","object":{"size":225496,"objectMeta":{"mimeType":"application/octet-stream"},"deltaSize":0,"eTag":"B350C082843DAC7E9E634193437EBA30","key":"demo.data"}}}}
Output tersebut menunjukkan bahwa Layanan Knative mengonsumsi dan mencatat peristiwa unggah OSS. Ini berarti EventBridge berhasil memicu Layanan Knative untuk mengonsumsi peristiwa.
Referensi
Untuk informasi lebih lanjut tentang cara menggunakan sumber peristiwa lain untuk mengaktifkan kemampuan berbasis peristiwa, lihat Gunakan Peristiwa GitHub di Knative.