Channel 类型和默认设置¶
Knative 使用两种类型的 Channel
- 一个通用的 Channel 对象。
- 各自拥有自己自定义资源定义 (CRD) 的 Channel 实现,例如 InMemoryChannel 和 KafkaChannel。KafkaChannel 支持有序消费者投递保证,它是一个每分区阻塞式消费者,在从 CloudEvent 订阅者处收到成功响应后才会投递分区的下一个消息。
自定义 Channel 实现各自拥有自己的事件投递机制,例如内存中或基于 Broker。Broker 的示例包括 KafkaBroker 和 GCP Pub/Sub Broker。
Knative 默认提供 InMemoryChannel Channel 实现。此默认实现对那些不想配置特定实现类型(如 Apache Kafka 或 NATSS Channels)的开发者很有用。
如果您想创建一个 Channel 而不指定使用哪个 Channel 实现 CRD,则可以使用通用的 Channel 对象。如果您不关心特定 Channel 实现提供的属性(如顺序和持久性),并希望使用集群管理员选择的实现,那么此方法很有用。
集群管理员可以通过编辑 knative-eventing 命名空间中的 default-ch-webhook ConfigMap 来修改默认 Channel 实现设置。
有关修改 ConfigMap 的更多信息,请参阅 配置 Eventing Operator 自定义资源。
默认 Channels 可以为集群、集群上的命名空间或两者配置。
注意
如果为命名空间配置了默认 Channel 实现,这将覆盖集群的配置。
在以下示例中,集群默认 Channel 实现是 InMemoryChannel,而 example-namespace 的命名空间默认 Channel 实现是 KafkaChannel。
apiVersion: v1
kind: ConfigMap
metadata:
name: default-ch-webhook
namespace: knative-eventing
data:
default-ch-config: |
clusterDefault:
apiVersion: messaging.knative.dev/v1
kind: InMemoryChannel
namespaceDefaults:
example-namespace:
apiVersion: messaging.knative.dev/v1beta1
kind: KafkaChannel
spec:
numPartitions: 2
replicationFactor: 1
注意
InMemoryChannel Channels 不得在生产环境中使用。