←Atras

Apache kafka en docker

18 septiembre, 2022

2 minutos de lectura

💻 devops🐳 dockerkafka

¿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

Kafka Diagram

Kafka Diagram

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.

© 2022 @kenriortega web page. All rights reserved