Knative Eventing Sugar Controller¶
Knative Eventing Sugar Controller 会根据配置的标签,在集群或命名空间中生成或控制 eventing 资源。这使得集群管理员和开发人员可以专注于创建更少的资源,事件基础架构按需创建,并在不再需要时清理。
安装¶
Sugar Controller 默认是 disabled(禁用)的,可以通过配置 config-sugar ConfigMap 来启用。请参阅下面的简单示例和 配置 Sugar Controller 以获取更多详细信息。
自动创建 Broker¶
创建 Broker 的一种方法是使用默认设置手动将资源应用于集群
-
将以下 YAML 复制到一个文件中
apiVersion: eventing.knative.dev/v1 kind: Broker metadata: name: default namespace: default -
通过运行命令应用 YAML 文件
其中kubectl apply -f <filename>.yaml<filename>是您在上一步中创建的文件的名称。
在某些情况下,可能需要自动创建 Broker,例如在创建命名空间时或创建 Trigger 时。Sugar controller 启用了这些用例。sugar-config ConfigMap 的以下示例配置为所选命名空间和所有 Trigger 启用了 Sugar Controller。
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 controller 将在该命名空间中创建一个名为 "default" 的 Broker。 - 当创建 Trigger 时,Sugar controller 将在 Trigger 的命名空间中创建一个名为 "default" 的 Broker。
当删除 Broker,但引用的标签选择器仍在被使用时,Sugar Controller 将自动重新创建默认的 Broker。
命名空间示例¶
在创建命名空间时创建 "default" 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 Controller 将不执行任何操作。
Trigger 示例¶
在创建 Trigger 时,在其命名空间中创建一个 "default" 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
这将创建一个名为 "default" 的 Broker 在 "hello" 命名空间中,并尝试将事件发送到 "event-display" 服务。
如果命名空间中已存在名为 "default" 的 Broker,Sugar Controller 将不执行任何操作,并且 Trigger 不会拥有现有的 Broker。