From ce3a75cae5a6c168c96eb5623502f5032052b99e Mon Sep 17 00:00:00 2001 From: Adam <897017+asemy@users.noreply.github.com> Date: Sat, 16 Oct 2021 23:16:36 +0200 Subject: [PATCH] kakfa kraft --- modules/kafka/build.gradle.kts | 0 modules/kafka/docker-compose.yml | 14 ++++++++++ modules/kafka/id-gen.sh | 13 +++++++++ modules/kafka/kafka.Dockerfile | 46 ++++++++++++++++++++++++++++++++ 4 files changed, 73 insertions(+) create mode 100644 modules/kafka/build.gradle.kts create mode 100644 modules/kafka/docker-compose.yml create mode 100644 modules/kafka/id-gen.sh create mode 100644 modules/kafka/kafka.Dockerfile diff --git a/modules/kafka/build.gradle.kts b/modules/kafka/build.gradle.kts new file mode 100644 index 0000000..e69de29 diff --git a/modules/kafka/docker-compose.yml b/modules/kafka/docker-compose.yml new file mode 100644 index 0000000..55217c6 --- /dev/null +++ b/modules/kafka/docker-compose.yml @@ -0,0 +1,14 @@ +version: "3.9" + +services: + + kafka: + image: dev-adamko/kafka + container_name: "kafka-factorio" + build: + dockerfile: "kafka.Dockerfile" + args: + KAFKA_DL_URL: "https://dlcdn.apache.org/kafka/3.0.0/kafka_2.13-3.0.0.tgz" + ports: + - "9092:9092" + - "9093:9093" \ No newline at end of file diff --git a/modules/kafka/id-gen.sh b/modules/kafka/id-gen.sh new file mode 100644 index 0000000..3473494 --- /dev/null +++ b/modules/kafka/id-gen.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +DELIM='-' + +WORDS="$(xkcdpass --numwords=2 --delimiter="$DELIM" --valid-chars='\w' --case='first')" + +NUMS=$(( (RANDOM + 10) % 100 )) + +echo "Generated ID $WORDS$DELIM$NUMS" + +echo "$WORDS$DELIM$NUMS" + +exit 0 \ No newline at end of file diff --git a/modules/kafka/kafka.Dockerfile b/modules/kafka/kafka.Dockerfile new file mode 100644 index 0000000..5297d14 --- /dev/null +++ b/modules/kafka/kafka.Dockerfile @@ -0,0 +1,46 @@ +ARG KAFKA_DL_URL=https://dlcdn.apache.org/kafka/3.0.0/kafka_2.13-3.0.0.tgz + +FROM debian:11-slim as Kafka-Download +ARG KAFKA_DL_URL + +WORKDIR /kafka + +RUN apt-get update && apt-get install -y \ + curl \ + && rm -rf /var/lib/apt/lists/* + +RUN echo "Downloading Kafka from $KAFKA_DL_URL" \ + && curl "$KAFKA_DL_URL" | tar --strip-components=1 -xz \ + && echo "Finished Kafka download" \ + && ls -la + + +FROM openjdk:11 + +WORKDIR /kafka + +COPY --from=Kafka-Download /kafka /kafka + +# hardcoded for now, based on values from './config/kraft/server.properties' +# log.dirs +VOLUME /tmp/kraft-combined-logs +# listeners, controller.quorum.voters +EXPOSE 9092, 9093 + +# KRaft (aka KIP-500) mode Preview Release +# https://github.com/apache/kafka/blob/041b76dc57f096be2a2d7532d917122992bff6e2/config/kraft/README.md + +# Generate a cluster ID +RUN echo "$(./bin/kafka-storage.sh random-uuid)" > cluster_id \ + && echo "Generated a Kafka Cluster ID: $(cat cluster_id)" + +# Format storage directories +RUN ./bin/kafka-storage.sh format -t "$(cat cluster_id)" -c ./config/kraft/server.properties + +# launch the broker in KRaft mode, which means that it runs without ZooKeeper +RUN ./bin/kafka-storage.sh format \ + --ignore-formatted \ + --config ./config/kraft/server.properties \ + --cluster-id "$(cat cluster_id)" + +ENTRYPOINT ["./bin/kafka-server-start.sh", "./config/kraft/server.properties"]