Skip to content

Commit a63e616

Browse files
authored
Add Kafka KRaft mode support with Conduktor (#164)
* Add Kafka KRaft mode support with Conduktor and JMX integration * updated confluent cpvversion * updated Kafka version and README * added a test
1 parent 3aaf56e commit a63e616

File tree

3 files changed

+71
-0
lines changed

3 files changed

+71
-0
lines changed

.github/workflows/main.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,3 +52,7 @@ jobs:
5252

5353
- name: run test full-stack 8
5454
run: ./test.sh full-stack.yml 8
55+
56+
- name: run test conduktor-kafka-single 3
57+
run: ./test.sh conduktor-kafka-single.yml 3
58+

README.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,20 @@ docker compose -f full-stack.yml up
5555
docker compose -f full-stack.yml down
5656
```
5757

58+
## Single Kafka (KRaft mode) + Conduktor
59+
60+
This configuration fits most development requirements.
61+
62+
- Kafka will be available at `$DOCKER_HOST_IP:9092`
63+
- Conduktor will be available at : `$DOCKER_HOST_IP:8080`
64+
65+
Run with:
66+
```
67+
docker compose -f conduktor-kafka-single.yml up
68+
docker compose -f conduktor-kafka-single.yml down
69+
```
70+
71+
5872
## Single Zookeeper / Single Kafka
5973

6074
This configuration fits most development requirements.

conduktor-kafka-single.yml

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
services:
2+
postgresql:
3+
image: postgres:14
4+
hostname: postgresql
5+
volumes:
6+
- pg_data:/var/lib/postgresql/data
7+
environment:
8+
POSTGRES_DB: "conduktor-console"
9+
POSTGRES_USER: "conduktor"
10+
POSTGRES_PASSWORD: "some_password"
11+
POSTGRES_HOST_AUTH_METHOD: "scram-sha-256"
12+
conduktor-console:
13+
image: conduktor/conduktor-console:1.36.2
14+
ports:
15+
- "8080:8080"
16+
volumes:
17+
- conduktor_data:/var/conduktor
18+
environment:
19+
CDK_DATABASE_URL: "postgresql://conduktor:some_password@postgresql:5432/conduktor-console"
20+
CDK_CLUSTERS_0_ID: "default"
21+
CDK_CLUSTERS_0_NAME: "My Local Kafka Cluster"
22+
CDK_CLUSTERS_0_COLOR: "#0013E7"
23+
CDK_CLUSTERS_0_BOOTSTRAPSERVERS: "PLAINTEXT://kafka1:19092"
24+
# CONSOLE_JAVA_OPTS: "-XX:UseSVE=0"
25+
kafka1:
26+
image: confluentinc/cp-kafka:8.0.0
27+
hostname: kafka1
28+
container_name: kafka1
29+
ports:
30+
- "9092:9092"
31+
- "29092:29092"
32+
- "9999:9999" # JMX Port
33+
- "9099:9099" # Internal inter-broker communication
34+
environment:
35+
environment:
36+
CLUSTER_ID: MkU3OEVBNTcwNTJENDM2Qk
37+
KAFKA_NODE_ID: 1
38+
KAFKA_PROCESS_ROLES: broker,controller
39+
KAFKA_CONTROLLER_QUORUM_VOTERS: "1@kafka1:9099"
40+
KAFKA_LISTENERS: INTERNAL://0.0.0.0:19092,EXTERNAL://0.0.0.0:9092,DOCKER://0.0.0.0:29092,CONTROLLER://0.0.0.0:9099
41+
KAFKA_ADVERTISED_LISTENERS: INTERNAL://kafka1:19092,EXTERNAL://${DOCKER_HOST_IP:-127.0.0.1}:9092,DOCKER://host.docker.internal:29092
42+
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT,DOCKER:PLAINTEXT,CONTROLLER:PLAINTEXT
43+
KAFKA_CONTROLLER_LISTENER_NAMES: CONTROLLER
44+
KAFKA_INTER_BROKER_LISTENER_NAME: INTERNAL
45+
KAFKA_LOG4J_LOGGERS: "kafka.controller=INFO,kafka.producer.async.DefaultEventHandler=INFO,state.change.logger=INFO"
46+
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
47+
KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
48+
KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
49+
KAFKA_AUTHORIZER_CLASS_NAME: org.apache.kafka.metadata.authorizer.StandardAuthorizer
50+
KAFKA_ALLOW_EVERYONE_IF_NO_ACL_FOUND: "true"
51+
volumes:
52+
pg_data: {}
53+
conduktor_data: {}

0 commit comments

Comments
 (0)