Chapter 5. Using the Topic Operator
5.1. Topic Operator usage recommendations
-
Be consistent and always operate on
KafkaTopic
resources or always operate on topics directly. Avoid routinely using both methods for a given topic. When creating a
KafkaTopic
resource:- Remember that the name cannot be changed later.
-
Choose a name for the
KafkaTopic
resource that reflects the name of the topic it describes. -
Ideally the
KafkaTopic.metadata.name
should be the same as itsspec.topicName
. To do this, the topic name will have to be a valid Kubernetes resource name.
When creating a topic:
- Remember that the name cannot be changed later.
-
It is best to use a name that is a valid Kubernetes resource name, otherwise the operator will have to modify the name when creating the corresponding
KafkaTopic
.
5.2. Creating a topic
This procedure describes how to create a Kafka topic using a KafkaTopic
OpenShift resource.
Prerequisites
- A running Kafka cluster.
- A running Topic Operator.
Procedure
Prepare a file containing the
KafkaTopic
to be createdAn example
KafkaTopic
apiVersion: kafka.strimzi.io/v1beta1 kind: KafkaTopic metadata: name: orders labels: strimzi.io/cluster: my-cluster spec: partitions: 10 replicas: 2
NoteIt is recommended that the topic name given is a valid OpenShift resource name, as it is then not necessary to set the
KafkaTopic.spec.topicName
property. TheKafkaTopic.spec.topicName
cannot be changed after creation.NoteThe
KafkaTopic.spec.partitions
cannot be decreased.Create the
KafkaTopic
resource in OpenShift.On OpenShift this can be done using
oc apply
:oc apply -f your-file
Additional resources
-
For more information about the schema for
KafkaTopics
, seeKafkaTopic
schema reference. - For more information about deploying a Kafka cluster using the Cluster Operator, see Section 2.3, “Cluster Operator”.
- For more information about deploying the Topic Operator using the Cluster Operator, see Section 2.9.2, “Deploying the Topic Operator using the Cluster Operator”.
- For more information about deploying the standalone Topic Operator, see Section 4.2.5, “Deploying the standalone Topic Operator”.
5.3. Changing a topic
This procedure describes how to change the configuration of an existing Kafka topic by using a KafkaTopic
OpenShift resource.
Prerequisites
- A running Kafka cluster.
- A running Topic Operator.
-
An existing
KafkaTopic
to be changed.
Procedure
Prepare a file containing the desired
KafkaTopic
An example
KafkaTopic
apiVersion: kafka.strimzi.io/v1beta1 kind: KafkaTopic metadata: name: orders labels: strimzi.io/cluster: my-cluster spec: partitions: 16 replicas: 2
TipYou can get the current version of the resource using
oc get kafkatopic orders -o yaml
.NoteChanging topic names using the
KafkaTopic.spec.topicName
variable and decreasing partition size using theKafkaTopic.spec.partitions
variable is not supported by Kafka.CautionIncreasing
spec.partitions
for topics with keys will change how records are partitioned, which can be particularly problematic when the topic uses semantic partitioning.Update the
KafkaTopic
resource in OpenShift.On OpenShift this can be done using
oc apply
:oc apply -f your-file
Additional resources
-
For more information about the schema for
KafkaTopics
, seeKafkaTopic
schema reference. - For more information about deploying a Kafka cluster, see Section 2.3, “Cluster Operator”.
- For more information about deploying the Topic Operator using the Cluster Operator, see Section 2.9.2, “Deploying the Topic Operator using the Cluster Operator”.
- For more information about creating a topic using the Topic Operator, see Section 5.2, “Creating a topic”.
5.4. Deleting a topic
This procedure describes how to delete a Kafka topic using a KafkaTopic
OpenShift resource.
Prerequisites
- A running Kafka cluster.
- A running Topic Operator.
-
An existing
KafkaTopic
to be deleted. -
delete.topic.enable=true
(default)
The delete.topic.enable
property must be set to true
in Kafka.spec.kafka.config
. Otherwise, the steps outlined here will delete the KafkaTopic
resource, but the Kafka topic and its data will remain. After reconciliation by the Topic Operator, the custom resource is then recreated.
Procedure
Delete the
KafkaTopic
resource in OpenShift.On OpenShift this can be done using
oc
:oc delete kafkatopic your-topic-name
Additional resources
- For more information about deploying a Kafka cluster using the Cluster Operator, see Section 2.3, “Cluster Operator”.
- For more information about deploying the Topic Operator using the Cluster Operator, see Section 2.9.2, “Deploying the Topic Operator using the Cluster Operator”.
- For more information about creating a topic using the Topic Operator, see Section 5.2, “Creating a topic”.