🧬
Kafka image のバリエーション
Apache Kafka はソフトウェア資産的には LinkedIn から寄贈された。初期から続いている開発者も所属している Confluent が商用サポート付きのサービスを提供している。
現在 Kafka docker image というと、Apache で作成しているものと Confluent で作成しているものとの二つがある。
Apache 版
Apache community がメンテナンスしているイメージは、https://github.com/apache/kafka/tree/trunk/docker にある。イメージ名では apache/kafka
や apache/kafka-native
である。
より最適な動作のため graalvm 版もある。現在は KRaft mode デフォルトなので、設定はかなり簡素化されている。
環境変数
- "KAFKA_" prefix は KafkaDockerWrapper.scala で処理されている。broker あるいは kraft である controller を動かすのであれば、
KAFKA_
prefix な環境変数が使える。 - 一方で例えば "CONNECT_" prefix を処理しているところは存在しない。broker 以外のツールでは環境変数は使えないと思ってよく、引数で指定する property ファイルに値を列挙する。Confluent 版でも結局内部的にも環境変数のパラメータをプロパティファイルに書き出す処理が走っていたりするので、property ファイルを作るのを嫌がらなければ問題ない。
- LLM では Confluent 版と混乱した環境変数を書き始めるかもしれないけれど、誤りなのでプロパティファイルを生成させること。
KafkaDockerWrapper.scala まで
Confluent 版
Confluent がメンテナンスしているイメージは https://github.com/confluentinc/kafka-images にある。イメージ名では confluentinc/cp-server
や confluentinc/cp-kafka
である。
少し混乱しやすいけれども、商用版が server で、コミュニティ版が kafka になっている。
Dockerfile を確認すると、商用版には confluent-rebalancer
と confluent-security
が追加されていることがわかる。
Dockerfile での差分
$ diff -ur kafka server
diff -ur kafka/Dockerfile.ubi9 server/Dockerfile.ubi9
--- kafka/Dockerfile.ubi9 2025-05-23 15:33:18.773521114 +0900
+++ server/Dockerfile.ubi9 2025-05-23 15:33:18.783370190 +0900
@@ -27,7 +27,8 @@
LABEL version=$GIT_COMMIT
LABEL release=$PROJECT_VERSION
LABEL name=$ARTIFACT_ID
-LABEL summary="Confluent platform Kafka."
+LABEL summary="Confluent platform server image."
+LABEL description="Confluent platform server image."
LABEL io.confluent.docker=true
LABEL io.confluent.docker.git.id=$GIT_COMMIT
ARG BUILD_NUMBER=-1
@@ -60,14 +61,19 @@
gpgcheck=1 \n\
gpgkey=${CONFLUENT_PACKAGES_REPO}/archive.key \n\
enabled=1 " > /etc/yum.repos.d/confluent.repo \
- && yum install -y confluent-kafka-${CONFLUENT_VERSION} \
+ && echo "===> installing ${COMPONENT}..." \
+ && yum install -y confluent-server-${CONFLUENT_VERSION} \
+ && echo "===> installing confluent-rebalancer ..." \
+ && yum install -y confluent-rebalancer-${CONFLUENT_VERSION} \
+ && echo "===> installing confluent-security ..." \
+ && yum install -y confluent-security-${CONFLUENT_VERSION} \
&& echo "===> clean up ..." \
環境変数
-
KAFKA_
,CONNECT_
prefix は設定用の専用ツールを使って処理されている。 - この専用ツール
cub
,dub
は現在 https://github.com/confluentinc/confluent-docker-utils/ にある。結構便利なツールになっていて、prefix から抽出した設定変数一覧をテンプレートを使ってプロパティファイルへと変換している。 - 起動には変換後のプロパティファイルを使う。
Discussion