Starting kafka with below configuration (fragment of docker compose file) works:
kafka:
image: confluentinc/cp-kafka:7.6.0
depends_on:
- zookeeper
networks:
- dev-net
ports:
- 9093:9093
environment:
KAFKA_BROKER_ID: 1
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_INTERNAL:PLAINTEXT
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT_INTERNAL://kafka:9092,PLAINTEXT://localhost:9093
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
KAFKA_AUTO_CREATE_TOPICS_ENABLE: "true"
zookeeper:
image: confluentinc/cp-zookeeper:7.6.0
environment:
ZOOKEEPER_CLIENT_PORT: 2181
ZOOKEEPER_TICK_TIME: 2000
networks:
- dev-net
ports:
- "2181:2181"
But after changing names of listeners like this:
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: L1:PLAINTEXT,L2:PLAINTEXT
KAFKA_ADVERTISED_LISTENERS: L1://kafka:9092,L2://localhost:9093
I get the following error:
2025-07-21T12:30:52+02:00 [2025-07-21 10:30:52,029] ERROR Exiting Kafka due to fatal exception (kafka.Kafka$)
2025-07-21T12:30:52+02:00 java.lang.IllegalArgumentException: requirement failed: inter.broker.listener.name must be a listener name defined in advertised.listeners. The valid options based on currently configured listeners are L1,L2
2025-07-21T12:30:52+02:00 at scala.Predef$.require(Predef.scala:337)
2025-07-21T12:30:52+02:00 at kafka.server.KafkaConfig.validateValues(KafkaConfig.scala:2390)
2025-07-21T12:30:52+02:00 at kafka.server.KafkaConfig.<init>(KafkaConfig.scala:2233)
2025-07-21T12:30:52+02:00 at kafka.server.KafkaConfig.<init>(KafkaConfig.scala:1604)
2025-07-21T12:30:52+02:00 at kafka.Kafka$.buildServer(Kafka.scala:72)
2025-07-21T12:30:52+02:00 at kafka.Kafka$.main(Kafka.scala:91)
2025-07-21T12:30:52+02:00 at kafka.Kafka.main(Kafka.scala)
Why?
The default value for that config is PLAINTEXT
(via security.inter.broker.protocol
). It is expected to configure this when changing any listeners