前言
Knative Eventing v0.8 版本已经于 8 月 6 号正式发布。本次发布主要围绕完善 Eventing 中相关功能展开。本篇文章通过解读这些功能特性,希望能让你快速对 0.8 新版本有所了解。
新特性
新增 Choice CRD 资源
Choice 是用来做什么呢? 其实它与 sequence 类似,是用来定义 function 执行流程的。通过 Choice, 可以根据条件来选择function 进行事件处理。Choice 的定义如下:
apiVersion: messaging.knative.dev/v1alpha1
kind: Choice
metadata:
name: check-assignment
spec:
channelTemplate:
apiVersion: messaging.knative.dev/v1alpha1
kind: InMemoryChannel
cases:
- filter:
ref:
apiVersion: serving.knative.dev/v1alpha1
kind: Service
name: data-assigned
subscriber:
ref:
apiVersion: serving.knative.dev/v1alpha1
kind: Service
name: send-notice
- channelTemplate: 设置所使用的Channel
- cases: 表示选择条件
- filter: 过滤条件,这里通过Service进行事件filter处理
- subscriber:事件经过filter之后,最终发送的服务。
支持设置默认 Channel
默认 Channel 配置允许在不指定底层实现的情况下创建Channel。创建默认的Channel。注意这里的 Channel 是设置在messaging.knative.dev/v1alpha1
分组下,原有在eventing.knative.dev
分组下使用 Provisioner 模型的 Channel 会在 0.9 版本废弃。
apiVersion: messaging.knative.dev/v1alpha1
kind: Channel
metadata:
name: default-channel
namespace: default
通过configmap控制默认Channel设置。
apiVersion: v1
kind: ConfigMap
metadata:
name: default-ch-webhook
namespace: knative-eventing
data:
default-ch-config: |
clusterDefault:
apiVersion: messaging.knative.dev/v1alpha1
kind: InMemoryChannel
namespaceDefaults:
some-namespace:
apiVersion: messaging.knative.dev/v1alpha1
kind: KafkaChannel
spec:
numPartitions: 2
replicationFactor: 1
这里指定了两个默认的Channel:
- clusterDefault:集群级别的默认Channel(InMemoryChannel)。
- namespaceDefaults:namespace级别的默认Channel(KafkaChannel)
另外 Brokers 和 Sequences 在没有指定Channel的情况下,都支持使用默认的 Channne l设置。
CloudEvents
CloudEvents 升级到0.3版本支持
监控增强
- 在webhook中支持统计功能
- Grafana and Prometheus中支持对 Eventing 指标采集
- 在Broker Ingress中增加了metric 度量。
资源指定名称设置
在原有的Broker和Trigger中,使用GenerateName
创建 Channel 和 Subscription。由于是自动产生的name,如果listers 数据不是最新的,可能导致 Channel 或 Subscription资源被多次创建。
另外 ApiServerSource 、 ContainerSource 和使用 provisioner 的 原有的Channel 也支持使用指定的name。
其它特性
- CronJobSource 和 ApiServerSource 支持了事件注册 event types。
- 在Trigger filter中增加了对 Cloud Event Attribute 过滤支持
其它主要变更
- 升级 github.com/knative/pkg 到 knative.dev/pkg。这个变动可能会影响到代码开发使用 Knative 依赖包的设置,需要注意一下。
- 将Broker's Ingress Handler 和 metrics移动到pkg目录下
- 参考Serving中的策略,为Eventing中所有的资源对象打上
eventing.knative.dev/release
标签, Value值可以设置为release 版本或者devel
- Kafka channel 转移到了https://github.com/knative/eventing-contrib中
- Triggers 中
sourceAndType
属性接下来要被遗弃,新的字段为attributes
, 该新字段既支持标准的CloudEvents 属性, 也支持扩展的熟悉.
总结
本次 Knative Eventing 0.8 版本主要聚焦在功能完善方面,也从侧面反映 Knative Eventing 功能日渐成熟,相信在后续的版本迭代中主要集中在功能完善和优化。同时也欢迎对 Knative 有兴趣的一起交流。