跳至内容

Knative 中改进的事件发现带来的更好的开发者体验

发布日期:2023-08-01,  修订日期:2024-01-24

Knative 中改进的事件发现带来的更好的开发者体验

作者:David Simansky,红帽高级软件工程师,Matthias Weßendorf,红帽高级首席软件工程师

在这篇博文中,您将了解有关 Knative 事件中围绕事件发现的新增强的信息。

事件发现是事件驱动应用程序的重要组成部分,因为它允许开发人员更好地了解系统动态以及要使用哪些事件。它确实可以实现更高效、更健壮的应用程序设计。

Knative 事件类型 API 增强功能

随着 Knative 事件的最新 1.11 版本的发布,在改进事件发现方面有一些改进

  • EventType API 升级到 v1beta2
  • 使用 reference 指向任何资源(如通道或接收器),而不仅仅是代理
  • 增强内置源以创建任何绑定的事件类型,而不仅仅是代理。
  • 代理和通道的自动事件类型创建

EventType API 更改和版本升级

在 Knative 中的 EventType API 在 v1beta1 版本上运行了几年后,它已经更改并升级到了 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

状态也已更改,因为我们只需要引用存在,而不是也处于就绪状态。

鸭子源

上述增强功能允许对内置源进行额外更改,或者对符合源鸭子类型的任何源进行额外更改。例如,在以前的版本中,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 对象。无需手动创建它们作为 yaml 清单以及与代理或通道 API 交互的应用程序代码。此行为可以通过 config-features ConfigMap 中的特性标志 eventtype-auto-creation 来启用。有关更多详细信息和示例,请参考文档

结论

这篇博文介绍了 EventType 可发现性的新功能和改进。主要动机是加强开发人员对事件驱动应用程序的洞察力,以简化发现并加快开发速度。

我们期待社区进一步增强 EventType API 和可发现性。请在 CNCF Slack 的 #knative-eventing 或 GitHub 问题 上与我们联系。

我们使用分析和 cookie 来了解网站流量。有关您使用我们网站的信息将与 Google 共享,用于该目的。 了解更多。