🧬

Kafka image のバリエーション

に公開

Apache Kafka はソフトウェア資産的には LinkedIn から寄贈された。初期から続いている開発者も所属している Confluent が商用サポート付きのサービスを提供している。

現在 Kafka docker image というと、Apache で作成しているものと Confluent で作成しているものとの二つがある。

Apache 版

Apache community がメンテナンスしているイメージは、https://github.com/apache/kafka/tree/trunk/docker にある。イメージ名では apache/kafkaapache/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-serverconfluentinc/cp-kafka である。

少し混乱しやすいけれども、商用版が server で、コミュニティ版が kafka になっている。

Dockerfile を確認すると、商用版には confluent-rebalancerconfluent-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