Skip to content

Commit cb7c57b

Browse files
committed
chore: update Kafka CI
1 parent 4ba8aa5 commit cb7c57b

File tree

4 files changed

+80
-127
lines changed

4 files changed

+80
-127
lines changed

.circleci/config.yml

Lines changed: 29 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -34,17 +34,22 @@ commands:
3434
- save_cache:
3535
name: Save Cargo Cache
3636
paths:
37-
- /usr/local/cargo/registry
37+
- ~/.cargo/registry
3838
key: cargo-cache-{{ arch }}-{{ .Branch }}-{{ checksum "Cargo.toml" }}
3939

4040
install_packages:
41-
description: Install zlib-dev
41+
description: Install packages
4242
steps:
4343
- run:
44-
name: Install zlib-dev
44+
name: Install packages
45+
environment:
46+
# Keep Ubuntu from doing stupid things
47+
DEBIAN_FRONTEND: noninteractive
48+
NEEDRESTART_MODE: l
4549
command: |
4650
sudo apt-get update
47-
sudo apt-get install -y zlib1g-dev
51+
sudo apt-get install -y clang docker-compose zlib1g-dev
52+
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
4853
4954
jobs:
5055
fmt:
@@ -186,7 +191,9 @@ jobs:
186191
- --set redpanda.auto_create_topics_enabled=false
187192
- image: serjs/go-socks5-proxy
188193
name: proxy
189-
resource_class: xlarge # use of a smaller executor tends crashes on link
194+
environment:
195+
- REQUIRE_AUTH=false
196+
resource_class: xlarge # use of a smaller executor tends crashes on link
190197
environment:
191198
# Disable incremental compilation to avoid overhead. We are not preserving these files anyway.
192199
CARGO_INCREMENTAL: "0"
@@ -207,9 +214,9 @@ jobs:
207214
SOCKS_PROXY: "proxy:1080"
208215
steps:
209216
- checkout
217+
- install_packages
210218
- rust_components
211219
- cache_restore
212-
- install_packages
213220
- run:
214221
name: Cargo test
215222
command: cargo test --all-features --all-targets
@@ -222,59 +229,9 @@ jobs:
222229
path: proptest-regressions
223230

224231
test-kafka:
225-
# setup multiple docker images (see https://circleci.com/docs/2.0/configuration-reference/#docker)
226-
docker:
227-
- image: quay.io/influxdb/rust:ci
228-
- image: docker.io/bitnami/zookeeper:3.7
229-
name: zookeeper
230-
environment:
231-
- ALLOW_ANONYMOUS_LOGIN=yes
232-
- image: docker.io/bitnami/kafka:3.9.0
233-
name: kafka-0
234-
environment:
235-
- KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181
236-
- KAFKA_CFG_BROKER_ID=0
237-
- ALLOW_PLAINTEXT_LISTENER=yes
238-
- KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CLIENT:PLAINTEXT,EXTERNAL:PLAINTEXT,SECURE:SASL_PLAINTEXT
239-
- KAFKA_CFG_LISTENERS=CLIENT://:9092,EXTERNAL://:9093,SECURE://:9094
240-
- KAFKA_CFG_ADVERTISED_LISTENERS=CLIENT://kafka-0:9092,EXTERNAL://kafka-0:9093,SECURE://kafka-0:9094
241-
- KAFKA_INTER_BROKER_LISTENER_NAME=CLIENT
242-
- KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE=false
243-
- KAFKA_CLIENT_USERS=admin
244-
- KAFKA_CLIENT_PASSWORDS=admin-secret
245-
- KAFKA_CLIENT_LISTENER_NAME=SECURE
246-
- image: docker.io/bitnami/kafka:3.9.0
247-
name: kafka-1
248-
environment:
249-
- KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181
250-
- KAFKA_CFG_BROKER_ID=1
251-
- ALLOW_PLAINTEXT_LISTENER=yes
252-
- KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CLIENT:PLAINTEXT,EXTERNAL:PLAINTEXT,SECURE:SASL_PLAINTEXT
253-
- KAFKA_CFG_LISTENERS=CLIENT://:9092,EXTERNAL://:9093,SECURE://:9094
254-
- KAFKA_CFG_ADVERTISED_LISTENERS=CLIENT://kafka-1:9092,EXTERNAL://kafka-1:9093,SECURE://kafka-1:9094
255-
- KAFKA_CFG_SASL_ENABLED_MECHANISMS=PLAIN
256-
- KAFKA_INTER_BROKER_LISTENER_NAME=CLIENT
257-
- KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE=false
258-
- KAFKA_CLIENT_USERS=admin
259-
- KAFKA_CLIENT_PASSWORDS=admin-secret
260-
- KAFKA_CLIENT_LISTENER_NAME=SECURE
261-
- image: docker.io/bitnami/kafka:3.9.0
262-
name: kafka-2
263-
environment:
264-
- KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181
265-
- KAFKA_CFG_BROKER_ID=2
266-
- ALLOW_PLAINTEXT_LISTENER=yes
267-
- KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CLIENT:PLAINTEXT,EXTERNAL:PLAINTEXT,SECURE:SASL_PLAINTEXT
268-
- KAFKA_CFG_LISTENERS=CLIENT://:9092,EXTERNAL://:9093,SECURE://:9094
269-
- KAFKA_CFG_ADVERTISED_LISTENERS=CLIENT://kafka-2:9092,EXTERNAL://kafka-2:9093,SECURE://kafka-2:9094
270-
- KAFKA_INTER_BROKER_LISTENER_NAME=CLIENT
271-
- KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE=false
272-
- KAFKA_CLIENT_USERS=admin
273-
- KAFKA_CLIENT_PASSWORDS=admin-secret
274-
- KAFKA_CLIENT_LISTENER_NAME=SECURE
275-
- image: serjs/go-socks5-proxy
276-
name: proxy
277-
resource_class: xlarge # use of a smaller executor tends crashes on link
232+
machine:
233+
image: default
234+
resource_class: xlarge # use of a smaller executor tends crashes on link
278235
environment:
279236
# Disable incremental compilation to avoid overhead. We are not preserving these files anyway.
280237
CARGO_INCREMENTAL: "0"
@@ -291,14 +248,18 @@ jobs:
291248
TEST_JAVA_INTEROPT: 1
292249
# Don't use the first node here since this is likely the controller and we want to ensure that we automatically
293250
# pick the controller for certain actions (e.g. topic creation) and don't just get lucky.
294-
KAFKA_CONNECT: "invalid:9093,kafka-1:9093"
295-
KAFKA_SASL_CONNECT: kafka-1:9094
296-
SOCKS_PROXY: "proxy:1080"
251+
KAFKA_CONNECT: "invalid:9093,kafka-1:9021"
252+
KAFKA_SASL_CONNECT: kafka-1:9097
253+
SOCKS_PROXY: "localhost:1080"
297254
steps:
298255
- checkout
256+
- install_packages
299257
- rust_components
300258
- cache_restore
301-
- install_packages
259+
- run:
260+
name: start container
261+
command: docker-compose -f docker-compose-kafka.yml up
262+
background: true
302263
- run:
303264
name: Cargo test
304265
command: cargo test --all-features --all-targets
@@ -314,7 +275,7 @@ jobs:
314275
build-default-features:
315276
docker:
316277
- image: quay.io/influxdb/rust:ci
317-
resource_class: xlarge # use of a smaller executor tends crashes on link
278+
resource_class: xlarge # use of a smaller executor tends crashes on link
318279
environment:
319280
# Disable incremental compilation to avoid overhead. We are not preserving these files anyway.
320281
CARGO_INCREMENTAL: "0"
@@ -336,7 +297,7 @@ jobs:
336297
build-no-default-features:
337298
docker:
338299
- image: quay.io/influxdb/rust:ci
339-
resource_class: xlarge # use of a smaller executor tends crashes on link
300+
resource_class: xlarge # use of a smaller executor tends crashes on link
340301
environment:
341302
# Disable incremental compilation to avoid overhead. We are not preserving these files anyway.
342303
CARGO_INCREMENTAL: "0"
@@ -358,7 +319,7 @@ jobs:
358319
build-all-features:
359320
docker:
360321
- image: quay.io/influxdb/rust:ci
361-
resource_class: xlarge # use of a smaller executor tends crashes on link
322+
resource_class: xlarge # use of a smaller executor tends crashes on link
362323
environment:
363324
# Disable incremental compilation to avoid overhead. We are not preserving these files anyway.
364325
CARGO_INCREMENTAL: "0"
@@ -376,12 +337,11 @@ jobs:
376337
command: cargo build --all-features
377338
- cache_save
378339

379-
380340
# Builds fuzzing.
381341
build-fuzz:
382342
docker:
383343
- image: quay.io/influxdb/rust:ci
384-
resource_class: xlarge # use of a smaller executor tends crashes on link
344+
resource_class: xlarge # use of a smaller executor tends crashes on link
385345
environment:
386346
# Disable incremental compilation to avoid overhead. We are not preserving these files anyway.
387347
CARGO_INCREMENTAL: "0"
@@ -409,7 +369,7 @@ jobs:
409369
run-fuzz:
410370
docker:
411371
- image: quay.io/influxdb/rust:ci
412-
resource_class: xlarge # use of a smaller executor tends crashes on link
372+
resource_class: xlarge # use of a smaller executor tends crashes on link
413373
environment:
414374
# Disable incremental compilation to avoid overhead. We are not preserving these files anyway.
415375
CARGO_INCREMENTAL: "0"

docker-compose-kafka.yml

Lines changed: 44 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -1,96 +1,84 @@
11
---
2-
version: "3"
3-
42
services:
5-
zookeeper:
6-
image: docker.io/bitnami/zookeeper:3.7
7-
ports:
8-
- "2181:2181"
9-
environment:
10-
- ALLOW_ANONYMOUS_LOGIN=yes
11-
volumes:
12-
- zookeeper_data:/bitnami/zookeeper
133
kafka-0:
14-
image: docker.io/bitnami/kafka:3.9.0
4+
build:
5+
context: docker
6+
dockerfile: Dockerfile.kafka
157
ports:
168
- "9010:9010"
179
- "9096:9096"
1810
environment:
19-
- KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181
20-
- KAFKA_CFG_BROKER_ID=0
11+
- CLUSTER_ID='4L6g3nShT-eMCtK--X86sw'
12+
- KAFKA_NODE_ID=0
13+
- KAFKA_PROCESS_ROLES=broker,controller
2114
- ALLOW_PLAINTEXT_LISTENER=yes
22-
- KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CLIENT:PLAINTEXT,EXTERNAL:PLAINTEXT,FOR_PROXY:PLAINTEXT,SECURE:SASL_PLAINTEXT
23-
- KAFKA_CFG_LISTENERS=CLIENT://:9000,EXTERNAL://:9010,FOR_PROXY://:9020,SECURE://:9096
24-
- KAFKA_CFG_ADVERTISED_LISTENERS=CLIENT://kafka-0:9000,EXTERNAL://localhost:9010,FOR_PROXY://kafka-0:9020,SECURE://localhost:9096
15+
- KAFKA_LISTENER_SECURITY_PROTOCOL_MAP=CLIENT:PLAINTEXT,EXTERNAL:PLAINTEXT,FOR_PROXY:PLAINTEXT,SECURE:SASL_PLAINTEXT,CONTROLLER:PLAINTEXT
16+
- KAFKA_LISTENERS=CLIENT://:9000,EXTERNAL://:9010,FOR_PROXY://:9020,SECURE://:9096,CONTROLLER://:9050
17+
- KAFKA_ADVERTISED_LISTENERS=CLIENT://kafka-0:9000,EXTERNAL://localhost:9010,FOR_PROXY://kafka-0:9020,SECURE://localhost:9096
18+
- KAFKA_CONTROLLER_QUORUM_VOTERS=0@kafka-0:9050,1@kafka-1:9051,2@kafka-2:9052
2519
- KAFKA_INTER_BROKER_LISTENER_NAME=CLIENT
26-
- KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE=false
20+
- KAFKA_CONTROLLER_LISTENER_NAMES=CONTROLLER
21+
- KAFKA_AUTO_CREATE_TOPICS_ENABLE=false
2722
- KAFKA_CLIENT_USERS=admin
2823
- KAFKA_CLIENT_PASSWORDS=admin-secret
2924
- KAFKA_CLIENT_LISTENER_NAME=SECURE
30-
volumes:
31-
- kafka_0_data:/bitnami/kafka
32-
- ./kafka_jaas.conf:/opt/bitnami/kafka/config/kafka_jaas.conf
33-
depends_on:
34-
- zookeeper
25+
- KAFKA_OPTS=-Djava.security.auth.login.config=/etc/kafka/kafka_jaas.conf
26+
- KAFKA_SASL_ENABLED_MECHANISMS=PLAIN
3527
kafka-1:
36-
image: docker.io/bitnami/kafka:3.9.0
28+
build:
29+
context: docker
30+
dockerfile: Dockerfile.kafka
3731
ports:
3832
- "9011:9011"
3933
- "9097:9097"
4034
environment:
41-
- KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181
42-
- KAFKA_CFG_BROKER_ID=1
35+
- CLUSTER_ID='4L6g3nShT-eMCtK--X86sw'
36+
- KAFKA_NODE_ID=1
37+
- KAFKA_PROCESS_ROLES=broker,controller
4338
- ALLOW_PLAINTEXT_LISTENER=yes
44-
- KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CLIENT:PLAINTEXT,EXTERNAL:PLAINTEXT,FOR_PROXY:PLAINTEXT,SECURE:SASL_PLAINTEXT
45-
- KAFKA_CFG_LISTENERS=CLIENT://:9000,EXTERNAL://:9011,FOR_PROXY://:9021,SECURE://:9097
46-
- KAFKA_CFG_ADVERTISED_LISTENERS=CLIENT://kafka-1:9000,EXTERNAL://localhost:9011,FOR_PROXY://kafka-1:9021,SECURE://localhost:9097
39+
- KAFKA_LISTENER_SECURITY_PROTOCOL_MAP=CLIENT:PLAINTEXT,EXTERNAL:PLAINTEXT,FOR_PROXY:PLAINTEXT,SECURE:SASL_PLAINTEXT,CONTROLLER:PLAINTEXT
40+
- KAFKA_LISTENERS=CLIENT://:9000,EXTERNAL://:9011,FOR_PROXY://:9021,SECURE://:9097,CONTROLLER://:9051
41+
- KAFKA_ADVERTISED_LISTENERS=CLIENT://kafka-1:9000,EXTERNAL://localhost:9011,FOR_PROXY://kafka-1:9021,SECURE://localhost:9097
42+
- KAFKA_CONTROLLER_QUORUM_VOTERS=0@kafka-0:9050,1@kafka-1:9051,2@kafka-2:9052
4743
- KAFKA_INTER_BROKER_LISTENER_NAME=CLIENT
48-
- KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE=false
44+
- KAFKA_CONTROLLER_LISTENER_NAMES=CONTROLLER
45+
- KAFKA_AUTO_CREATE_TOPICS_ENABLE=false
4946
- KAFKA_CLIENT_USERS=admin
5047
- KAFKA_CLIENT_PASSWORDS=admin-secret
5148
- KAFKA_CLIENT_LISTENER_NAME=SECURE
52-
volumes:
53-
- kafka_1_data:/bitnami/kafka
54-
- ./kafka_jaas.conf:/opt/bitnami/kafka/config/kafka_jaas.conf
55-
depends_on:
56-
- zookeeper
49+
- KAFKA_OPTS=-Djava.security.auth.login.config=/etc/kafka/kafka_jaas.conf
50+
- KAFKA_SASL_ENABLED_MECHANISMS=PLAIN
5751
kafka-2:
58-
image: docker.io/bitnami/kafka:3.9.0
52+
build:
53+
context: docker
54+
dockerfile: Dockerfile.kafka
5955
ports:
6056
- "9012:9012"
6157
- "9098:9098"
6258
environment:
63-
- KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181
64-
- KAFKA_CFG_BROKER_ID=2
59+
- CLUSTER_ID='4L6g3nShT-eMCtK--X86sw'
60+
- KAFKA_NODE_ID=2
61+
- KAFKA_PROCESS_ROLES=broker,controller
6562
- ALLOW_PLAINTEXT_LISTENER=yes
66-
- KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CLIENT:PLAINTEXT,EXTERNAL:PLAINTEXT,FOR_PROXY:PLAINTEXT,SECURE:SASL_PLAINTEXT
67-
- KAFKA_CFG_LISTENERS=CLIENT://:9000,EXTERNAL://:9012,FOR_PROXY://:9022,SECURE://:9098
68-
- KAFKA_CFG_ADVERTISED_LISTENERS=CLIENT://kafka-2:9000,EXTERNAL://localhost:9012,FOR_PROXY://kafka-2:9022,SECURE://localhost:9098
63+
- KAFKA_LISTENER_SECURITY_PROTOCOL_MAP=CLIENT:PLAINTEXT,EXTERNAL:PLAINTEXT,FOR_PROXY:PLAINTEXT,SECURE:SASL_PLAINTEXT,CONTROLLER:PLAINTEXT
64+
- KAFKA_LISTENERS=CLIENT://:9000,EXTERNAL://:9012,FOR_PROXY://:9022,SECURE://:9098,CONTROLLER://:9052
65+
- KAFKA_ADVERTISED_LISTENERS=CLIENT://kafka-2:9000,EXTERNAL://localhost:9012,FOR_PROXY://kafka-2:9022,SECURE://localhost:9098
66+
- KAFKA_CONTROLLER_QUORUM_VOTERS=0@kafka-0:9050,1@kafka-1:9051,2@kafka-2:9052
6967
- KAFKA_INTER_BROKER_LISTENER_NAME=CLIENT
70-
- KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE=false
68+
- KAFKA_CONTROLLER_LISTENER_NAMES=CONTROLLER
69+
- KAFKA_AUTO_CREATE_TOPICS_ENABLE=false
7170
- KAFKA_CLIENT_USERS=admin
7271
- KAFKA_CLIENT_PASSWORDS=admin-secret
7372
- KAFKA_CLIENT_LISTENER_NAME=SECURE
74-
volumes:
75-
- kafka_2_data:/bitnami/kafka
76-
- ./kafka_jaas.conf:/opt/bitnami/kafka/config/kafka_jaas.conf
77-
depends_on:
78-
- zookeeper
73+
- KAFKA_OPTS=-Djava.security.auth.login.config=/etc/kafka/kafka_jaas.conf
74+
- KAFKA_SASL_ENABLED_MECHANISMS=PLAIN
7975
proxy:
8076
image: serjs/go-socks5-proxy
8177
ports:
8278
- "1080:1080"
79+
environment:
80+
- REQUIRE_AUTH=false
8381
depends_on:
8482
- kafka-0
8583
- kafka-1
8684
- kafka-2
87-
88-
volumes:
89-
zookeeper_data:
90-
driver: local
91-
kafka_0_data:
92-
driver: local
93-
kafka_1_data:
94-
driver: local
95-
kafka_2_data:
96-
driver: local

docker/Dockerfile.kafka

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
FROM docker.io/apache/kafka:4.1.0
2+
3+
COPY ./kafka_jaas.conf /etc/kafka/kafka_jaas.conf
Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
KafkaServer {
22
org.apache.kafka.common.security.plain.PlainLoginModule required
3-
user_admin="admin-secret";
3+
user_admin="admin-secret"
4+
serviceName="kafka";
45
};
56
KafkaClient {
67
org.apache.kafka.common.security.plain.PlainLoginModule required
78
username="admin"
8-
password="admin-secret";
9+
password="admin-secret"
10+
serviceName="kafka";
911
};
1012
Client{};

0 commit comments

Comments
 (0)