我们需要在数量有限的主机上设置多个jenkins实例。
为此,我在两台服务器上设置了Docker Swarm。
在“主”节点上,我使用terraform创建和管理docker服务。
当我手动创建服务时,容器会自动在工作程序节点上生成。当我创建具有2个副本的服务时,将在两个节点上按原样创建容器。
但是,当我使用Terraform代码创建和管理服务时,永远不会在辅助节点上创建容器。即使我设置了2个副本,两个副本都在主节点上创建。
此处提供了用于创建服务的main.tf文件。
resource "docker_service" "jenkins_service" {
name = var.project_name
task_spec {
container_spec {
image = docker_image.jenkins_image.name
mounts {
target = "/var/jenkins_name"
source = docker_volume.jenkins_volume.name
type = "volume"
}
mounts {
source = "/var/run/docker.sock"
target = "/var/run/docker.sock"
type = "bind"
}
}
networks = ["${docker_network.jenkins_network.name}"]
}
endpoint_spec {
ports {
target_port = "8080"
published_port = var.web_interface_port
publish_mode = "ingress"
name = "WEB_INTERFACE"
}
ports {
target_port = "50000"
published_port = var.api_interface_port
publish_mode = "ingress"
name = "API_INTERFACE"
}
}
}
我不知道我在做什么错。任何帮助将不胜感激
致谢。
答案 0 :(得分:0)
为了他人的利益: 我使用的是自定义docker映像,而terraform代码本质上是使用以下格式调用这些映像:从而迫使该群仅在实际拥有该映像的主节点上启动容器。
我遇到了this篇出色的文章,指出了确切的问题。我的设置缺少docker注册表。我按照该链接中的步骤操作,即可解决问题。
感谢“ fernandezcuesta”花时间回答我的查询。
问候 Senthil Nathan M