跳至内容

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。

命名空间示例

在创建命名空间时创建“default”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 控制器将不执行任何操作。

触发器示例

在创建触发器时在触发器的命名空间中创建一个“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。

我们使用分析和 Cookie 来了解网站流量。关于您使用我们网站的信息将与 Google 共享,用于该目的。了解更多。