天天看點

全面解讀 Knative Eventing 0.8 版本新特性

前言

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 有興趣的一起交流。

歡迎加入 Knative 交流群

全面解讀 Knative Eventing 0.8 版本新特性

繼續閱讀