[DOCKER] SETUP KAFKA NGINX AUTH - fourslickz/notes GitHub Wiki
docker-compose.yml
version: "3.9"
services:
zookeeper:
image: confluentinc/cp-zookeeper:7.6.1
container_name: zookeeper
restart: unless-stopped
environment:
ZOOKEEPER_CLIENT_PORT: 2181
ZOOKEEPER_TICK_TIME: 2000
ports:
- "2181:2181"
volumes:
- /opt/docker/kafka/data/zookeeper/data:/var/lib/zookeeper/data
- /opt/docker/kafka/data/zookeeper/log:/var/lib/zookeeper/log
healthcheck:
test: ["CMD", "nc", "-z", "localhost", "2181"]
interval: 10s
timeout: 5s
retries: 5
kafka:
image: confluentinc/cp-kafka:7.6.1
container_name: kafka
restart: unless-stopped
depends_on:
zookeeper:
condition: service_healthy
ports:
- "9092:9092"
environment:
KAFKA_BROKER_ID: 1
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT
KAFKA_LISTENERS: INTERNAL://0.0.0.0:29092,EXTERNAL://0.0.0.0:9092
KAFKA_ADVERTISED_LISTENERS: INTERNAL://kafka:29092,EXTERNAL://10.130.249.225:9092
KAFKA_INTER_BROKER_LISTENER_NAME: INTERNAL
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
volumes:
- /opt/docker/kafka/data/kafka:/var/lib/kafka/data
healthcheck:
test: ["CMD", "nc", "-z", "localhost", "9092"]
interval: 10s
timeout: 5s
retries: 5
kafka-ui:
image: provectuslabs/kafka-ui:v0.7.2
container_name: kafka-ui
restart: unless-stopped
depends_on:
kafka:
condition: service_healthy
ports:
- "127.0.0.1:3088:8080"
environment:
KAFKA_CLUSTERS_0_NAME: local_kafka
KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: kafka:29092
KAFKA_CLUSTERS_0_ZOOKEEPER: zookeeper:2181
Permission
sudo mkdir -p /opt/docker/kafka/data/zookeeper/data
sudo mkdir -p /opt/docker/kafka/data/zookeeper/log
sudo mkdir -p /opt/docker/kafka/data/kafka
sudo chown -R 1000:1000 /opt/docker/kafka
Nginx
server {
listen 443 ssl;
server_name kafka.yourdomain.com;
ssl_certificate /etc/letsencrypt/live/kafka.yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/kafka.yourdomain.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1:3088;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
auth_basic "Restricted Access";
auth_basic_user_file /etc/nginx/.htpasswd;
}
}
Create auth
sudo apt install apache2-utils
sudo htpasswd -c /etc/nginx/.htpasswd admin
htpasswd -c /etc/nginx/.htpasswd admin