ACLs für AKHQ (andere UIs wahrscheinlich auch)
[demos/kafka/training] / README.sh
1 #!/bin/bash
2
3 IMAGE_CRUISECONTROL=juplo/cruise-control
4 IMAGE_KAFKA=juplo/kafka
5
6 if [ "$1" = "cleanup" ]
7 then
8   docker-compose -f docker/docker-compose.yml down -t0 -v --remove-orphans
9   (cd cruise-control; ./gradlew clean)
10   exit
11 fi
12
13 if [[
14   $(docker image ls -q $IMAGE_CRUISECONTROL) == "" ||
15   "$1" = "build"
16 ]]
17 then
18   DOCKER_BUILDKIT=0 docker build -t juplo/cruise-control cruise-control || exit 1
19 else
20   echo "Using image existing images:"
21   docker image ls $IMAGE_CRUISECONTROL
22 fi
23
24 if [[
25   $(docker image ls -q $IMAGE_KAFKA) == "" ||
26   "$1" = "build"
27 ]]
28 then
29   DOCKER_BUILDKIT=0 docker build -t juplo/kafka kafka || exit 1
30 else
31   echo "Using image existing images:"
32   docker image ls $IMAGE_KAFKA
33 fi
34
35 docker-compose -f docker/docker-compose.yml up --remove-orphans setup || exit 1
36
37 kafkacat -L -b :9092
38 kafkacat -L -b :9092 -Xsecurity.protocol=sasl_plaintext -Xsasl.mechanisms=PLAIN -Xsasl.username=client -Xsasl.password=client-secret
39
40 # Nicht nötig, da `super.users=User:ANONYMOUS` gesetzt wurde
41 # Ohne diesen Eintrag wären diverse ACLs nötig, bevor BROKER funktioniert!
42 # docker-compose exec cli kafka-acls --authorizer-properties zookeeper.connect=zookeeper zookeeper:2181 --add --allow-principal User:ANONYMOUS --operation ALL --topic __CruiseControlMetrics --group=*
43
44 # schema-registry
45 docker-compose -f docker/docker-compose.yml exec cli kafka-acls \
46   --authorizer-properties zookeeper.connect=zookeeper \
47   --add \
48   --allow-principal User:schemaregistry \
49   --topic _schemas \
50   --consumer --group=schema-registry \
51   --producer
52 docker-compose -f docker/docker-compose.yml exec cli kafka-acls \
53   --authorizer-properties zookeeper.connect=zookeeper \
54   --add \
55   --allow-principal User:schemaregistry \
56   --topic _schemas \
57   --operation=DescribeConfigs
58
59 docker-compose -f docker/docker-compose.yml up -d schema-registry
60 while [[ ! $(http :8085/subjects 2> /dev/null) ]]; do echo Waiting for schema-registry; sleep 1; done
61 cat user-v1.schema|http POST http://localhost:8085/subjects/user/versions "Content-Type:application/vnd.schemaregistry.v1+json"
62 http GET http://0:8085/subjects/user/versions/1/schema
63
64 # kafka-connect
65 docker-compose -f docker/docker-compose.yml exec cli kafka-acls \
66   --authorizer-properties zookeeper.connect=zookeeper \
67   --add \
68   --allow-principal User:connect \
69   --topic __connect \
70   --resource-pattern-type prefixed \
71   --consumer --group=kafka-connect \
72   --producer
73
74 docker-compose -f docker/docker-compose.yml up -d connect
75 while [[ ! $(http :8083/connectors 2> /dev/null) ]]; do echo Waiting for connect; sleep 1; done
76
77 # BEACHTE: Der Wildcard * benötigt den Matching-Typ LITERAL
78 # BEACHTE: Die * müssen vor der Bash geschützt werden
79 docker-compose -f docker/docker-compose.yml exec cli kafka-acls \
80   --authorizer-properties zookeeper.connect=zookeeper \
81   --add \
82   --allow-principal User:ui \
83   --cluster '*' \
84   --topic '*' \
85   --group '*' \
86   --transactional-id '*'