9.2. 主题命名约定
KafkaTopic 资源包括主题的名称,以及一个标识它所属的 Kafka 集群名称的标签。
标识 Kafka 集群用于主题处理的标签
该标签提供 Kafka 资源的集群名称。主题 Operator 使用该标签作为确定要管理的 KafkaTopic 资源的机制。如果标签与 Kafka 集群不匹配,则 Topic Operator 无法看到 KafkaTopic,且不会创建主题。
Kafka 和 OpenShift 都有自己的命名验证规则,Kafka 主题名称在 OpenShift 中可能不是有效的资源名称。如果可能,请尝试并坚持适合两者的命名约定。
请考虑以下指南:
- 使用反映主题性质的主题名称
- 很简洁,并在 63 个字符下保留名称
- 使用所有小写和连字符
- 避免特殊字符、空格或符号
KafkaTopic 资源允许您使用 metadata.name 字段指定 Kafka 主题名称。但是,如果所需的 Kafka 主题名称不是有效的 OpenShift 资源名称,您可以使用 spec.topicName 属性来指定实际名称。spec.topicName 字段是可选的,当不存在时,Kafka 主题名称默认为主题的 metadata.name。创建主题时,无法稍后更改主题名称。
提供有效 Kafka 主题名称的示例
如果多个 KafkaTopic 资源引用同一 Kafka 主题,则首先创建的资源被视为管理该主题的资源。更新较新的资源的状态以指示冲突,并且它们的 Ready 状态更改为 False。
如果 Kafka 客户端应用程序(如 Kafka Streams)自动创建带有无效 OpenShift 资源名称的主题,则主题 Operator 会在双向模式中使用时生成一个有效的 metadata.name。它替换无效字符,并将哈希附加到名称中。但是,此行为不适用于(预览)单向模式。
替换无效主题名称的示例
apiVersion: kafka.strimzi.io/v1beta2 kind: KafkaTopic metadata: name: my-topic---c55e57fe2546a33f9e603caf57165db4072e827e # ...
apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaTopic
metadata:
name: my-topic---c55e57fe2546a33f9e603caf57165db4072e827e
# ...
如需有关集群中标识符和名称要求的更多信息,请参阅 OpenShift 文档 对象名称和 ID。