10.2. 主题命名约定
KafkaTopic 资源包括主题的名称,以及一个标识它所属的 Kafka 集群名称的标签。
标识 Kafka 集群用于主题处理的标签
apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaTopic
metadata:
name: topic-name-1
labels:
strimzi.io/cluster: my-cluster
spec:
topicName: topic-name-1
该标签提供 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 主题名称的示例
apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaTopic
metadata:
name: my-topic-1
spec:
topicName: My.Topic.1
# ...
如果多个 KafkaTopic 资源引用同一 Kafka 主题,则首先创建的资源被视为管理该主题的资源。更新较新的资源的状态以指示冲突,并且它们的 Ready 状态更改为 False。
Kafka 客户端应用程序(如 Kafka Streams)可自动创建带有无效 OpenShift 资源名称的主题。如果要管理这些主题,则必须使用不同的 .metadata.name 创建 KafkaTopic 资源,如上例中所示。
如需有关集群中标识符和名称要求的更多信息,请参阅 OpenShift 文档 对象名称和 ID。