Skip to content

Commit 483f2ec

Browse files
SiaaG-devgkwan-ibmshin19991207GeeTransit
authored
Update to use Apache Kafka Docker image (#379)
* update to apache kafka Signed-off-by: Siaa Gor <Siaa.Gor@ibm.com> * added apache/kafka:latest word instead Signed-off-by: Siaa Gor <Siaa.Gor@ibm.com> * organize imports * Update README.adoc * Remove .java-version * dev content review Signed-off-by: Gilbert Kwan <gkwan@ca.ibm.com> * dev content review Signed-off-by: Gilbert Kwan <gkwan@ca.ibm.com> * Update README.adoc --------- Signed-off-by: Siaa Gor <Siaa.Gor@ibm.com> Signed-off-by: Gilbert Kwan <gkwan@ca.ibm.com> Co-authored-by: Siaa Gor <Siaa.Gor@ibm.com> Co-authored-by: Gilbert Kwan <gkwan@ca.ibm.com> Co-authored-by: Morgan Chang <shin19991207@gmail.com> Co-authored-by: George Zhang <geetransit@gmail.com>
1 parent bbccc49 commit 483f2ec

File tree

16 files changed

+123
-125
lines changed

16 files changed

+123
-125
lines changed

.github/workflows/test.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,5 +58,5 @@ jobs:
5858
if: always()
5959
run: |
6060
sudo docker images
61-
echo bitnamilegacy/kafka:latest version:
62-
sudo docker inspect --format "{{ index .Config.Labels \"org.opencontainers.image.version\"}}" bitnamilegacy/kafka:latest
61+
echo apache/kafka:latest version:
62+
sudo docker inspect --format "{{ index .Config.Labels \"org.opencontainers.image.version\"}}" apache/kafka:latest

README.adoc

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -251,6 +251,8 @@ include::{common-includes}/os-tabs.adoc[]
251251
```
252252
--
253253

254+
// cloud hosted instruction
255+
ifdef::cloud-hosted[]
254256
In this IBM Cloud environment, you must first create the ***logs*** directory by running the following commands:
255257
```bash
256258
mkdir -p /home/project/guide-reactive-service-testing/start/system/target/liberty/wlp/usr/servers/defaultServer/logs
@@ -355,7 +357,7 @@ include::finish/system/Dockerfile[]
355357

356358
Construct the [hotspot=buildSystemImage file=0]`systemImage` by using the `ImageFromDockerfile` class, which allows Testcontainers to build the Docker image from a Dockerfile during the test run time. For instance, the provided Dockerfile at the specified [hotspot file=3]`./Dockerfile` paths is used to generate the `system:1.0-SNAPSHOT` image.
357359

358-
Use the [hotspot=kafkaContainer file=0]`kafkaContainer` class to instantiate the `kafkaContainer` test container, initiating the `confluentinc/cp-kafka:latest` Docker image. Similarly, use the `GenericContainer` class to create the [hotspot=systemContainer file=0]`systemContainer` test container, starting the `system:1.0-SNAPSHOT` Docker image.
360+
Use the [hotspot=kafkaContainer file=0]`kafkaContainer` class to instantiate the `kafkaContainer` test container, initiating the `apache/kafka:latest` Docker image. Similarly, use the `GenericContainer` class to create the [hotspot=systemContainer file=0]`systemContainer` test container, starting the `system:1.0-SNAPSHOT` Docker image.
359361

360362
The [hotspot=withListener file=0]`withListener()` is configured to `kafka:19092`, as the containerized `system` microservice functions as an additional producer. Therefore, the Kafka container needs to set up a listener to accommodate this requirement. For more information about using an additional consumer or producer with a Kafka container, see the https://java.testcontainers.org/modules/kafka/[Testcontainers Kafka documentation^]
361363

@@ -443,6 +445,8 @@ The `inventory` microservice is tested in the same way as the `system` microserv
443445

444446
=== Launching the inventory microservice in dev mode with container
445447

448+
// cloud hosted instruction
449+
ifdef::cloud-hosted[]
446450
First, create the ***logs*** directory by running the following commands:
447451
```bash
448452
mkdir -p /home/project/guide-reactive-service-testing/start/inventory/target/liberty/wlp/usr/servers/defaultServer/logs

finish/inventory/src/test/java/it/io/openliberty/guides/inventory/InventoryServiceIT.java

Lines changed: 25 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -11,49 +11,44 @@
1111
// end::copyright[]
1212
package it.io.openliberty.guides.inventory;
1313

14-
import java.util.List;
15-
import java.net.Socket;
16-
import java.time.Duration;
17-
1814
import static org.junit.jupiter.api.Assertions.assertEquals;
1915

2016
import java.math.BigDecimal;
17+
import java.net.Socket;
2118
import java.nio.file.Paths;
19+
import java.time.Duration;
20+
import java.util.List;
2221
import java.util.Properties;
23-
24-
import jakarta.ws.rs.core.GenericType;
25-
import jakarta.ws.rs.core.Response;
26-
import jakarta.ws.rs.core.UriBuilder;
27-
import jakarta.ws.rs.client.ClientBuilder;
28-
29-
import org.slf4j.Logger;
30-
import org.slf4j.LoggerFactory;
31-
import org.junit.jupiter.api.Test;
32-
import org.junit.jupiter.api.AfterAll;
33-
import org.junit.jupiter.api.AfterEach;
34-
import org.junit.jupiter.api.BeforeAll;
35-
import org.junit.jupiter.api.BeforeEach;
36-
import org.junit.jupiter.api.Assertions;
37-
import org.testcontainers.containers.Network;
38-
import org.apache.kafka.clients.producer.ProducerRecord;
39-
import org.apache.kafka.clients.producer.ProducerConfig;
4022
// tag::KafkaProducer[]
4123
import org.apache.kafka.clients.producer.KafkaProducer;
4224
// end::KafkaProducer[]
43-
import org.testcontainers.kafka.ConfluentKafkaContainer;
44-
import org.testcontainers.containers.GenericContainer;
45-
import org.testcontainers.junit.jupiter.Testcontainers;
46-
import org.testcontainers.images.builder.ImageFromDockerfile;
25+
import org.apache.kafka.clients.producer.ProducerConfig;
26+
import org.apache.kafka.clients.producer.ProducerRecord;
4727
import org.apache.kafka.common.serialization.StringSerializer;
4828
import org.jboss.resteasy.client.jaxrs.ResteasyClient;
4929
import org.jboss.resteasy.client.jaxrs.ResteasyClientBuilder;
5030
import org.jboss.resteasy.client.jaxrs.ResteasyWebTarget;
51-
import org.testcontainers.containers.wait.strategy.Wait;
31+
import org.junit.jupiter.api.AfterAll;
32+
import org.junit.jupiter.api.AfterEach;
33+
import org.junit.jupiter.api.Assertions;
34+
import org.junit.jupiter.api.BeforeAll;
35+
import org.junit.jupiter.api.BeforeEach;
36+
import org.junit.jupiter.api.Test;
37+
import org.slf4j.Logger;
38+
import org.slf4j.LoggerFactory;
39+
import org.testcontainers.containers.GenericContainer;
40+
import org.testcontainers.containers.Network;
5241
import org.testcontainers.containers.output.Slf4jLogConsumer;
53-
42+
import org.testcontainers.containers.wait.strategy.Wait;
43+
import org.testcontainers.images.builder.ImageFromDockerfile;
44+
import org.testcontainers.junit.jupiter.Testcontainers;
45+
import org.testcontainers.kafka.KafkaContainer;
5446
import io.openliberty.guides.models.SystemLoad;
5547
import io.openliberty.guides.models.SystemLoad.SystemLoadSerializer;
56-
48+
import jakarta.ws.rs.client.ClientBuilder;
49+
import jakarta.ws.rs.core.GenericType;
50+
import jakarta.ws.rs.core.Response;
51+
import jakarta.ws.rs.core.UriBuilder;
5752

5853
@Testcontainers
5954
// tag::InventoryServiceIT[]
@@ -71,8 +66,8 @@ public class InventoryServiceIT {
7166
new ImageFromDockerfile("inventory:1.0-SNAPSHOT")
7267
.withDockerfile(Paths.get("./Dockerfile"));
7368

74-
private static ConfluentKafkaContainer kafkaContainer =
75-
new ConfluentKafkaContainer("confluentinc/cp-kafka:latest")
69+
private static KafkaContainer kafkaContainer =
70+
new KafkaContainer("apache/kafka:latest")
7671
.withListener("kafka:19092")
7772
.withNetwork(network);
7873

finish/scripts/buildImages.bat

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
@ECHO Starting Scripts
22
@ECHO OFF
33

4-
start /b docker pull -q bitnamilegacy/kafka:latest
4+
start /b docker pull -q apache/kafka:latest
55

66
start /b docker build -q -t system:1.0-SNAPSHOT system\.
77
start /b docker build -q -t inventory:1.0-SNAPSHOT inventory\.

finish/scripts/buildImages.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#!/bin/bash
22

33
echo Pull kafka images
4-
docker pull -q bitnamilegacy/kafka:latest
4+
docker pull -q apache/kafka:latest
55

66
echo Building images
77
docker build -t system:1.0-SNAPSHOT system/. &

finish/scripts/startContainers.bat

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,18 +5,18 @@ set NETWORK=reactive-app
55
docker network create %NETWORK%
66

77
docker run -d ^
8-
-e ALLOW_PLAINTEXT_LISTENER=yes ^
9-
-e KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://kafka:9092 ^
10-
-e KAFKA_CFG_NODE_ID=0 ^
11-
-e KAFKA_CFG_PROCESS_ROLES=controller,broker ^
12-
-e KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,CONTROLLER://:9093 ^
13-
-e KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=0@kafka:9093 ^
14-
-e KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER ^
8+
-e KAFKA_NODE_ID=0 ^
9+
-e KAFKA_PROCESS_ROLES=controller,broker ^
10+
-e KAFKA_LISTENERS=PLAINTEXT://:9092,CONTROLLER://:9093 ^
11+
-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://kafka:9092 ^
12+
-e KAFKA_CONTROLLER_QUORUM_VOTERS=0@kafka:9093 ^
13+
-e KAFKA_CONTROLLER_LISTENER_NAMES=CONTROLLER ^
14+
-e KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=1 ^
1515
--hostname=kafka ^
1616
--network=%NETWORK% ^
1717
--name=kafka ^
1818
--rm ^
19-
bitnamilegacy/kafka:latest
19+
apache/kafka:latest
2020

2121
start /b docker run -d ^
2222
-p 9083:9083 ^

finish/scripts/startContainers.sh

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,18 +5,18 @@ NETWORK=reactive-app
55
docker network create $NETWORK
66

77
docker run -d \
8-
-e ALLOW_PLAINTEXT_LISTENER=yes \
9-
-e KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://kafka:9092 \
10-
-e KAFKA_CFG_NODE_ID=0 \
11-
-e KAFKA_CFG_PROCESS_ROLES=controller,broker \
12-
-e KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,CONTROLLER://:9093 \
13-
-e KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=0@kafka:9093 \
14-
-e KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER \
8+
-e KAFKA_NODE_ID=0 \
9+
-e KAFKA_PROCESS_ROLES=controller,broker \
10+
-e KAFKA_LISTENERS=PLAINTEXT://:9092,CONTROLLER://:9093 \
11+
-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://kafka:9092 \
12+
-e KAFKA_CONTROLLER_QUORUM_VOTERS=0@kafka:9093 \
13+
-e KAFKA_CONTROLLER_LISTENER_NAMES=CONTROLLER \
14+
-e KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=1 \
1515
--hostname=kafka \
1616
--network=$NETWORK \
1717
--name=kafka \
1818
--rm \
19-
bitnamilegacy/kafka:latest
19+
apache/kafka:latest
2020

2121
echo "Waiting until Kafka is ready..."
2222
sleep 15

finish/scripts/startKafka.bat

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,16 @@ set NETWORK=reactive-app
55
docker network create %NETWORK%
66

77
docker run -d ^
8-
-e ALLOW_PLAINTEXT_LISTENER=yes ^
9-
-e KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://kafka:9092,LOCAL://localhost:9094 ^
10-
-e KAFKA_CFG_NODE_ID=0 ^
11-
-e KAFKA_CFG_PROCESS_ROLES=controller,broker ^
12-
-e KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,CONTROLLER://:9093,LOCAL://:9094 ^
13-
-e KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=PLAINTEXT:PLAINTEXT,CONTROLLER:PLAINTEXT,LOCAL:PLAINTEXT ^
14-
-e KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=0@kafka:9093 ^
15-
-e KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER ^
8+
-e KAFKA_NODE_ID=0 ^
9+
-e KAFKA_PROCESS_ROLES=controller,broker ^
10+
-e KAFKA_LISTENERS=PLAINTEXT://:9092,CONTROLLER://:9093,LOCAL://:9094 ^
11+
-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://kafka:9092,LOCAL://localhost:9094 ^
12+
-e KAFKA_LISTENER_SECURITY_PROTOCOL_MAP=PLAINTEXT:PLAINTEXT,CONTROLLER:PLAINTEXT,LOCAL:PLAINTEXT ^
13+
-e KAFKA_CONTROLLER_QUORUM_VOTERS=0@kafka:9093 ^
14+
-e KAFKA_CONTROLLER_LISTENER_NAMES=CONTROLLER ^
15+
-e KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=1 ^
1616
-p 9094:9094 ^
1717
--network=%NETWORK% ^
1818
--name=kafka ^
1919
--rm ^
20-
bitnamilegacy/kafka:latest
20+
apache/kafka:latest

finish/scripts/startKafka.sh

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,18 @@ docker network create $NETWORK
66
# end::dockerNetworkSetup[]
77

88
docker run -d \
9-
-e ALLOW_PLAINTEXT_LISTENER=yes \
10-
-e KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://kafka:9092,LOCAL://localhost:9094 \
11-
-e KAFKA_CFG_NODE_ID=0 \
12-
-e KAFKA_CFG_PROCESS_ROLES=controller,broker \
13-
-e KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,CONTROLLER://:9093,LOCAL://:9094 \
14-
-e KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=PLAINTEXT:PLAINTEXT,CONTROLLER:PLAINTEXT,LOCAL:PLAINTEXT \
15-
-e KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=0@kafka:9093 \
16-
-e KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER \
9+
-e KAFKA_NODE_ID=0 \
10+
-e KAFKA_PROCESS_ROLES=controller,broker \
11+
-e KAFKA_LISTENERS=PLAINTEXT://:9092,CONTROLLER://:9093,LOCAL://:9094 \
12+
-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://kafka:9092,LOCAL://localhost:9094 \
13+
-e KAFKA_LISTENER_SECURITY_PROTOCOL_MAP=PLAINTEXT:PLAINTEXT,CONTROLLER:PLAINTEXT,LOCAL:PLAINTEXT \
14+
-e KAFKA_CONTROLLER_QUORUM_VOTERS=0@kafka:9093 \
15+
-e KAFKA_CONTROLLER_LISTENER_NAMES=CONTROLLER \
16+
-e KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=1 \
1717
-p 9094:9094 \
1818
--network=$NETWORK \
1919
--name=kafka \
2020
--rm \
21-
bitnamilegacy/kafka:latest &
21+
apache/kafka:latest &
2222

2323
wait

finish/system/src/test/java/it/io/openliberty/guides/system/SystemServiceIT.java

Lines changed: 19 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -11,28 +11,13 @@
1111
// end::copyright[]
1212
package it.io.openliberty.guides.system;
1313

14+
import static org.junit.jupiter.api.Assertions.assertNotNull;
15+
1416
import java.net.Socket;
17+
import java.nio.file.Paths;
1518
import java.time.Duration;
1619
import java.util.Collections;
1720
import java.util.Properties;
18-
import java.nio.file.Paths;
19-
20-
import org.slf4j.Logger;
21-
import org.slf4j.LoggerFactory;
22-
import org.junit.jupiter.api.Test;
23-
import org.junit.jupiter.api.AfterAll;
24-
import org.junit.jupiter.api.AfterEach;
25-
import org.junit.jupiter.api.BeforeAll;
26-
import org.junit.jupiter.api.BeforeEach;
27-
import org.testcontainers.junit.jupiter.Testcontainers;
28-
import static org.junit.jupiter.api.Assertions.assertNotNull;
29-
30-
import org.testcontainers.kafka.ConfluentKafkaContainer;
31-
import org.testcontainers.containers.Network;
32-
import org.testcontainers.containers.wait.strategy.Wait;
33-
import org.testcontainers.images.builder.ImageFromDockerfile;
34-
import org.testcontainers.containers.GenericContainer;
35-
import org.testcontainers.containers.output.Slf4jLogConsumer;
3621

3722
import org.apache.kafka.clients.consumer.ConsumerConfig;
3823
import org.apache.kafka.clients.consumer.ConsumerRecord;
@@ -41,6 +26,20 @@
4126
import org.apache.kafka.clients.consumer.KafkaConsumer;
4227
// end::KafkaConsumer[]
4328
import org.apache.kafka.common.serialization.StringDeserializer;
29+
import org.junit.jupiter.api.AfterAll;
30+
import org.junit.jupiter.api.AfterEach;
31+
import org.junit.jupiter.api.BeforeAll;
32+
import org.junit.jupiter.api.BeforeEach;
33+
import org.junit.jupiter.api.Test;
34+
import org.slf4j.Logger;
35+
import org.slf4j.LoggerFactory;
36+
import org.testcontainers.containers.GenericContainer;
37+
import org.testcontainers.containers.Network;
38+
import org.testcontainers.containers.output.Slf4jLogConsumer;
39+
import org.testcontainers.containers.wait.strategy.Wait;
40+
import org.testcontainers.images.builder.ImageFromDockerfile;
41+
import org.testcontainers.junit.jupiter.Testcontainers;
42+
import org.testcontainers.kafka.KafkaContainer;
4443

4544
import io.openliberty.guides.models.SystemLoad;
4645
import io.openliberty.guides.models.SystemLoad.SystemLoadDeserializer;
@@ -64,8 +63,8 @@ public class SystemServiceIT {
6463
// end::buildSystemImage[]
6564

6665
// tag::kafkaContainer[]
67-
private static ConfluentKafkaContainer kafkaContainer =
68-
new ConfluentKafkaContainer("confluentinc/cp-kafka:latest")
66+
private static KafkaContainer kafkaContainer =
67+
new KafkaContainer("apache/kafka:latest")
6968
// tag::withListener[]
7069
.withListener("kafka:19092")
7170
// end::withListener[]

0 commit comments

Comments
 (0)