testcontainers / testcontainers/testcontainers-java

Bad KAFKA_ADVERTISED_LISTENERS when exposing host ports to the container

Offen
#3,187 9 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

modules/kafka
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

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Ö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

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.