@testcontainers/kafka 10.7.1 → 10.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -20,12 +20,14 @@ interface PKCS12CertificateStore {
|
|
|
20
20
|
}
|
|
21
21
|
export declare class KafkaContainer extends GenericContainer {
|
|
22
22
|
private readonly uuid;
|
|
23
|
-
private
|
|
23
|
+
private mode;
|
|
24
24
|
private zooKeeperHost?;
|
|
25
25
|
private zooKeeperPort?;
|
|
26
26
|
private saslSslConfig?;
|
|
27
|
+
private originalWaitinStrategy;
|
|
27
28
|
constructor(image?: string);
|
|
28
29
|
withZooKeeper(host: string, port: number): this;
|
|
30
|
+
withKraft(): this;
|
|
29
31
|
withSaslSslListener(options: SaslSslListenerOptions): this;
|
|
30
32
|
protected beforeContainerCreated(): Promise<void>;
|
|
31
33
|
start(): Promise<StartedKafkaContainer>;
|
|
@@ -34,6 +36,11 @@ export declare class KafkaContainer extends GenericContainer {
|
|
|
34
36
|
private addPlaintextListener;
|
|
35
37
|
private updateAdvertisedListeners;
|
|
36
38
|
private createUser;
|
|
39
|
+
private verifyMinKraftVersion;
|
|
40
|
+
private isLessThanCP;
|
|
41
|
+
private commandKraftCreateUser;
|
|
42
|
+
private commandKraft;
|
|
43
|
+
private commandZookeeper;
|
|
37
44
|
}
|
|
38
45
|
export declare class StartedKafkaContainer extends AbstractStartedContainer {
|
|
39
46
|
constructor(startedTestContainer: StartedTestContainer);
|
package/build/kafka-container.js
CHANGED
|
@@ -2,16 +2,32 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.StartedKafkaContainer = exports.KafkaContainer = exports.KAFKA_IMAGE = void 0;
|
|
4
4
|
const testcontainers_1 = require("testcontainers");
|
|
5
|
+
const wait_for_container_1 = require("testcontainers/src/wait-strategies/wait-for-container");
|
|
6
|
+
const bound_ports_1 = require("testcontainers/src/utils/bound-ports");
|
|
5
7
|
const KAFKA_PORT = 9093;
|
|
6
8
|
const KAFKA_BROKER_PORT = 9092;
|
|
9
|
+
const KAFKA_CONTROLLER_PORT = 9094;
|
|
7
10
|
const DEFAULT_ZOOKEEPER_PORT = 2181;
|
|
11
|
+
const DEFAULT_CLUSTER_ID = "4L6g3nShT-eMCtK--X86sw";
|
|
12
|
+
const STARTER_SCRIPT = "/testcontainers_start.sh";
|
|
13
|
+
const WAIT_FOR_SCRIPT_MESSAGE = "Waiting for script...";
|
|
14
|
+
// https://docs.confluent.io/platform/7.0.0/release-notes/index.html#ak-raft-kraft
|
|
15
|
+
const MIN_KRAFT_VERSION = "7.0.0";
|
|
16
|
+
const MIN_KRAFT_SASL_VERSION = "7.5.0";
|
|
8
17
|
exports.KAFKA_IMAGE = "confluentinc/cp-kafka:7.2.2";
|
|
18
|
+
var KafkaMode;
|
|
19
|
+
(function (KafkaMode) {
|
|
20
|
+
KafkaMode[KafkaMode["EMBEDDED_ZOOKEEPER"] = 0] = "EMBEDDED_ZOOKEEPER";
|
|
21
|
+
KafkaMode[KafkaMode["PROVIDED_ZOOKEEPER"] = 1] = "PROVIDED_ZOOKEEPER";
|
|
22
|
+
KafkaMode[KafkaMode["KRAFT"] = 2] = "KRAFT";
|
|
23
|
+
})(KafkaMode || (KafkaMode = {}));
|
|
9
24
|
class KafkaContainer extends testcontainers_1.GenericContainer {
|
|
10
25
|
uuid = new testcontainers_1.RandomUuid();
|
|
11
|
-
|
|
26
|
+
mode = KafkaMode.EMBEDDED_ZOOKEEPER;
|
|
12
27
|
zooKeeperHost;
|
|
13
28
|
zooKeeperPort;
|
|
14
29
|
saslSslConfig;
|
|
30
|
+
originalWaitinStrategy;
|
|
15
31
|
constructor(image = exports.KAFKA_IMAGE) {
|
|
16
32
|
super(image);
|
|
17
33
|
this.withExposedPorts(KAFKA_PORT).withStartupTimeout(180000).withEnvironment({
|
|
@@ -25,13 +41,21 @@ class KafkaContainer extends testcontainers_1.GenericContainer {
|
|
|
25
41
|
KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: "0",
|
|
26
42
|
KAFKA_CONFLUENT_SUPPORT_METRICS_ENABLE: "false",
|
|
27
43
|
});
|
|
44
|
+
this.originalWaitinStrategy = this.waitStrategy;
|
|
28
45
|
}
|
|
29
46
|
withZooKeeper(host, port) {
|
|
30
|
-
this.
|
|
47
|
+
this.mode = KafkaMode.PROVIDED_ZOOKEEPER;
|
|
31
48
|
this.zooKeeperHost = host;
|
|
32
49
|
this.zooKeeperPort = port;
|
|
33
50
|
return this;
|
|
34
51
|
}
|
|
52
|
+
withKraft() {
|
|
53
|
+
this.verifyMinKraftVersion();
|
|
54
|
+
this.mode = KafkaMode.KRAFT;
|
|
55
|
+
this.zooKeeperHost = undefined;
|
|
56
|
+
this.zooKeeperPort = undefined;
|
|
57
|
+
return this;
|
|
58
|
+
}
|
|
35
59
|
withSaslSslListener(options) {
|
|
36
60
|
this.saslSslConfig = options;
|
|
37
61
|
return this;
|
|
@@ -45,30 +69,71 @@ class KafkaContainer extends testcontainers_1.GenericContainer {
|
|
|
45
69
|
else {
|
|
46
70
|
this.addPlaintextListener();
|
|
47
71
|
}
|
|
48
|
-
|
|
49
|
-
if (this.isZooKeeperProvided) {
|
|
72
|
+
if (this.mode === KafkaMode.PROVIDED_ZOOKEEPER) {
|
|
50
73
|
this.withEnvironment({ KAFKA_ZOOKEEPER_CONNECT: `${this.zooKeeperHost}:${this.zooKeeperPort}` });
|
|
51
74
|
}
|
|
52
|
-
else {
|
|
75
|
+
else if (this.mode === KafkaMode.EMBEDDED_ZOOKEEPER) {
|
|
53
76
|
this.zooKeeperHost = this.uuid.nextUuid();
|
|
54
77
|
this.zooKeeperPort = DEFAULT_ZOOKEEPER_PORT;
|
|
55
78
|
this.withExposedPorts(this.zooKeeperPort);
|
|
56
79
|
this.withEnvironment({ KAFKA_ZOOKEEPER_CONNECT: `localhost:${this.zooKeeperPort}` });
|
|
57
|
-
command += "echo 'clientPort=" + this.zooKeeperPort + "' > zookeeper.properties\n";
|
|
58
|
-
command += "echo 'dataDir=/var/lib/zookeeper/data' >> zookeeper.properties\n";
|
|
59
|
-
command += "echo 'dataLogDir=/var/lib/zookeeper/log' >> zookeeper.properties\n";
|
|
60
|
-
command += "zookeeper-server-start zookeeper.properties &\n";
|
|
61
80
|
}
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
81
|
+
else {
|
|
82
|
+
// Kraft
|
|
83
|
+
this.withEnvironment({
|
|
84
|
+
CLUSTER_ID: DEFAULT_CLUSTER_ID,
|
|
85
|
+
KAFKA_NODE_ID: this.environment["KAFKA_BROKER_ID"],
|
|
86
|
+
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: this.environment["KAFKA_LISTENER_SECURITY_PROTOCOL_MAP"] + ",CONTROLLER:PLAINTEXT",
|
|
87
|
+
KAFKA_LISTENERS: `${this.environment["KAFKA_LISTENERS"]},CONTROLLER://0.0.0.0:${KAFKA_CONTROLLER_PORT}`,
|
|
88
|
+
KAFKA_PROCESS_ROLES: "broker,controller",
|
|
89
|
+
KAFKA_CONTROLLER_QUORUM_VOTERS: `${this.environment["KAFKA_BROKER_ID"]}@${network}:${KAFKA_CONTROLLER_PORT}`,
|
|
90
|
+
KAFKA_CONTROLLER_LISTENER_NAMES: "CONTROLLER",
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
// Change the wait strategy to wait for a log message from a fake starter script
|
|
94
|
+
// so that we can put a real starter script in place at that moment
|
|
95
|
+
this.originalWaitinStrategy = this.waitStrategy;
|
|
96
|
+
this.waitStrategy = testcontainers_1.Wait.forLogMessage(WAIT_FOR_SCRIPT_MESSAGE);
|
|
97
|
+
this.withEntrypoint(["sh"]);
|
|
98
|
+
this.withCommand([
|
|
99
|
+
"-c",
|
|
100
|
+
`echo '${WAIT_FOR_SCRIPT_MESSAGE}'; while [ ! -f ${STARTER_SCRIPT} ]; do sleep 0.1; done; ${STARTER_SCRIPT}`,
|
|
101
|
+
]);
|
|
65
102
|
}
|
|
66
103
|
async start() {
|
|
104
|
+
if (this.mode === KafkaMode.KRAFT && this.saslSslConfig && this.isLessThanCP(7, 5)) {
|
|
105
|
+
throw new Error(`Provided Confluent Platform's version ${this.imageName.tag} is not supported in Kraft mode with sasl (must be ${MIN_KRAFT_SASL_VERSION} or above)`);
|
|
106
|
+
}
|
|
67
107
|
return new StartedKafkaContainer(await super.start());
|
|
68
108
|
}
|
|
69
109
|
async containerStarted(container, inspectResult) {
|
|
70
|
-
|
|
71
|
-
|
|
110
|
+
let command = "#!/bin/bash\n";
|
|
111
|
+
const advertisedListeners = this.updateAdvertisedListeners(container, inspectResult);
|
|
112
|
+
// exporting KAFKA_ADVERTISED_LISTENERS with the container hostname
|
|
113
|
+
command += `export KAFKA_ADVERTISED_LISTENERS=${advertisedListeners}\n`;
|
|
114
|
+
if (this.mode !== KafkaMode.KRAFT || this.isLessThanCP(7, 4)) {
|
|
115
|
+
// Optimization: skip the checks
|
|
116
|
+
command += "echo '' > /etc/confluent/docker/ensure \n";
|
|
117
|
+
}
|
|
118
|
+
if (this.mode === KafkaMode.KRAFT) {
|
|
119
|
+
if (this.saslSslConfig) {
|
|
120
|
+
command += this.commandKraftCreateUser(this.saslSslConfig);
|
|
121
|
+
}
|
|
122
|
+
if (this.isLessThanCP(7, 4)) {
|
|
123
|
+
command += this.commandKraft();
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
else if (this.mode === KafkaMode.EMBEDDED_ZOOKEEPER) {
|
|
127
|
+
command += this.commandZookeeper();
|
|
128
|
+
}
|
|
129
|
+
// Run the original command
|
|
130
|
+
command += "/etc/confluent/docker/run \n";
|
|
131
|
+
await container.copyContentToContainer([{ content: command, target: STARTER_SCRIPT, mode: 0o777 }]);
|
|
132
|
+
const client = await (0, testcontainers_1.getContainerRuntimeClient)();
|
|
133
|
+
const dockerContainer = client.container.getById(container.getId());
|
|
134
|
+
const boundPorts = bound_ports_1.BoundPorts.fromInspectResult(client.info.containerRuntime.hostIps, inspectResult).filter(this.exposedPorts);
|
|
135
|
+
await (0, wait_for_container_1.waitForContainer)(client, dockerContainer, this.originalWaitinStrategy, boundPorts);
|
|
136
|
+
if (this.saslSslConfig && this.mode !== KafkaMode.KRAFT) {
|
|
72
137
|
await this.createUser(container, this.saslSslConfig.sasl);
|
|
73
138
|
}
|
|
74
139
|
}
|
|
@@ -100,8 +165,8 @@ class KafkaContainer extends testcontainers_1.GenericContainer {
|
|
|
100
165
|
KAFKA_LISTENERS: `PLAINTEXT://0.0.0.0:${KAFKA_PORT},BROKER://0.0.0.0:${KAFKA_BROKER_PORT}`,
|
|
101
166
|
}).withExposedPorts(KAFKA_PORT);
|
|
102
167
|
}
|
|
103
|
-
|
|
104
|
-
|
|
168
|
+
updateAdvertisedListeners(container, inspectResult) {
|
|
169
|
+
let advertisedListeners = `BROKER://${inspectResult.hostname}:${KAFKA_BROKER_PORT}`;
|
|
105
170
|
let bootstrapServers = `PLAINTEXT://${container.getHost()}:${container.getMappedPort(KAFKA_PORT)}`;
|
|
106
171
|
if (this.saslSslConfig) {
|
|
107
172
|
if (this.networkMode) {
|
|
@@ -111,21 +176,8 @@ class KafkaContainer extends testcontainers_1.GenericContainer {
|
|
|
111
176
|
bootstrapServers = `${bootstrapServers},SECURE://${container.getHost()}:${container.getMappedPort(this.saslSslConfig.port)}`;
|
|
112
177
|
}
|
|
113
178
|
}
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
"--alter",
|
|
117
|
-
"--bootstrap-server",
|
|
118
|
-
brokerAdvertisedListener,
|
|
119
|
-
"--entity-type",
|
|
120
|
-
"brokers",
|
|
121
|
-
"--entity-name",
|
|
122
|
-
this.environment["KAFKA_BROKER_ID"],
|
|
123
|
-
"--add-config",
|
|
124
|
-
`advertised.listeners=[${bootstrapServers},${brokerAdvertisedListener}]`,
|
|
125
|
-
]);
|
|
126
|
-
if (exitCode !== 0) {
|
|
127
|
-
throw new Error(`Kafka container configuration failed with exit code ${exitCode}: ${output}`);
|
|
128
|
-
}
|
|
179
|
+
advertisedListeners += `,${bootstrapServers}`;
|
|
180
|
+
return advertisedListeners;
|
|
129
181
|
}
|
|
130
182
|
async createUser(container, { user: { name, password }, mechanism }) {
|
|
131
183
|
const { output, exitCode } = await container.exec([
|
|
@@ -146,6 +198,42 @@ class KafkaContainer extends testcontainers_1.GenericContainer {
|
|
|
146
198
|
throw new Error(`Kafka container configuration failed with exit code ${exitCode}: ${output}`);
|
|
147
199
|
}
|
|
148
200
|
}
|
|
201
|
+
verifyMinKraftVersion() {
|
|
202
|
+
if (this.isLessThanCP(7)) {
|
|
203
|
+
throw new Error(`Provided Confluent Platform's version ${this.imageName.tag} is not supported in Kraft mode (must be ${MIN_KRAFT_VERSION} or above)`);
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
isLessThanCP(max, min = 0, patch = 0) {
|
|
207
|
+
if (this.imageName.tag === "latest") {
|
|
208
|
+
return false;
|
|
209
|
+
}
|
|
210
|
+
const parts = this.imageName.tag.split(".");
|
|
211
|
+
return !(parts.length > 2 &&
|
|
212
|
+
(Number(parts[0]) > max ||
|
|
213
|
+
(Number(parts[0]) === max &&
|
|
214
|
+
(Number(parts[1]) > min || (Number(parts[1]) === min && Number(parts[2]) >= patch)))));
|
|
215
|
+
}
|
|
216
|
+
commandKraftCreateUser(saslOptions) {
|
|
217
|
+
return ("echo 'kafka-storage format --ignore-formatted " +
|
|
218
|
+
`-t "${this.environment["CLUSTER_ID"]}" ` +
|
|
219
|
+
"-c /etc/kafka/kafka.properties " +
|
|
220
|
+
`--add-scram "${saslOptions.sasl.mechanism}=[name=${saslOptions.sasl.user.name},password=${saslOptions.sasl.user.password}]"' >> /etc/confluent/docker/configure\n`);
|
|
221
|
+
}
|
|
222
|
+
commandKraft() {
|
|
223
|
+
let command = "sed -i '/KAFKA_ZOOKEEPER_CONNECT/d' /etc/confluent/docker/configure\n";
|
|
224
|
+
command +=
|
|
225
|
+
"echo 'kafka-storage format --ignore-formatted " +
|
|
226
|
+
`-t "${this.environment["CLUSTER_ID"]}" ` +
|
|
227
|
+
"-c /etc/kafka/kafka.properties' >> /etc/confluent/docker/configure\n";
|
|
228
|
+
return command;
|
|
229
|
+
}
|
|
230
|
+
commandZookeeper() {
|
|
231
|
+
let command = "echo 'clientPort=" + DEFAULT_ZOOKEEPER_PORT + "' > zookeeper.properties\n";
|
|
232
|
+
command += "echo 'dataDir=/var/lib/zookeeper/data' >> zookeeper.properties\n";
|
|
233
|
+
command += "echo 'dataLogDir=/var/lib/zookeeper/log' >> zookeeper.properties\n";
|
|
234
|
+
command += "zookeeper-server-start zookeeper.properties &\n";
|
|
235
|
+
return command;
|
|
236
|
+
}
|
|
149
237
|
}
|
|
150
238
|
exports.KafkaContainer = KafkaContainer;
|
|
151
239
|
class StartedKafkaContainer extends testcontainers_1.AbstractStartedContainer {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kafka-container.js","sourceRoot":"","sources":["../src/kafka-container.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"kafka-container.js","sourceRoot":"","sources":["../src/kafka-container.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@testcontainers/kafka",
|
|
3
|
-
"version": "10.
|
|
3
|
+
"version": "10.8.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"kafka",
|
|
@@ -32,6 +32,6 @@
|
|
|
32
32
|
"kafkajs": "^2.2.4"
|
|
33
33
|
},
|
|
34
34
|
"dependencies": {
|
|
35
|
-
"testcontainers": "^10.
|
|
35
|
+
"testcontainers": "^10.8.0"
|
|
36
36
|
}
|
|
37
37
|
}
|