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 сеть предоставляет все порты в контейнере, как если бы контейнер выполнялся как необработанный процесс на хост-компьютере.

Другие вопросы по тегам