Terraform不在工作节点上创建docker服务

时间:2019-09-19 12:29:52

标签: docker terraform docker-swarm

我们需要在数量有限的主机上设置多个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"
    }
  }
}

我不知道我在做什么错。任何帮助将不胜感激

致谢。

1 个答案:

答案 0 :(得分:0)

为了他人的利益: 我使用的是自定义docker映像,而terraform代码本质上是使用以下格式调用这些映像:从而迫使该群仅在实际拥有该映像的主节点上启动容器。

我遇到了this篇出色的文章,指出了确切的问题。我的设置缺少docker注册表。我按照该链接中的步骤操作,即可解决问题。

感谢“ fernandezcuesta”花时间回答我的查询。

问候 Senthil Nathan M