JulieOpsでKafka Topicを宣言的に管理する
Kafka Topicを宣言的に作成、管理できるツールにJuliopsというツールがある。 DocumentでのGetting Startedだけだと少し始め方が分からない部分もあるかもしれないので、簡単に手順をまとめる
1. JulieOpsのインストールする
CLIとDockerのサポートがある。ここではCLI(fat jar)で進める。
2. 定義ファイル(topology.yml)を作成する
code:topology.yml
---
context: "someproject"
projects:
- name: "benchmark"
topics:
- name: "partition10"
config:
replication.factor: "3"
num.partitions: "10"
min.insync.replicas: 2
- name: "partition50"
config:
replication.factor: "3"
num.partitions: "50"
min.insync.replicas: 2
作成されるトピックの名前は someproject.benchmark.partition10と someproject.benchmark.partition50 のようになる。(context-name.project-name.topic-name)
3. トピックを作成する
code:command
java -jar julie-ops.jar --topology topology.yml --clientConfig client.properties --brokers kafka:9092
client.propertiesにはKafka Brokerへ接続のために必要な追加情報などを記載しておく
4. トピックの設定を変更する
作成した定義ファイルに変更を加えて再度実行すれば反映される
5. 作成したトピックを削除する
削除したいトピックを定義ファイルから削除する。環境変数 ALLOW_DELETE_TOPICS=true をセットし削除を有効にしコマンドを実行する
code:command
ALLOW_DELETE_TOPICS=true java -jar julie-ops.jar --topology topology.yml --clientConfig client.properties --brokers kafka:9092
その他
トピック以外にもACLの設定やKafka Connectなどの設定が実施できる。KafkaのインストールはAnsibleやDockerfileなどでまとめて、Kafka上で管理されるトピックなどはJulieOpsで作成管理するようにしている