前言
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中所有的資源對象打上
标簽, Value值可以設定為release 版本或者eventing.knative.dev/release
devel
- Kafka channel 轉移到了 https://github.com/knative/eventing-contrib 中
- Triggers 中
屬性接下來要被遺棄,新的字段為sourceAndType
, 該新字段既支援标準的CloudEvents 屬性, 也支援擴充的熟悉.attributes
總結
本次 Knative Eventing 0.8 版本主要聚焦在功能完善方面,也從側面反映 Knative Eventing 功能日漸成熟,相信在後續的版本疊代中主要集中在功能完善和優化。同時也歡迎對 Knative 有興趣的一起交流。