3 IMAGE_CRUISECONTROL=juplo/cruise-control
4 IMAGE_KAFKA=juplo/kafka
6 if [ "$1" = "cleanup" ]
8 docker-compose -f docker/docker-compose.yml down -t0 -v --remove-orphans
9 (cd cruise-control; ./gradlew clean)
14 $(docker image ls -q $IMAGE_CRUISECONTROL) == "" ||
18 DOCKER_BUILDKIT=0 docker build -t juplo/cruise-control cruise-control || exit 1
20 echo "Using image existing images:"
21 docker image ls $IMAGE_CRUISECONTROL
25 $(docker image ls -q $IMAGE_KAFKA) == "" ||
29 DOCKER_BUILDKIT=0 docker build -t juplo/kafka kafka || exit 1
31 echo "Using image existing images:"
32 docker image ls $IMAGE_KAFKA
35 docker-compose -f docker/docker-compose.yml up --remove-orphans setup || exit 1
38 kafkacat -L -b :9092 -Xsecurity.protocol=sasl_plaintext -Xsasl.mechanisms=SCRAM-SHA-512 -Xsasl.username=client -Xsasl.password=client-secret
40 docker-compose -f docker/docker-compose.yml exec cli kafka-configs \
41 --zookeeper zookeeper:2181 \
43 --add-config 'SCRAM-SHA-512=[password=schemaregistry-secret]' \
45 --entity-name schemaregistry
46 docker-compose -f docker/docker-compose.yml exec cli kafka-configs \
47 --zookeeper zookeeper:2181 \
49 --add-config 'SCRAM-SHA-512=[password=connect-secret]' \
52 docker-compose -f docker/docker-compose.yml exec cli kafka-configs \
53 --zookeeper zookeeper:2181 \
55 --add-config 'SCRAM-SHA-512=[password=ui-secret]' \
58 docker-compose -f docker/docker-compose.yml exec cli kafka-configs \
59 --zookeeper zookeeper:2181 \
61 --add-config 'SCRAM-SHA-512=[password=client-secret]' \
65 kafkacat -L -b :9092 -Xsecurity.protocol=sasl_plaintext -Xsasl.mechanisms=SCRAM-SHA-512 -Xsasl.username=client -Xsasl.password=client-secret
67 # Nicht nötig, da `super.users=User:ANONYMOUS` gesetzt wurde
68 # Ohne diesen Eintrag wären diverse ACLs nötig, bevor BROKER funktioniert!
69 # docker-compose exec cli kafka-acls --authorizer-properties zookeeper.connect=zookeeper zookeeper:2181 --add --allow-principal User:ANONYMOUS --operation ALL --topic __CruiseControlMetrics --group=*
72 docker-compose -f docker/docker-compose.yml exec cli kafka-acls \
73 --authorizer-properties zookeeper.connect=zookeeper \
75 --allow-principal User:schemaregistry \
77 --consumer --group=schema-registry \
79 docker-compose -f docker/docker-compose.yml exec cli kafka-acls \
80 --authorizer-properties zookeeper.connect=zookeeper \
82 --allow-principal User:schemaregistry \
84 --operation=DescribeConfigs
86 docker-compose -f docker/docker-compose.yml up -d schema-registry
87 while [[ ! $(http :8085/subjects 2> /dev/null) ]]; do echo Waiting for schema-registry; sleep 1; done
88 cat user-v1.schema|http POST http://localhost:8085/subjects/user/versions "Content-Type:application/vnd.schemaregistry.v1+json"
89 http GET http://0:8085/subjects/user/versions/1/schema
92 docker-compose -f docker/docker-compose.yml exec cli kafka-acls \
93 --authorizer-properties zookeeper.connect=zookeeper \
95 --allow-principal User:connect \
97 --resource-pattern-type prefixed \
98 --consumer --group=kafka-connect \
101 docker-compose -f docker/docker-compose.yml up -d connect
102 while [[ ! $(http :8083/connectors 2> /dev/null) ]]; do echo Waiting for connect; sleep 1; done
104 # BEACHTE: Der Wildcard * benötigt den Matching-Typ LITERAL
105 # BEACHTE: Die * müssen vor der Bash geschützt werden
106 docker-compose -f docker/docker-compose.yml exec cli kafka-acls \
107 --authorizer-properties zookeeper.connect=zookeeper \
109 --allow-principal User:ui \
113 --transactional-id '*'