使用集群或命名空间默认值创建 Channel¶
开发者可以通过创建 Channel 对象实例来创建任何受支持的实现类型的 Channel。
创建 Channel
-
使用以下模板为 Channel 对象 创建一个 YAML 文件
其中apiVersion: messaging.knative.dev/v1 kind: Channel metadata: name: <example-channel> namespace: <namespace><example-channel>是您要创建的 Channel 的名称。<namespace>是您的目标命名空间的名称。
-
通过运行命令应用 YAML 文件
其中kubectl apply -f <filename>.yaml<filename>是您在上一步中创建的文件的名称。
如果您在 default 命名空间中创建此对象,根据 Channel 类型和默认值 中的默认 ConfigMap 示例,它将是 InMemoryChannel Channel 实现。
Channel 对象创建后,一个 mutating admission webhook 会根据默认的 Channel 实现设置 spec.channelTemplate
apiVersion: messaging.knative.dev/v1
kind: Channel
metadata:
name: <example-channel>
namespace: <namespace>
spec:
channelTemplate:
apiVersion: messaging.knative.dev/v1
kind: <channel-template-kind>
<example-channel>是您要创建的 Channel 的名称。<namespace>是您的目标命名空间的名称。<channel-template-kind>是 Channel 的 kind,例如 InMemoryChannel 或 KafkaChannel,这取决于默认的 ConfigMap。请参阅 Channel 类型和默认值 中的示例。
注意
spec.channelTemplate 属性在创建后不能更改,因为它是由默认的 Channel 机制设置的,而不是由用户设置的。
Channel 控制器会根据 spec.channelTemplate 创建一个后备的 Channel 实例。
当使用此机制时,会创建两个对象;一个通用的 Channel 对象和一个 InMemoryChannel 对象。通用对象通过复制其到 Subscriptions 的订阅并将状态设置为 InMemoryChannel 对象的状态,充当 InMemoryChannel 对象的代理。
注意
默认值仅在 Channel 或 Sequence 首次创建时由 webhook 应用。如果默认设置发生更改,新的默认值将仅应用于新创建的 Channels、Brokers 或 Sequences。现有资源不会自动更新以使用新配置。