
Я пытаюсь создать локальную среду для тестирования, состоящую из:
- Кластер Vagrant CoreOS (3 узла)
- контейнер Docker, запущенный с загруженным образом Nginx, запущенный на одном узле
Я успешно установил Vagrant и CoreOS. Etcd запущен и работает, и я много игрался с Fleet. Я также запустил контейнер Nginx через службы Fleet. Что я не могу понять, так это:
- Как мне направить трафик на определенный контейнер? Я хочу, чтобы, указав локальный браузер на локальный адрес (например, example.dev), кластер отвечал правильным контейнером Nginx (размещенным где-то в кластере).
- Является ли прокси подходящим решением? Если нет - создано ли что-то для этой цели?
Заранее спасибо и не стесняйтесь спрашивать подробности, которые я мог забыть!
решение1
Самый простой ответ — просто отредактировать локальный файл hosts, например, /etc/hosts
в Linux или OS X, или C:\Windows\System32\drivers\etc\hosts
на типичной машине Windows.
Если вам нужно что-то более производственного уровня, чем быстрое решение для разработки, то вам нужен обратный прокси-сервер вроде nginx или haproxy, и его автоматическая настройка в зависимости от доступности внутренних контейнеров nginx.
- каждому внутреннему контейнеру nginx понадобится «вспомогательная» служба, чтобы объявить о его доступности для etcd
- затем бегиконфддля прослушивания изменений etcd и обновления конфигурации обратного прокси-сервера
Это позволяет вам маршрутизировать один порт обратного прокси-сервера на любое количество внутренних служб nginx, которым нужно только прослушивать частную сеть.