Apache kafka en docker
18 septiembre, 2022
2 minutos de lectura
¿Ves algún error o quieres modificar algo? Haz una Pull Request
Apache kafka en 🐳
Hoy os traigo una propuesta simple pero muy eficiente para desplegar apache kafka en nuestro entorno de desarrollo y porque no en un servidor modesto en la nube para realizar pruebas de conceptos.
Hoy voy a mostrarles como he utilizado apache kafka y docker en mi dia a dia, para validar posibles propuestas de soluciones para aplicarlas en mis trabajos relacionados con Data Engineer
Requisitos
- Tener instalado docker visitar sitio oficial docker-desktop
Pues comenzemos primero es necesario comprender que existen muchas imágenes de docker que ofrecen un empaquetado de apache kafka, estas son las que he usado en mis pruebas de conceptos:
wurstmeister/kafka
confluentinc/cp-kafka
bitnami/kafka
Ambas son muy buenas y útiles, en nuestro caso de uso estaremos usando 🐳 bitnami/kafka
Pasos a seguir usando docker-compose
touch .env
vim .env
DOCKER_GATEWAY_HOST=<ip_addres>
VERSION=latest
📌 al usar el comando
docker compose up
si en la misma carpeta se encuentra definido nuestro fichero.env
de forma automatica cargara las variables de entorno definidas
En este paso crearemos nuestro docker-compose
para orquestar nuestros contenedores de apache kafka y apache zookeeper.
touch docker-compose.yaml
Nuestro archivo de definición de docker-compose, está compuesto por apache zookeeper, apache kafka y como valor agregado un cliente UI llamado kafdrop
version: "3.9"
services:
zookeeper:
image: 'bitnami/zookeeper:${VERSION}'
ports:
- '2181:2181'
environment:
- ALLOW_ANONYMOUS_LOGIN=yes
kafka:
image: 'bitnami/kafka:${VERSION}'
ports:
- '9092:9092'
environment:
- KAFKA_BROKER_ID=1
- KAFKA_CFG_LISTENERS=PLAINTEXT://:9092
- KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://${DOCKER_GATEWAY_HOST}:9092
- KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181
- ALLOW_PLAINTEXT_LISTENER=yes
- KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE=true
depends_on:
- zookeeper
kafdrop:
image: obsidiandynamics/kafdrop
restart: always
ports:
- "9001:9000"
environment:
KAFKA_BROKERCONNECT: "kafka:9092"
depends_on:
- kafka
Las variables de entorno utilizadas para nuetro nodo de kafka describe el comportamiento que presentara el mismo.
- KAFKA_BROKER_ID super importante esta variable ya que identifica a nuestro nodo con un valor distintivo dentro del cluster
- KAFKA_CFG_ADVERTISED_LISTENERS permite el acceso de sistemas externos a kafka sin que se encuentren nuestra red interna de docker o local.
Luego 🛵 nuestro comando docker compose up
y accedemos en nuestro navegador http:<ip_address>:9001
y podemos observar nuestra instancia de kafdrop
En próximos tutoriales estaremos abordando temas de seguridad como el acceso mediante usuario y contraseñas, y agregaremos un caso de uso simple de un producer y un consumer.
Recursos
Código del proyecto
Aquí tienes el repositorio en GitHub con todo el código utilizado en el artículo. Por si quieres revisarlo.