1

是否可以将领事连接上游绑定到环回以外的另一个接口127.0.0.1

Consul Connect - Nomad本文说您可以在官方 Docker 容器中运行连接代理,但存在无法暴露上游依赖项的问题。运行raw_exec版本我看到主机 127.0.0.1 上可用的上游。但是,如果我在容器中运行相同的配置,其他容器将无法连接到这些端口。

示例配置:

    task "proxy" {
      driver = "docker"

      config {
        image = "consul:1.4.0"
        force_pull = true
        network_mode = "host"

        args = [
          "connect", "proxy",
          "-service", "api",
          "-log-level", "debug",
          "-upstream", "upstream:${NOMAD_PORT_tcp}"
        ]
      }

      env {
        "CONSUL_HTTP_ADDR" = "${NOMAD_IP_tcp}:8500"
      }

      resources {
        network {
          port "tcp" {}
        }
      }
    }

在此配置中,名为 upstream 的服务仅在您sh进入容器本身并检查时才可用netcat。有没有办法强制 Consul Connect 绑定上游服务,0.0.0.0以便它可以在本地 Docker 网络上公开?

4

1 回答 1

1

这里的技巧是network_mode = "host"同时用于 sidecar 容器和任何其他想要使用 sidecar 的容器。主机 Docker 网络使这成为可能:

"RABBITMQ_HOST" = "localhost"
"RABBITMQ_PORT" = "${NOMAD_PORT_proxy_rabbitmq}"

因为 Consul Connect sidecar 绑定了所有上游,localhost并且 Dockerhost网络公开了容器内的所有端口,就好像容器在主机上作为原始进程运行一样。

于 2019-02-02T17:45:15.617 回答