Consul Connect Upstream Interfaces в Docker-контейнерах - PullRequest
0 голосов
/ 01 февраля 2019

Возможно ли связать консул, подключить апстрим к другому интерфейсу, кроме 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 Ответ

0 голосов
/ 02 февраля 2019

Хитрость заключалась в том, чтобы использовать network_mode = "host" как для контейнера с коляской, так и для любых других контейнеров, которые хотят использовать коляску.Хост-сеть Docker делает это возможным:

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

, поскольку дополнительная консоль Consul Connect связывает все восходящие потоки с localhost, а сеть Docker host предоставляет все порты внутри контейнера, как если бы контейнер работал какнеобработанный процесс на хост-компьютере.

...