第5章 Topic Operator の使用
5.1. Topic Operator の使用に関する推奨事項
トピックを使用する場合は、一貫した方法で使用し、常に KafkaTopic
リソースで操作するか、またはトピックで直接操作します。特定のトピックで、両方の方法を頻繁に切り替えないでください。
トピックの性質を反映するトピック名を使用し、後で名前を変更できないことに注意してください。
Kafka でトピックを作成する場合は、有効な OpenShift リソース名である名前を使用します。それ以外の場合は、Topic Operator は対応する KafkaTopic
を OpenShift ルールに準じた名前で作成する必要があります。
OpenShift の識別子および名前の推奨事項については、OpenShift コミュニティーの記事「Identifiers and Names」を参照してください。
Kafka トピックの命名規則
Kafka と OpenShift では、Kafka と KafkaTopic.metadata.name
でのトピックの命名にそれぞれ独自の検証ルールを適用します。トピックごとに有効な名前があり、他のトピックには無効です。
spec.topicName
プロパティーを使用すると、OpenShift の Kafka トピックでは無効な名前を使用して、Kafka で有効なトピックを作成できます。
spec.topicName
プロパティーは Kafka の命名検証ルールを継承します。
- 249 文字を超える名前は使用できません。
-
Kafka トピックの有効な文字は ASCII 英数字、
.
、_
、および-
です。 -
名前を
.
または..
にすることはできませんが、.
はexampleTopic.
や.exampleTopic
のように名前で使用できます。
spec.topicName
は変更しないでください。
以下に例を示します。
kind: KafkaTopic metadata: name: topic-name-1 spec: topicName: topicName-1 # Upper case is invalid in OpenShift # ...
上記は下記のように変更できません
kind: KafkaTopic metadata: name: topic-name-1 spec: topicName: name-2 # ...
Kafka Streams など一部の Kafka クライアントアプリケーションは、プログラムを使用して Kafka でトピックを作成できます。これらのトピックに、OpenShift リソース名としては無効な名前が付いている場合、Topic Operator はそれらのトピックに Kafka 名に基づく有効な名前を付けます。無効な文字が置き換えられ、ハッシュが名前に追加されます。
5.2. トピックの作成
この手順では、KafkaTopic
OpenShift リソースを使用して Kafka トピックを作成する方法を説明します。
前提条件
- 稼働中の Kafka クラスターが必要です。
- 稼働中の Topic Operator が必要です (通常は Entity Operator を使用してデプロイされます) 。
手順
作成する
KafkaTopic
が含まれるファイルを準備します。KafkaTopic
の例apiVersion: kafka.strimzi.io/v1beta1 kind: KafkaTopic metadata: name: orders labels: strimzi.io/cluster: my-cluster spec: partitions: 10 replicas: 2
注記KafkaTopic.spec.topicName
プロパティーの設定が必要ないため、トピック名を有効な OpenShift リソース名にすることが推奨されます。KafkaTopic.spec.topicName
は作成後に変更することはできません。注記KafkaTopic.spec.partitions
を減らすことはできません。OpenShift で
KafkaTopic
リソースを作成します。oc apply
を使用してこれを行うことができます。oc apply -f your-file
その他のリソース
-
KafkaTopics
のスキーマに関する詳細は、「KafkaTopic
スキーマ参照」を参照してください。 - Cluster Operator を使用した Kafka クラスターのデプロイメントに関する詳細は、「Cluster Operator」を参照してください。
- Cluster Operator を使用した Topic Operator のデプロイメントに関する詳細は、「Cluster Operator を使用した Topic Operator のデプロイ」を参照してください。
- スタンドアロン Topic Operator のデプロイメントに関する詳細は、「スタンドアロン Topic Operator のデプロイ」を参照してください。
5.3. トピックの変更
この手順は、KafkaTopic
OpenShift リソースを使用して、既存の Kafka トピックの設定を変更する方法を説明します。
前提条件
- 稼働中の Kafka クラスターが必要です。
- 稼働中の Topic Operator が必要です (通常は Entity Operator でデプロイされます)。
-
変更する既存の
KafkaTopic
。
手順
必要な
KafkaTopic
が含まれるファイルを準備します。KafkaTopic
の例apiVersion: kafka.strimzi.io/v1beta1 kind: KafkaTopic metadata: name: orders labels: strimzi.io/cluster: my-cluster spec: partitions: 16 replicas: 2
ヒントoc get kafkatopic orders -o yaml
を使用すると、現行バージョンのリソースを取得できます。注記KafkaTopic.spec.topicName
変数を使用したトピック名の変更、およびKafkaTopic.spec.partitions
変数を使用したパーティションサイズの縮小は、Kafka ではサポートされていません。注意キーのあるトピックの
spec.partitions
を増やすと、レコードをパーティション化する方法が変更されます。これは、トピックがセマンティックパーティションを使用するとき、特に問題になる場合があります。OpenShift で
KafkaTopic
リソースを更新します。oc apply
を使用してこれを行うことができます。oc apply -f your-file
その他のリソース
-
KafkaTopics
のスキーマに関する詳細は、「KafkaTopic
スキーマ参照」を参照してください。 - Kafka クラスターのデプロイメントに関する詳細は、「Cluster Operator」を参照してください。
- Cluster Operator を使用した Topic Operator のデプロイメントに関する詳細は、「Cluster Operator を使用した Topic Operator のデプロイ」を参照してください。
- Topic Operator を使用したトピックの作成に関する詳細は、「トピックの作成」を参照してください。
5.4. トピックの削除
この手順では、KafkaTopic
OpenShift リソースを使用して Kafka トピックを削除する方法を説明します。
前提条件
- 稼働中の Kafka クラスターが必要です。
- 稼働中の Topic Operator が必要です (通常は Entity Operator でデプロイされます)。
-
削除する既存の
KafkaTopic
。 -
delete.topic.enable=true
(デフォルト)
delete.topic.enable
プロパティーは、Kafka.spec.kafka.config
で true
に設定する必要があります。それ以外の場合は、ここで説明した手順によって KafkaTopic
リソースが削除されますが、Kafka トピックとそのデータは保持されます。Topic Operator による調整後、カスタムリソースが再作成されます。
手順
OpenShift で
KafkaTopic
リソースを削除します。oc delete
を使用してこれを行うことができます。oc delete kafkatopic your-topic-name
その他のリソース
- Cluster Operator を使用した Kafka クラスターのデプロイメントに関する詳細は、「Cluster Operator」を参照してください。
- Cluster Operator を使用した Topic Operator のデプロイメントに関する詳細は、「Cluster Operator を使用した Topic Operator のデプロイ」を参照してください。
- Topic Operator を使用したトピックの作成に関する詳細は、「トピックの作成」を参照してください。