jam*_*tra 7 gitlab apache-kafka gitlab-ci
我目前在 gitlab CI 上设置 Kafka 服务以运行集成测试时遇到问题,我目前正在使用 spotify/kafka docker 映像。如果有人能帮我解决这个问题,我将不胜感激。
它与同时承载 Kafka 和 Zookeeper 的容器配合得很好,并允许控制内部和外部的“广告侦听器”。external 应设置为容器的别名,internal 应设置为 localhost(即:容器的 localhost)。
spotify/kafka-image 只允许您设置广告主机,而不是完整的广告侦听器字符串;由于内部和外部必须不同,所以这是行不通的。
krisgeus/docker-kafka ( https://github.com/krisgeus/docker-kafka ) 确实允许设置所需的一切。
下面的 .gitlab-ci.yml 允许我从 ci-jobs 连接到 kafka:9092:
variables:
ADVERTISED_LISTENERS: 'PLAINTEXT://kafka:9092,INTERNAL://localhost:9093'
LISTENERS: 'PLAINTEXT://0.0.0.0:9092,INTERNAL://0.0.0.0:9093'
SECURITY_PROTOCOL_MAP: 'PLAINTEXT:PLAINTEXT,INTERNAL:PLAINTEXT'
INTER_BROKER: 'INTERNAL'
KAFKA_CREATE_TOPICS: 'cc-event:36:1'
services:
- name: krisgeus/docker-kafka
alias: kafka
Run Code Online (Sandbox Code Playgroud)
我浪费了好几天的时间试图让它与 docker 容器一起工作,包括上面提到的那个spotify/kafka。
最初我尝试将其用作服务。然而无论我做什么都行不通。事实上,我的测试可以很好地连接到服务,并且服务确实启动了。然而,它看起来像是动物园管理员和卡夫卡之间的一些奇怪的网络问题。我的猜测是,您需要将 ADVERTISED_HOST 设置为spotify__kafka允许运行程序和服务之间的连接。然而,这意味着 Zookeeper 认为 kafka 也在该主机名而不是 localhost,并且您遇到了看似无法修复的网络问题,因为服务无法与 gitlab 中的其他服务通信。但这只是我的猜测,
如果我错了,请随时纠正我。
接下来,我尝试在 docker 中使用 docker,目的是从我的测试中启动 kafka。一切再次顺利,容器启动了,但是我意识到我很快又回到了上面遇到的确切问题,因为在 gitlab 中与 dind 通信时 localhost 不是 localhost ,而是需要使用 hostname docker。这再次意味着 Zookeeper 无法连接到 kafka,因为 ADVERTISED_HOST 必须更改。
最后我说搞砸了,并在我的gitlab-ci.yml脚本中手动安装了 kafka,而没有使用 docker。脚本看起来像这样
stages:
- build
build:
stage: build
image: ubuntu:latest
variables:
KAFKA_HOST: localhost:9092
script:
- apt-get update
- apt-get install -y wget nodejs npm default-jre-headless
- wget http://ftp.heanet.ie/mirrors/www.apache.org/dist/kafka/2.1.0/kafka_2.11-2.1.0.tgz
- tar -xzf kafka_2.11-2.1.0.tgz
- ls -ltra kafka_2.11-2.1.0/bin
- nohup kafka_2.11-2.1.0/bin/zookeeper-server-start.sh kafka_2.11-2.1.0/config/zookeeper.properties > /dev/null 2>&1 &
- sleep 2
- nohup kafka_2.11-2.1.0/bin/kafka-server-start.sh kafka_2.11-2.1.0/config/server.properties > /dev/null 2>&1 &
- sleep 2
- npm install
- npm test
Run Code Online (Sandbox Code Playgroud)
这可以在 上访问localhost。我知道这并不优雅,但它可以完成工作
| 归档时间: |
|
| 查看次数: |
3639 次 |
| 最近记录: |