testcontainers / testcontainers/testcontainers-java
Bad KAFKA_ADVERTISED_LISTENERS when exposing host ports to the container
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Java
- Sterne
- 8.7k
- Forks
- 1.9k
- Ø Merge
- 2 T. 17 Std.
- Gemergte PRs (30 T.)
- 9
Beschreibung
This issue relates to the Kafka module.
When using the testcontainers utility to expose host ports to all containers (see https://www.testcontainers.org/features/networking/#exposing-host-ports-to-the-container), KafkaContainer faills to start Kafka due to an internal misconfiguration.
The error seen from the Kafka container logs is the following:
java.lang.IllegalArgumentException: requirement failed: Each listener must have a different port, listeners: PLAINTEXT://localhost:32889,BROKER://192.168.0.2:9092,BROKER://172.17.0.4:9092
From my analysis, it seems that, when using the feature, testcontainers adds the additional bridge network to each container which messes up with the setup of the KAFKA_ADVERTISED_LISTENERS environment variable of the KafkaContainer class (see https://github.com/testcontainers/testcontainers-java/blob/master/modules/kafka/src/main/java/org/testcontainers/containers/KafkaContainer.java#L115-L121).
We change the affected part to use different ports when multiple networks are present, but I'm not sure of the implications. Any thoughts on the subject?
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginne mit modules/kafka/src/main/java/org/testcontainers/containers/KafkaContainer.java in der Nähe der Zeilen 115–121 und prüfe die Netzwerkdokumentation zum Freigeben von Host-Ports für Container. Reproduziere den Fehler mit einem zusätzlichen Bridge-Netzwerk und prüfe, wie KAFKA_ADVERTISED_LISTENERS zusammengesetzt wird. Als erledigt gilt, wenn KafkaContainer in dieser Konfiguration erfolgreich mit unterschiedlichen Listener-Ports startet.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- docker, java, kafka
- Bereich
- distributed-systems, networking, testing
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 35/100