前言
Knative Eventing v0.11.0 版本已经于 12 月 10 号正式发布。本次发布围绕 Eventing 事件源接入及事件可用性等相关功能展开。本文通过解读这些功能特性,让你快速对 v0.11.0 版本有所了解。
新特性
SinkBinding
SinkBinding 是Kantive 中 Binding 设计模式的具体运用。支持将K8s 中已有的资源(如Deployment, Job, DaemonSet, StatefulSet)、 Knative Service 等与目标绑定资源(Knative 、Broker)通过注入环境变量K_SINK进行事件发送等访问。可以理解对原有ContainerSource的一种扩展。示例如下:
apiVersion: sources.knative.dev/v1alpha1
kind: SinkBinding
metadata:
name: deployment-binding
spec:
subject:
apiVersion: apps/v1
kind: Deployment
# namespace defaults to same as binding.
name: event-producer
sink:
ref:
apiVersion: eventing.knative.dev/v1alpha1
kind: Broker
# namespace defaults to same as binding.
name: default
该示例表示通过event-producer
的 Deployment 资源产生事件,并将事件发送给 default
Broker。通过 SinkBinding 资源,能够将两种不同的资源直接建立访问关系,这种设计模式值得借鉴
增强事件交付 - dead letter sink
Knative Eventing 中如果发送事件异常,可以通过重试发送未成功使用的事件,若重试依然不起作用,则可以决定将这些事件转发到一个死信接收服务。当前 InMemoryChannel 已支持该特性。示例如下:
apiVersion: messaging.knative.dev/v1alpha1
kind: Subscription
metadata:
name: with-dead-letter-sink
spec:
channel:
apiVersion: messaging.knative.dev/v1alpha1
kind: InMemoryChannel
name: default
delivery:
deadLetterSink:
ref:
apiVersion: serving.knative.dev/v1
kind: Service
name: error-handler
subscriber:
uri: http://doesnotexist.default.svc.cluster.local
当事件发送异常时,可以将异常事件发送到 deadLetterSink 中 error-handler
服务进行处理。
其它特性
- APIServer 资源支持报告get/watch/list 是否有足够的权限进行操作
- Trigger 资源支持通过 SubscriberResolved 展示订阅状态
- ApiServerSource 和 CronjobSource 当前产生 CloudEvent 1.0 的数据格式
其它关键信息
- Parallel 资源已经移到了
parallels.flows.knative.dev/v1beta1
分组中,parallels.messaging.knative.dev
分组接下来将会被遗弃。 - Sequence 资源已经移到了
sequences.flows.knative.dev/v1beta1
分组中,sequences.messaging.knative.dev
分组接下来会被遗弃 - 使用
Subscription.spec.reply
替换原有Subscription.spec.reply.channel
属性
总结
本次 Knative Eventing v0.11.0 版本主要增强了k8s事件源的接入以及事件的交付可用性,在后续的版本迭代中会更多的关于事件源接入进行优化。欢迎对 Knative 有兴趣的一起交流。