MT Channel Based Broker

https://knative.dev/docs/eventing/broker/mt-channel-based-broker/

Knative提供了一个多租户(Multi Tenant / MT)Broker的实现,使用channel进行事件路由。

开始准备

在使用 MT Broker 之前,您需要安装一个channel 提供商,例如,InMemoryChannel(用于开发目的),Kafka 或 Nats。

在您安装了将被MT Broker使用的channel提供商后,您必须创建一个ConfigMap,它指定如何配置Broker为路由事件创建的channel。

注意:本指南假设Knative Eventing安装在knative-eventing命名空间。如果您将Knative Eventing安装在不同的命名空间,请用该命名空间的名称替换knative-eventing。

配置Channel的ConfigMap

您可以通过修改每个channel类型的ConfigMap来定义每个channel类型的创建方式。

示例 InMemoryChannel ConfigMap

当你安装eventing版本时,会自动创建以下YAML文件:

apiVersion: v1
kind: ConfigMap
metadata:
  namespace: knative-eventing
  name: config-br-default-channel
data:
  channelTemplateSpec: |
    apiVersion: messaging.knative.dev/v1
    kind: InMemoryChannel

要创建一个使用InMemoryChannel的Broker,你可以像这样创建一个Broker:

kubectl create -f - <<EOF
apiVersion: eventing.knative.dev/v1
kind: Broker
metadata:
  annotations:
    eventing.knative.dev/broker.class: MTChannelBasedBroker
  name: default
  namespace: default
spec:
  config:
    apiVersion: v1
    kind: ConfigMap
    name: config-br-default-channel
    namespace: knative-eventing
EOF

而Broker将使用InMemoryChannel来处理路由事件。

Kafka channel configmap 示例

要使用Kafka channel,你必须创建一个YAML文件来指定如何创建这些通道。注意:你必须安装了Kafka通道。

您可以将以下示例代码复制到您的Kafka通道ConfigMap中:

apiVersion: v1
kind: ConfigMap
metadata:
  name: kafka-channel
  namespace: knative-eventing
data:
  channelTemplateSpec: |
    apiVersion: messaging.knative.dev/v1alpha1
    kind: KafkaChannel
    spec:
      numPartitions: 3
      replicationFactor: 1

注意:这个例子指定了两个Kafka Channels特有的额外参数:numPartitions和 replicationFactor。

要创建一个在底下使用Kafka的Broker,你会像这样做。

kubectl create -f - <<EOF
apiVersion: eventing.knative.dev/v1
kind: Broker
metadata:
  annotations:
    eventing.knative.dev/broker.class: MTChannelBasedBroker
  name: kafka-backed-broker
  namespace: default
spec:
  config:
    apiVersion: v1
    kind: ConfigMap
    name: kafka-channel
    namespace: knative-eventing
EOF