Knative 中改進的事件探索,帶來更好的開發人員體驗 ¶
發布於:2023-08-01, 修訂於:2024-01-24
Knative 中改進的事件探索,帶來更好的開發人員體驗¶
作者:David Simansky,Red Hat 資深軟體工程師,Matthias Weßendorf,Red Hat 資深首席軟體工程師
在這篇部落格文章中,您將了解 Knative Eventing 中有關事件探索的新增強功能。
事件探索是事件驅動應用程式的重要組成部分,因為它可讓開發人員更好地了解系統動態以及要使用的事件。它確實能實現更有效率和穩健的應用程式設計。
Knative 事件類型 API 增強功能¶
在 Knative Eventing 的最新 1.11 版本中,有一些與改進的事件探索相關的改進
EventType
API 提升至v1beta2
- 使用
reference
來指向任何資源,例如通道或接收器,而不僅僅是代理程式 - 增強內建來源,以便為任何繫結建立事件類型,而不僅僅是代理程式。
- 為代理程式和通道自動建立事件類型
事件類型 API 變更和版本提升¶
經過幾年使用 v1beta1
版本之後,Knative 中的 EventType
API 已變更並提升至 v1beta2
。版本提升並非單獨進行,而是與改進開發人員體驗的大幅修改相結合。現在可以從事件類型物件指向任何資源,而不僅僅限於代理程式物件。
參考其他資源¶
新版本將 broker
欄位標記為已淘汰,並將在未來的版本中移除,取而代之的是現在的 reference
欄位,該欄位接受任何 KReference
API 類型,能夠指向任何接收器、通道或代理程式。讓我們看看新的 EventType
物件
apiVersion: eventing.knative.dev/v1beta2
kind: EventType
metadata:
name: dev.knative.source.github.push-sss34cnb
namespace: default
spec:
type: dev.knative.source.github.push
source: https://github.com/knative/eventing
reference:
apiVersion: messaging.knative.dev/v1
kind: InMemoryChannel
name: testchannel
狀態也已變更,因為我們只需要參考存在,而不必同時準備就緒。
Duck 來源¶
上述增強功能允許對內建來源或任何符合來源 Duck 類型的來源進行其他變更。例如,直到先前的版本,當來源指向代理程式時,才會自動建立 EventType
物件,因為有上述限制。現在,這些物件會針對來源上參考的任何接收器建立,例如
apiVersion: sources.knative.dev/v1
kind: PingSource
metadata:
name: ping-source-broker2
spec:
schedule: "*/1 * * * *"
data: '{"message": "Hello world!"}'
sink:
ref:
apiVersion: v1
kind: Service
name: log-receiver
這會產生自動建立的事件類型,例如
k get eventtypes.eventing.knative.dev -A
NAMESPACE NAME TYPE SOURCE SCHEMA REFERENCE NAME REFERENCE KIND DESCRIPTION READY REASON
default 93774a924a741245a94313745d78e69f dev.knative.sources.ping /apis/v1/namespaces/default/pingsources/ping-source-broker2 log-receiver Service True
自動建立事件類型¶
此外,為了改善 EventTypes
的使用和建立體驗,有一個新的實驗性功能,可以根據代理程式入口和記憶體通道上處理的事件自動建立 EventTypes
物件。而不是像與 Broker 或 Channel API 通訊的應用程式程式碼一樣,手動建立它們作為 yaml 清單。可以在 config-features
ConfigMap 中透過功能旗標 eventtype-auto-creation
啟用此行為。如需更多詳細資訊和範例,請參閱文件。
結論¶
這篇部落格文章介紹了 EventType
可探索性的新功能和改進。主要動機是加強開發人員對事件驅動應用程式的深入了解,以簡化探索並加速開發。
我們期待社群進一步增強 EventType
API 和可探索性。請透過 CNCF Slack 的 #knative-eventing 或 GitHub 問題 與我們聯繫。