跳至內容

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 問題 與我們聯繫。

我們使用分析和 Cookie 來了解網站流量。有關您使用我們網站的資訊會因此目的與 Google 分享。了解更多。