我无法在互联网上找到这样一个特定的命令,所以我请求你帮忙解决这个问题:)
上下文
我使用podTemplate
方法定义了一个带有几个容器的containerTemplate
:
ubuntu:trusty
(14.04 LTS)postgres:9.6
wurstmeister/kafka:latest
在Pipeline中进行一些Groovy编码,我在我的ubuntu:trusty
容器中安装了几个依赖项,比如最新的Git,Golang 1.9等,我也从Github检查了我的项目。
在完成所有依赖关系之后,我设法编译,运行迁移(这意味着Postgres启动并运行,我的应用程序已连接到它),并启动我的应用程序,直到它抱怨Kafka没有运行因为它无法连接到任何经纪人。
调试会话
在一些调试会话之后,我对每个容器ps aux
进行了编辑,以确保我需要的所有服务都在各自的容器中运行,例如:
container(postgres) {
sh 'ps aux' # Show Postgres, as expected
}
container(linux) {
sh 'ps aux | grep post' # Does not show Postgres, as expected
sh 'ps aux | grep kafka' # Does not show Kafka, as expected
}
container(kafka) {
sh 'ps aux' # Does NOT show any Kafka running
}
我已按照图片文档中的说明将KAFKA_ADVERTISED_HOST_NAME
var导出到127.0.0.1
,但没有成功,使用以下代码:
containerTemplate(
name: kafka,
image: 'wurstmeister/kafka:latest',
ttyEnabled: true,
command: 'cat',
envVars: [
envVar(key: 'KAFKA_ADVERTISED_HOST_NAME', value: '127.0.0.1'),
envVar(key: 'KAFKA_AUTO_CREATE_TOPICS_ENABLE', value: 'true'),
]
)
问题
此图片文档详细信息https://hub.docker.com/r/wurstmeister/kafka/明确指出使用docker-compose up -d
启动Kafka群集
1)我如何使用Jenkins的Kubernetes插件+ Docker + Groovy + Pipeline组合实际做到这一点?
2)我实际需要这样做吗? Postgres图像文档(https://hub.docker.com/_/postgres/)也提到了使用docker run
运行实例,但我根本不需要这样做,这让我觉得containerTemplate
可能会自动执行。那么为什么不为Kafka容器做这个呢?
谢谢!
答案 0 :(得分:1)
所以...此图像的问题以及kubernetes如何与它们一起工作。
Kafka无法启动,因为您用CMD
覆盖了command:'cat'
码头工人,这导致start-kafka.sh
永远不会运行。
由于上述原因,我建议使用其他图像。下面的模板对我有用。
containerTemplate(
name: 'kafka',
image: 'quay.io/jamftest/now-kafka-all-in-one:1.1.0.B',
resourceRequestMemory: '500Mi',
ttyEnabled: true,
ports: [
portMapping(name: 'zookeeper', containerPort: 2181, hostPort: 2181),
portMapping(name: 'kafka', containerPort: 9092, hostPort: 9092)
],
command: 'supervisord -n',
envVars: [
containerEnvVar(key: 'ADVERTISED_HOST', value: 'localhost')
]
),