В yaml конфиг самого трафика где указано использовать докер и его метки + базовые вещи типа портов, которые требуется слушать, обработчик ssl сертификатов.
Сюда же можно, но не нужно добавлять конфиги сервисов без автодискавери, лучше вынести в отдельный файл
Ну и после запуска трафик начинает сканировать метки сервисов и вытягивать из них конфигурацию, в этом случае сам трафик сконфигурировали 1 раз, а потом добавляем докер сервисы через compose файл и он сам подхватывает нужную конфигурацию
Я верхнеуровнево описывал свою конфигурацию тут, но суть сводится к тому, что я отказался от автодискавери и прописываю все конфиги трафика в 2 git репозиториях.
- Описание compose сервиса и основные конфиги - он деплоится на ноды при помощи komodo и требует остановки трафика
- Конфиги сервисов -при помощи CI/CD загружается в consul, а из него вытягивается traefik без остановки сервисов
Но можно упростить схему, что я и сделал в 1 версии
такой каждый файл лучше делать для каждого контейнера или поддомена, где какой-то сервис работает?
В моем случае 2,3 файла на сервис т.к. имена файлов имеют определенные названия, и участвуют в формировании итогового конфига, но можно делать на свое усмотрение
Напомню основные блоки конфигурации трафика.
- listener - это единожды приписываемая сущность типа listen:port в nging
- service - это то, куда приземлять трафик, например адрес конкретного сервиса
- middleware - модификатор запроса или ответа, например, фильтр по IP, аутентификация, добавление заголовков
- router - связывает домен и/или путь на конкретном листенере с добавлением конкретных мидлварок и с обработкой конкретным сервисом