Knative Eventing menyediakan model event yang komprehensif untuk menyederhanakan integrasi dengan sistem event eksternal. Anda dapat mengaktifkan kemampuan berbasis event dengan menerapkan komponen Knative Eventing dan membuat pemicu (trigger) di kluster ACK. Topik ini menjelaskan cara menggunakan EventBridge untuk menambahkan kemampuan berbasis event tingkat produksi ke Knative.
Prasyarat
-
Pastikan versi Knative Serving Anda adalah 1.12.7 atau lebih baru.
-
Instal ossutil dan buat bucket. Untuk informasi selengkapnya, lihat Instal ossutil dan Buat bucket.
-
Aktifkan EventBridge dan berikan izin yang diperlukan.
CatatanUntuk informasi selengkapnya tentang EventBridge, lihat Apa itu EventBridge?.
Cara kerja
EventBridge mendukung berbagai sumber event. Dengan mengonfigurasi event bus, aturan event, dan target event, Anda dapat menyaring dan mentransformasi event tersebut. Event-event ini kemudian dapat memicu Layanan Knative untuk mengonsumsinya, sehingga memungkinkan penggunaan resource sesuai permintaan. Gambar berikut menunjukkan arsitektur tersebut.
Anda dapat menghubungkan OSS ke EventBridge sebagai sumber event. Untuk informasi selengkapnya tentang jenis event yang dapat dipublikasikan OSS ke event bus di EventBridge, lihat Event OSS.
Langkah 1: Terapkan komponen Eventing dan EventBridge
Knative menggunakan EventBridge untuk menyediakan kemampuan berbasis event, mendukung sumber event resmi Alibaba Cloud maupun penerusan event.
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Pada halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik .
-
Pada tab Add-ons, terapkan komponen Eventing dan EventBridge.
-
Pada tab Add-ons, temukan komponen Eventing dan klik Deployments di kolom Actions.
-
Setelah Eventing diterapkan, temukan komponen EventBridge dan klik Deployments di kolom Actions. Di kotak dialog, masukkan ID AccessKey dan Rahasia AccessKey Anda, lalu klik OK.
Untuk informasi tentang cara memperoleh Pasangan Kunci Akses, lihat Buat Pasangan Kunci Akses.
CatatanUntuk meningkatkan keamanan Pengguna RAM Anda, Anda dapat mengikat perangkat MFA untuk otentikasi sekunder saat masuk ke konsol atau saat melakukan operasi sensitif. Hal ini memberikan lapisan perlindungan tambahan selain username dan password. Untuk informasi selengkapnya, lihat Ikatan perangkat MFA untuk Pengguna RAM.
Jika Status komponen adalah Digunakan, penerapan berhasil.
-
Langkah 2: Buat Layanan Knative
Pada bagian ini, Anda membuat Layanan Knative bernama event-display yang mencatat konten event yang diterima. Anda dapat membuat layanan tersebut melalui Konsol ACK atau kubectl.
Konsol
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Pada halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik .
-
Klik tab Services, lalu klik Buat dengan Template untuk membuat Layanan Knative.
Kode berikut merupakan contoh:
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_3874dbdPada tab Services, jika Status layanan adalah Success, layanan berhasil dibuat.
Kubectl
-
Simpan konten berikut sebagai
event-display.yamldan jalankan perintahkubectl applyuntuk 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.yaml -
Jalankan perintah berikut untuk memeriksa status Layanan Knative:
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 (trigger)
Konsol
-
Pada halaman Knative, klik tab Services. Klik nama layanan target, lalu klik tab Trigger.
-
Klik Create Trigger. Pada halaman Configuration, atur parameter berikut dan ikuti petunjuk di layar untuk membuat pemicu.
Parameter
Deskripsi
Contoh
Name
Nama kustom untuk pemicu.
my-service-trigger
Broker
Anda dapat memilih EventBridge atau Others.
EventBridge
Event Source
Beberapa sumber event didukung.
OSS
Event Type
Beberapa jenis event didukung.
oss:ActionTrail:ConsoleOperation
Setelah pemicu dibuat, Anda dapat melihatnya pada tab Triggers.
Kubectl
-
Simpan konten berikut sebagai
my-service-trigger.yamldan terapkan ke kluster 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: event-display namespace: default-
broker: Menentukaneventbridge-default-broker, yang sesuai dengan event bus default (default) di EventBridge. -
source: Sumber event yang didukung oleh EventBridge. -
type: Jenis event dari sumber event tersebut. Untuk menentukan beberapa jenis event, pisahkan dengan koma (,). -
subscriber: Layanan yang berlangganan event tersebut.
kubectl apply -f my-service-trigger.yaml -
-
Jalankan 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://event-display.default.svc.cluster.local 42h True
Langkah 4: Verifikasi konsumsi event
-
Jalankan perintah berikut untuk mengunggah file ke bucket OSS Anda.
CatatanPastikan bucket OSS dan EventBridge berada di wilayah yang sama.
ossutil cp <file_name> oss://<bucket_name>Setelah file diunggah ke OSS, EventBridge memicu Layanan Knative untuk mengonsumsi event tersebut.
-
Lihat Jejak Event (Event Trace).
Masuk ke EventBridge console. Di panel navigasi kiri, klik Event Buses.
-
Pada halaman yang muncul, temukan event bus default dan klik Event Tracking di kolom Actions. Pada tab Query By Time Range, atur Time Range dan klik Search.
-
Temukan event dengan Event Source berupa Object Storage Service dan Event Type berupa Upload Object. Klik Event Trace di kolom Actions untuk event tersebut.
Jika status pengiriman adalah Succeeded dan responsnya adalah
[200], EventBridge berhasil mengirimkan event ke layanan target.Pada halaman Event Trace, Anda dapat memeriksa status pengiriman event.
-
Verifikasi bahwa Layanan Knative telah mengonsumsi event tersebut.
-
Jalankan perintah berikut untuk memeriksa pod baru yang dibuat untuk mengonsumsi event:
kubectl get podOutput yang diharapkan:
NAME READY STATUS RESTARTS AGE event-display-00001-deployment-56cc79****-z2vhv 2/2 Running 0 7s -
Jalankan perintah berikut untuk melihat log dan memastikan Layanan Knative mencatat event tersebut:
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 telah mengonsumsi event dan mencatat detail file yang diunggah ke OSS.
-