是否可以将领事连接上游绑定到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" {}
}
}
}
在此配置中,仅当您sh
进入容器本身并使用netcat
检查时,称为上游的服务才可用。是否有一种方法可以强制Consul Connect将上游服务绑定到0.0.0.0
,以便可以将其公开在本地Docker网络上?
答案 0 :(得分:0)
这里的窍门是对边车容器和要使用边车的任何其他容器都使用network_mode = "host"
。主机Docker网络使这成为可能:
"RABBITMQ_HOST" = "localhost"
"RABBITMQ_PORT" = "${NOMAD_PORT_proxy_rabbitmq}"
因为Consul Connect边车将所有上游绑定到localhost
,并且Docker host
网络公开了容器内的所有端口,就像容器在主机上作为原始进程运行一样。