Consul Connect Upstream Interfaces в Docker-контейнерах
Можно ли связать консул подключить upstreams к другому интерфейсу, кроме 127.0.0.1
LoopBack?
Consul Connect - Nomad В этой статье говорится, что вы можете запустить прокси-сервер connect в официальном контейнере 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?
1 ответ
Хитрость здесь заключалась в использовании network_mode = "host"
как для контейнера с коляской, так и для любых других контейнеров, которые хотят использовать коляску. Сеть Docker хоста делает это возможным:
"RABBITMQ_HOST" = "localhost"
"RABBITMQ_PORT" = "${NOMAD_PORT_proxy_rabbitmq}"
поскольку коляска Консул Коннект связывает все восходящие потоки с localhost
и докер host
сеть предоставляет все порты в контейнере, как если бы контейнер выполнялся как необработанный процесс на хост-компьютере.