【Kafka】Confluent ~ Local環境構築 ~

■ はじめに

https://dk521123.hatenablog.com/entry/2024/05/09/144826

で、Confluent の REST API を試したいのだが、
まだ開発環境が用意できない状況だったのだが
調査する過程で、どうやらDockerでローカル上で
簡単に試せそうだったので、実際にやってみた

元ネタ

以下の公式サイトで紹介されている
『Confluent Admin REST APIs demo』を試した感じ

https://docs.confluent.io/ja-jp/platform/7.1/kafka-rest/api.html#rest-api-usage-examples-curl

より抜粋
~~~~~~~~~~~~~~~~
! ちなみに
-----
アプリの場合に同じ API をソースコードから呼び出す方法については、
『Confluent Admin REST APIs demo』を参照してください。
~~~~~~~~~~~~~~~~

https://github.com/confluentinc/demo-scene/tree/master/adminrest

目次

【1】Confluent の Local環境構築
 1)前提条件
 2)構築手順例
【2】動作確認
 1)Browser上でHello world
 2)REST API を実行してみる
【3】後片付け 

【1】Confluent の Local環境構築

1)前提条件

* ローカル環境上に以下が設定されていること
 + docker
 + jq (Optional)

2)構築手順例

# Step1: Git cloneでデモサイトをダウンロード
git clone https://github.com/confluentinc/demo-scene.git

# Step2: 『Confluent Admin REST APIs demo』に移動
cd ./demo-scene/adminrest

# Step3: Dockerコンテナを構築する
docker compose up -d

【2】動作確認

* 軽く動かしてみる

1)Browser上でHello world

* 以下を見ながらやった方がいいかも、、、キャプチャーもあるので。

https://github.com/confluentinc/demo-scene/tree/master/adminrest

[1] Main画面を表示

* ブラウザで以下にアクセスする

http://localhost/index.html

[2] Topic作成

1) 「New topic ...」リンクを押下
2) 以下を入力し「Create topic」ボタン押下
 + Topic name: 任意の文字列 (e.g. test_topic)
 + Partitions count: 任意の数字 (e.g. 1)
 + Replication factor: 任意の数字 (e.g. 1)
 => Main画面に戻ってきて、Topic名(e.g. test_topic)のリンクができているはず

2)REST API を実行してみる

* Confluent の REST API については、以下の関連記事を参照のこと

Confluent ~ REST API
https://dk521123.hatenablog.com/entry/2024/05/09/144826

[1] Kafka cluster ID を取得する

# 以下を参考に、Kafka cluster ID を取得する

# Kafka クラスタ一覧表示
curl --silent -X GET http://localhost:8090/kafka/v3/clusters | jq
...

# Kafka クラスタIDを取得する
curl --silent -X GET http://localhost:8090/kafka/v3/clusters | jq -r '.data[] | .cluster_id'
pKO9j-l2Tw-NWDWriD0E3g

# ついでに、個別実行も試してみる
curl --silent -X GET http://localhost:8090/kafka/v3/clusters/pKO9j-l2Tw-NWDWriD0E3g | jq

[2] REST API を使ってTopic作成

curl -H 'Content-Type: application/json' \
--request POST --url 'http://localhost:8090/kafka/v3/clusters/pKO9j-l2Tw-NWDWriD0E3g/topics' \
-d '{"topic_name": "demo_db.demo_schema.demo_topic1", "partitions_count": 1, "replication_factor": 1}'

[3] Topic一覧を表示する

$ curl --silent -X GET http://localhost:8090/kafka/v3/clusters/pKO9j-l2Tw-NWDWriD0E3g/topics | jq -r '.data[] | .topic_name'
_confluent-license
_confluent-metrics
_confluent-telemetry-metrics
_confluent_balancer_api_state
_confluent_balancer_broker_samples
_confluent_balancer_partition_samples
demo_db.demo_schema.demo_topic1
・・・

# システム内部で使っているTopic(_で始まるTopic)は、省く
$ curl --silent -X GET http://localhost:8090/kafka/v3/clusters/pKO9j-l2Tw-NWDWriD0E3g/topics | jq -r '.data[] | select(.name | startswith("_") | not)  | .topic_name'

【3】後片付け

# /demo-scene/adminrest 配下で、、、

# 停止
docker compose down

# 確認
docker ps

# docker image一覧表示
$ docker images
confluentinc/cp-server        6.0.0     0dxxxxxxxxx   2 years ago    1.24GB
confluentinc/cp-zookeeper     6.0.0     08xxxxxxxxx   2 years ago    721M

# docker image削除
# docker image rm <image-id>
$ docker image rm 0dxxxxxxxxx
$ docker image rm 08xxxxxxxxx

# 全部削除していいなら
# docker rmi $(docker images -q)

関連記事

Confluent ~ REST API
https://dk521123.hatenablog.com/entry/2024/05/09/144826
Confluent ~ Confluent CLI
https://dk521123.hatenablog.com/entry/2024/05/12/000159
Apache Kafka ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2023/04/26/103421
Apache Kafka ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2023/05/01/000000
Apache Kafka ~ Kafkaコマンド ~
https://dk521123.hatenablog.com/entry/2023/05/16/000000
Kafka Connect ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2023/04/29/185133
Kafka Connect ~ Rest API
https://dk521123.hatenablog.com/entry/2023/05/31/000000
curl コマンド
https://dk521123.hatenablog.com/entry/2017/12/05/233100
jq コマンド ~ JSON を扱う ~
https://dk521123.hatenablog.com/entry/2020/02/01/000000