--- /dev/null
+#!/bin/bash
+
+docker compose up -d zookeeper
+sleep 10
+docker compose exec zookeeper zookeeper-shell zookeeper:2181 create /cluster
+docker compose exec zookeeper zookeeper-shell zookeeper:2181 create /cluster/id
+docker compose exec zookeeper zookeeper-shell zookeeper:2181 set /cluster/id '{"version":"1","id":"8e-KqCzwQPqK7EibrzJE5g"}'
+docker compose exec zookeeper zookeeper-shell zookeeper:2181 get /cluster/id
+
+docker compose up -d producer consumer
+docker compose up setup
+
+# client
+docker-compose -f docker/docker-compose.yml exec cli kafka-acls \
+ --authorizer-properties zookeeper.connect=zookeeper \
+ --add \
+ --allow-principal User:client \
+ --topic test \
+ --consumer --group=my-group \
+ --producer
KAFKA_LISTENER_NAME_BROKER_PLAIN_SASL_JAAS_CONFIG: |
org.apache.kafka.common.security.plain.PlainLoginModule required \
user_broker="geheim" \
+ user_client="geheim" \
username="broker" \
password="geheim"; \
KAFKA_SASL_MECHANISM_INTER_BROKER_PROTOCOL: PLAIN
cli:
image: juplo/toolbox
command: sleep infinity
+ volumes:
+ - ./client.properties:/mnt/client.properties:ro
stop_grace_period: 0s
depends_on:
- kafka-1
setup:
image: juplo/toolbox
+ volumes:
+ - ./client.properties:/mnt/client.properties:ro
command:
- bash
- -c
kafka-topics --bootstrap-server kafka:9092 --describe --topic test
else
kafka-topics --bootstrap-server kafka:9092 \
+ --command-config /mnt/client.properties \
--delete \
--if-exists \
--topic test
kafka-topics --bootstrap-server kafka:9092 \
+ --command-config /mnt/client.properties \
--create \
--topic test \
--partitions 2 \
--replication-factor 3 \
--config min.insync.replicas=2 \
&& echo Das Topic \'test\' wurde erfolgreich angelegt: \
- && kafka-topics --bootstrap-server kafka:9092 --describe --topic test \
+ && kafka-topics --bootstrap-server kafka:9092 --command-config /mnt/client.properties --describe --topic test \
&& date > INITIALIZED
fi
stop_grace_period: 0s
environment:
spring.kafka.bootstrap-servers: kafka-1:9092,kafka-2:9092,kafka-3:9092
spring.kafka.client-id: producer
+ spring.kafka.jaas.enabled: "true"
+ spring.kafka.properties.security.protocol: SASL_PLAINTEXT
+ spring.kafka.properties.sasl.mechanism: PLAIN
+ spring.kafka.properties.sasl.jaas.config: org.apache.kafka.common.security.plain.PlainLoginModule required username="client" password="geheim";
juplo.producer.topic: test
consumer:
environment:
spring.kafka.bootstrap-servers: kafka-1:9092,kafka-2:9092,kafka-3:9092
spring.kafka.client-id: consumer
+ spring.kafka.jaas.enabled: "true"
+ spring.kafka.properties.security.protocol: SASL_PLAINTEXT
+ spring.kafka.properties.sasl.mechanism: PLAIN
+ spring.kafka.properties.sasl.jaas.config: org.apache.kafka.common.security.plain.PlainLoginModule required username="client" password="geheim";
spring.kafka.consumer.auto-offset-reset: earliest
logging.level.org.apache.kafka.clients.consumer: INFO
juplo.consumer.topic: test
environment:
spring.kafka.bootstrap-servers: kafka-1:9092,kafka-2:9092,kafka-3:9092
spring.kafka.client-id: peter
+ spring.kafka.jaas.enabled: "true"
+ spring.kafka.properties.security.protocol: SASL_PLAINTEXT
+ spring.kafka.properties.sasl.mechanism: PLAIN
+ spring.kafka.properties.sasl.jaas.config: org.apache.kafka.common.security.plain.PlainLoginModule required username="client" password="geheim";
spring.kafka.consumer.auto-offset-reset: earliest
logging.level.org.apache.kafka.clients.consumer: INFO
juplo.consumer.topic: test
environment:
spring.kafka.bootstrap-servers: kafka-1:9092,kafka-2:9092,kafka-3:9092
spring.kafka.client-id: ute
+ spring.kafka.jaas.enabled: "true"
+ spring.kafka.properties.security.protocol: SASL_PLAINTEXT
+ spring.kafka.properties.sasl.mechanism: PLAIN
+ spring.kafka.properties.sasl.jaas.config: org.apache.kafka.common.security.plain.PlainLoginModule required username="client" password="geheim";
spring.kafka.consumer.auto-offset-reset: earliest
logging.level.org.apache.kafka.clients.consumer: INFO
juplo.consumer.topic: test