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 问题 上与我们联系。