跳到內容

Knative 事件處理 Sugar 控制器

Knative 事件處理 Sugar 控制器會根據設定的標籤,在叢集或命名空間中產生或控制事件處理資源。這讓叢集操作員和開發人員可以專注於建立較少的資源,而底層的事件處理基礎架構會在需要時按需建立,並在不再需要時清除。

安裝

Sugar 控制器預設為停用,可以透過設定 config-sugar ConfigMap 來啟用。請參閱下方簡單範例以及設定 Sugar 控制器以取得更多詳細資訊。

自動 Broker 建立

建立 Broker 的一種方式是使用預設設定手動將資源套用至叢集

  1. 將下列 YAML 複製到檔案中

    apiVersion: eventing.knative.dev/v1
    kind: Broker
    metadata:
      name: default
      namespace: default
    
  2. 執行命令以套用 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

  1. 將下列 YAML 複製到檔案中

    apiVersion: v1
    kind: Namespace
    metadata:
      name: example
      labels:
        my.custom.injection.key: enabled
    
  2. 執行命令以套用 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。

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