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
,而無需像與 Broker
或 Channel
API 通訊的應用程式碼一樣手動建立它們作為 yaml 清單。
範例¶
建立 Broker¶
若要檢查該功能是否正常運作,請建立一個簡單的 broker
kn broker create my-broker
-
使用下列範例建立 YAML 檔案
apiVersion: eventing.knative.dev/v1 kind: Broker metadata: namespace: default name: my-broker
-
執行命令來套用 YAML 檔案
其中kubectl apply -f <filename>.yaml
<filename>
是您在上一個步驟中建立的檔案名稱。
產生事件到 Broker¶
自動建立功能由處理的事件觸發。因此,為了驗證功能,我們需要傳送具有所需類型的範例事件。這可以透過幾種方式實現,以下是在叢集中使用 kn-plugin-event
和 cURL
容器的兩個範例。
以下範例說明如何使用 kn
CLI 傳送事件,以提高開發人員的生產力。kn-plugin-event
外掛程式可以使用 Homebrew 安裝,或直接從 GitHub 版本下載,如需更多詳細資訊,請參閱外掛程式安裝步驟。
-
設定
kn event
外掛程式brew install knative-extensions/kn-plugins/event
-
傳送事件
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 管道的一部分,而不是依賴此自動建立功能。