跳至內容

EventType 自動建立以改進可探索性

旗標名稱eventtype-auto-create

階段:Alpha,預設為停用

追蹤問題#7044

角色:開發者

概述

透過 eventtype-auto-creation 功能,我們有可能自動建立 Knative Broker 和 Channel 實作接收和傳入的 EventType。

為了使用此選擇加入功能,我們必須在 config-features 中將 eventtype-auto-create 旗標設定為 enabled 來啟用它

apiVersion: v1
kind: ConfigMap
metadata:
  name: config-features
  namespace: knative-eventing
data:
  eventtype-auto-create: "enabled"
...

啟用此功能後,我們可以在 broker/channel 傳入時免費獲得 EventType,而無需像與 BrokerChannel API 通訊的應用程式碼一樣手動建立它們作為 yaml 清單。

範例

建立 Broker

若要檢查該功能是否正常運作,請建立一個簡單的 broker

kn broker create my-broker
  1. 使用下列範例建立 YAML 檔案

    apiVersion: eventing.knative.dev/v1
    kind: Broker
    metadata:
      namespace: default
      name: my-broker
    
  2. 執行命令來套用 YAML 檔案

    kubectl apply -f <filename>.yaml
    
    其中 <filename> 是您在上一個步驟中建立的檔案名稱。

產生事件到 Broker

自動建立功能由處理的事件觸發。因此,為了驗證功能,我們需要傳送具有所需類型的範例事件。這可以透過幾種方式實現,以下是在叢集中使用 kn-plugin-eventcURL 容器的兩個範例。

以下範例說明如何使用 kn CLI 傳送事件,以提高開發人員的生產力。kn-plugin-event 外掛程式可以使用 Homebrew 安裝,或直接從 GitHub 版本下載,如需更多詳細資訊,請參閱外掛程式安裝步驟

  1. 設定 kn event 外掛程式

    brew install knative-extensions/kn-plugins/event
    

  2. 傳送事件

    kn event send \
      --to Broker:eventing.knative.dev/v1:my-broker\
      --type com.corp.integration.warning \
      -f message="There might be a problem"
    

可以在叢集中透過 curl 傳送事件

kubectl run curl  --image=docker.io/curlimages/curl --rm=true --restart=Never -ti \
  -- -X POST -v \
  -H "content-type: application/json" \
  -H "ce-specversion: 1.0" \
  -H "ce-source: my/curl/command" \
  -H "ce-type: my.demo.event" \
  -H "ce-id: 6cf17c7b-30b1-45a6-80b0-4cf58c92b947" \
  -d '{"name":"Knative Demo"}' \
  http://broker-ingress.knative-eventing.svc.cluster.local/default/my-broker
這更複雜,因為我們必須製作事件作為 curl HTTP POST 請求的一部分。

事件探索

在產生這兩個事件後,我們應該能夠根據 eventtype-auto-creation 功能,在系統中探索到事件

k get eventtypes.eventing.knative.dev -A 
NAMESPACE   NAME     TYPE                           SOURCE            SCHEMA   BROKER      DESCRIPTION   READY   REASON
default     <...>    com.corp.integration.warning   kn-event/v1.9.0            my-broker                 True    
default     <...>    my.demo.event                  my/curl/command            my-broker                 True    

結論與建議

如果沒有此功能,我們將無法在系統中看到這兩個 EventType 實例,因此我們提高了事件的可探索性,以便使用。然而,雖然此選擇加入功能對於自動事件建立很方便,我們強烈建議為您的應用程式部署產生所有事件建立實際的 EventType 清單,作為 Gitops 管道的一部分,而不是依賴此自動建立功能。

我們使用分析和 Cookie 來了解網站流量。您使用我們網站的相關資訊會與 Google 分享,以達到此目的。了解更多。