Repo: dcape-app-traefik
Роль в dcape | Сервис | Docker images |
---|---|---|
router | traefik | traefik |
Назначение
Агрегация и проксирование www-сервисов развернутых приложений по заданному имени с поддержкой сертификатов Let’s Encrypt
Traefik - ключевой сервис dcape. Он решает следующие задачи:
- при запуске контейнера проанализировать его метки (
label
) и добавить контейнер в систему проксирования внешних http(s) запросов, определяя целевой контейнер по имени хоста - если конфигурацией предусмотрена работа через TLS - проверить наличие сертификата и, при необходимости, получить или обновить его через сервис Let’s Encrypt
Особенности
Варианты файла конфигурации
В составе dcape есть три варианта файла конфигурации traefik:
- traefik.local.yml - использование DCAPE на локальном компьютере без поддержки TLS
- traefik.acme-http.yml - https с получением сертификатов по протоколу
HTTP-01
- traefik.acme.yml - https с получением сертификатов по протоколу
HTTP-01
иDNS-01
(для поддержки wildcard-доменов)
При выполнении команды make apply
, по значению параметра ACME
определяется вариант конфигурации и соответствующий файл копируется в var/traefik/traefik.yml
с заменой переменных (если его еще нет).
Ограничение видимости контейнеров
Для того, чтобы конкретный экземпляр traefik отреагировал на запуск контейнера, в конфигурации контейнера надо указать две метки:
|
|
Если не задана первая из этих меток, контейнер не будет виден никакому экземпляру traefik. Значение второй метки позволяет запустить на одном хосте несколько экземпляров traefik и привязывать контейнер только к тому экземпляру, у которого совпадает значение DCAPE_TAG
.
Такая функциональность обеспечивается следующими настройками traefik:
|
|
Поддержка wildcard-доменов
Dcape поддерживает протокол TLS с использованием ключей Let’s Encrypt.
Для получения сертификатов по протоколу DNS-01
необходим доступ к АПИ сервера DNS. В состав dcape для этого включен сервер powerdns. Если параметр ACME
имеет значение wild
, при выполнении команды make apply
создается файл var/traefik/traefik.env
с настройками для доступа к АПИ локальной копии powerdns
Настройки контейнера для работы с TLS
Ниже в примерах использованы следующие параметры конфигурации:
APP_TAG
- уникальный тег контейнера, может формироваться автоматически из значенияAPP_SITE
USE_TLS
- использовать TLSAPP_SITE
- основной hostname контейнераAPP_ACME_DOMAIN
- wildcard-домен контейнера
HTTP-01, индивидуальные сертификаты
|
|
DNS-01, wildcard-домен
|
|
Тестирование
Файл конфигурации traefik включает строку
|
|
В период настройки, во избежание бана со стороны Letsencrypt, рекомендуется ее раскомментировать для работы через тестовый канал (выписывается Fake сертификат), а после полной отладки механизма, удалить.
Несколько копий dcape на одном сервере
dcape позволяет запуск нескольких экемпляров на одном сервере, для этого они должны использовать разные порты. Поэтому TLS с обновлением сертификатов будет доступен только тому экземпляру, который слушает порт 443.
Для запуска второго экземпляра необходимо разместить его в другом каталоге (или использовать другие значения параметров CFG
, DCAPE_VAR
) и изменить в его настройках:
- порты в параметрах
TRAEFIK_LISTEN
иTRAEFIK_LISTEN_SSL
- параметр
DCAPE_TAG