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。
命名空间示例¶
在创建命名空间时创建“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 控制器将不执行任何操作。
触发器示例¶
在创建触发器时在触发器的命名空间中创建一个“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
这将在“hello”命名空间中创建一个名为“default”的 Broker,并尝试将事件发送到“event-display”服务。
如果名为“default”的 Broker 已经存在于命名空间中,则 Sugar 控制器将不执行任何操作,并且触发器将不会拥有现有 Broker。