Knative 事件處理 Sugar 控制器¶
Knative 事件處理 Sugar 控制器會根據設定的標籤,在叢集或命名空間中產生或控制事件處理資源。這讓叢集操作員和開發人員可以專注於建立較少的資源,而底層的事件處理基礎架構會在需要時按需建立,並在不再需要時清除。
安裝¶
Sugar 控制器預設為停用
,可以透過設定 config-sugar
ConfigMap 來啟用。請參閱下方簡單範例以及設定 Sugar 控制器以取得更多詳細資訊。
自動 Broker 建立¶
建立 Broker 的一種方式是使用預設設定手動將資源套用至叢集
-
將下列 YAML 複製到檔案中
apiVersion: eventing.knative.dev/v1 kind: Broker metadata: name: default namespace: default
-
執行命令以套用 YAML 檔案
其中kubectl apply -f <filename>.yaml
<filename>
是您在上一步驟中建立的檔案名稱。
在某些情況下,自動建立 Broker 是理想的,例如在建立命名空間或建立觸發器時。Sugar 控制器可啟用這些使用案例。以下是 sugar-config
ConfigMap 的範例設定,可針對選取的命名空間和所有觸發器啟用 Sugar 控制器。
apiVersion: v1
kind: ConfigMap
metadata:
name: config-sugar
namespace: knative-eventing
labels:
eventing.knative.dev/release: devel
data:
# Specify a label selector to selectively apply sugaring to certain namespaces
namespace-selector: |
matchExpressions:
- key: "my.custom.injection.key"
operator: "In"
values: ["enabled"]
# Use an empty object to enable for all triggers
trigger-selector: |
{}
- 當建立具有標籤
my.custom.injection.key: enabled
的命名空間時,Sugar 控制器會在該命名空間中建立名為 "default" 的 Broker。 - 當建立觸發器時,Sugar 控制器會在觸發器的命名空間中建立名為 "default" 的 Broker。
當 Broker 被刪除,但參考的標籤選取器正在使用中時,Sugar 控制器將自動重新建立預設 Broker。
命名空間範例¶
在建立命名空間時建立「預設」Broker
-
將下列 YAML 複製到檔案中
apiVersion: v1 kind: Namespace metadata: name: example labels: my.custom.injection.key: enabled
-
執行命令以套用 YAML 檔案
其中kubectl apply -f <filename>.yaml
<filename>
是您在上一步驟中建立的檔案名稱。
若要在命名空間存在後自動建立 Broker,請標記命名空間
kubectl label namespace default my.custom.injection.key=enabled
如果名為「default」的 Broker 已存在於命名空間中,則 Sugar 控制器不會執行任何操作。
觸發器範例¶
在建立觸發器時,在觸發器的命名空間中建立「預設」Broker
kubectl apply -f - << EOF
apiVersion: eventing.knative.dev/v1
kind: Trigger
metadata:
name: hello-sugar
namespace: hello
spec:
broker: default
subscriber:
ref:
apiVersion: v1
kind: Service
name: event-display
EOF
這將在命名空間 "hello" 中建立一個名為 "default" 的 Broker,並嘗試將事件傳送至 "event-display" 服務。
如果名為「default」的 Broker 已存在於命名空間中,則 Sugar 控制器不會執行任何操作,且觸發器不會擁有現有的 Broker。