Это было первоначально опубликовано на Flexmr dev blog Отказ
В FlexMR Мы проявляем тяжелое использование «прототип-первого» подхода. Мы находим легче создавать подходящую реализацию интеграции с третьим сторонним инструментом (или идеей), чем тратить время складной его в то, что у нас есть, только чтобы решить выбросить его и попробовать по-другому.
Поскольку вы ожидаете, что это может произвести много приложений. Конфигурация для Nginx («Распределительная коробка» сервера) начала становиться более гроздивыми. Новые (и старые) конфиги серверов и сертификаты SSL начали накапливаться. Перемещение конфигурации NGINX в отдельный репозиторий Git был уклонен, но он не решил базовую проблему. Я начал смотреть на решение, которое лучше установил наше дело.
Наша установка инфраструктуры для прототипов (и, как это происходит, внутренний инструмент, который называется волосатый сквамщик — больше на том, что в будущем) живет на выделенном сервере, который работает в режиме Docker Mode (поэтому он готов к масштабу, когда нам нужно).
Мой список желаний для решения обратного прокси:
- Минимальная конфигурация, в идеале на стороне приложения
- Масштабировать
- Легко использовать СТАРСЕРГИПТ для генерации сертификата (предоставление и обновление)
- Приятно иметь (только потому, что нам это не нужно прямо сейчас): балансировка нагрузки
Я бы посмотрел на популярных nginx-proxy рядом с Docker-Letsencrypt — Nginx-Proxy-Companion Однако в духе экспериментов я думал, что дадим новое вихре.
Træfik.
TRæfik — это современный HTTP обратный прокси и балансировщик нагрузки, который облегчает развертывание микросервисов. TRæFIK объединяет свои существующие компоненты инфраструктуры и автоматически настраивает себя и динамически. Указывая Træfik в вашем оркестратере должно быть Только Шаг конфигурации, который вам нужен.
Мы собираемся прикоснуться к небольшой порции функциональности Træfik в примере ниже. Что мы стремимся достичь вот:
- Новые услуги могут быть развернуты на наш сервер разработки без необходимости внесения никаких изменений за пределы этого хранилища приложений.
- Новые сертификаты SSL автоматически предоставляются (и обновлены) СТАРСЕРГИПТ Отказ
Покажите мне какой-нибудь код!
Или, если вы действительно увлекаетесь, есть репозиторий и пример прохождения в следующем разделе.
Что мы имели
В примере я описал выше, я определил отдельные стеки как для приложений HSB, так и для Proto1, а также Nginx. NGINX Используется для части стека HSB в силу IT, будучи первым стеком на сервере разработки, это было разделено, как только мы начали добавлять больше приложений.
Каждое приложение имеет свой собственный репозиторий GIT, в котором файл стека Docker определяет, как он работает в пределах роя (сколько экземпляров, памяти и ограничения процессоров, сетевых данных). Мы развертываем через CI.
Новый мир
Стек 1: Træfik
Развернуты с: Docker Stack Deploy —Compose-file Traefik-Stack.yml —with-реестр-аутефик Traefik
Стек 2: HSB
Развернуты с: Docker Stack Deploy —Compose-file hsb-stack.yml —with-реестр-auth hsb
Стек 3: Proto1
Развернуты с: Docker Stack Deploy —Compose-file Proto1-Stack.yml —with-authyry-auth proto1
Визуальный вид конфигурации
Traefik поставляется с довольно Bonny UI, который мы настроили для обслуживания порта 8080 хоста. Я получаю доступ через SSH-порт вперед, например: SSH -L8080: localhost: 8080 … Как я не доступен внешне ( и не стоит! ).
Довольно красивый Traefik Ui
Работал пример
Сопровождающий репо в Ниже использует различную настройку на настройку HSB/Proto1 выше. Я сделал это, чтобы проиллюстрировать несколько услуг в том же стеке и как одиночные услуги могут быть назначены несколькими доменами.
Neilbartley/Traefik-Swarm. Пример
Трафик Рой (режим) Пример
Пожалуйста, смотрите сопровождающиеся Блог пост для фона.
Запуск этого примера
Я использую Jwilder/WHOAMI Находятся Это обеспечивает веб-сервис, который просто повторяет свой контейнер i d.
Стек 1 — Трафик, как указано выше.
Стек 2 представляет собой Proto1, это имеет администратор (Proto1.neil.bar) и сервисы Backoffice (Proto4.neil.bar).
Стек 3 представляет собой PROTO2, у этого есть единое обслуживание, приложение (PROTO2.NEIL.BAR и PROTO3.NEIL.BAR).
Как мы настроили блок [ACME] в нашем Traefik.toml, то Traefik будет автоматически запросить, обеспечивать и возобновлять сертификаты для хостов, определенных в метке Traefik.frontend.Rule в каждой службе от СТАРСЕРГИПТ Отказ
Добавление дополнительных услуг не требует никаких изменений в стеке Traefik и с СТАРСЕРГИПТ интеграция Это действительно делает эту задачу тривиальной.
демонстрация Asciinema
Оригинал: «https://dev.to/neilbartley/calming-app-jams-with-trfik-3b7b»