traefik
Ansible Роль: traefik
Описание
Traefik — это реверсивный прокси, написанный на Go. Он может использоваться в различных ситуациях с многими провайдерами (Kubernetes, Swarm и т.д.). Версия 2 также поддерживает TCP маршрутизацию.
Эта роль устанавливает traefik на хосте в качестве реверсивного прокси и балансировщика нагрузки. Это позволяет использовать один сервер в качестве хоста для нескольких контейнеризованных приложений.
Примечание: Эта роль позволяет использовать один (1) сервер в качестве хоста для многих приложений. В зависимости от вашего варианта использования, это может быть не то, что вам нужно. Для сервисов, которым требуется высокая доступность, рассмотрите возможность использования Kubernetes или других систем и настройте там traefik.
Установка
ansible-galaxy install arillso.traefik
Требования
- Docker
Переменные роли
Traefik версии 2.0 и выше поддерживает yaml конфигурацию. Эта роль использует это для генерации конфигурации непосредственно из заданных переменных ansible. Существует ряд переменных быстрого настроек, которые позволяют вам настроить простую инстанцию, но также есть возможность полностью настроить каждую ключевую переменную самостоятельно. Переменные быстрого настроя позволяют вам:
- Настроить резольвер сертификатов на базе lets-encrypt
- Настроить стандартные entrypoints
- Настроить стандартный Docker провайдер
Переменные быстрого настроя имеют префикс traefik_qs_
.
Имя | По умолчанию | Описание |
---|---|---|
traefik_dir |
/etc/traefik |
где хранить данные traefik |
traefik_hostname |
"{{ inventory_hostname }}" |
имя хоста этого экземпляра |
traefik_network |
traefik_proxy |
имя создаваемой сети |
traefik_qs_send_anonymous_usage |
false |
отправлять ли анонимную статистику использования |
traefik_qs_https |
false |
настраивать ли HTTPS конечную точку |
traefik_qs_https_redirect |
false |
настраивать ли редирект на HTTPS |
traefik_qs_https_le |
false |
настраивать ли letsencrypt с использованием tls (только если включен https) |
traefik_qs_https_le_mail |
не определено | email для использования letsencrypt (Обязательно) |
traefik_qs_log_level |
ERROR |
уровень логирования |
traefik_container_name |
'traefik' |
имя контейнера |
traefik_network_name |
'traefik_proxy' |
имя сети |
traefik_network_ipam_subnet |
'172.16.1.0/24' |
подсеть |
traefik_network_ipam_gateway |
'172.16.1.1' |
шлюз |
traefik_network_ipam_iprange |
'172.16.1.0/24' |
диапазон IP |
traefik_image |
'traefik' |
используемый образ |
traefik_add_volumes |
[] |
дополнительные тома для монтирования |
traefik_ports |
['80:80', '443:443'] |
открытые порты |
traefik_labels |
{} |
метки, которые нужно установить на контейнер traefik |
Имена сгенерированных конфигураций по умолчанию:
- Entrypoints:
http
https
- Провайдеры:
docker
- Резольверы сертификатов:
letsencrypt
Глубокая конфигурация
Как уже было сказано, эта роль также позволяет вам настроить traefik более детально, используя yaml конфигурацию traefik. Следующие переменные могут быть использованы:
Имя | По умолчанию | Описание |
---|---|---|
traefik_confkey_global |
не определено | см. Дока 📑 |
traefik_confkey_serversTransport |
не определено | см. Дока 📑 |
traefik_confkey_entryPoints |
не определено | см. Дока 📑 |
traefik_confkey_providers |
не определено | см. Дока 📑 |
traefik_confkey_api |
не определено | см. Дока 📑 |
traefik_confkey_metrics |
не определено | см. Дока 📑 |
traefik_confkey_ping |
не определено | см. Дока 📑 |
traefik_confkey_log |
не определено | см. Дока 📑 |
traefik_confkey_accessLog |
не определено | см. Дока 📑 |
traefik_confkey_tracing |
не определено | см. Дока 📑 |
traefik_confkey_hostResolver |
не определено | см. Дока 📑 |
traefik_confkey_certificatesResolvers |
не определено | см. Дока 📑 |
Эти ключи объединяются в конфигурацию после конфигурации быстрого настроя, используя
combine()
фильтр в не рекурсивном режиме. Это позволяет вам добавлять опции конфигурации по мере необходимости.
Если вы хотите перезаписать элементы быстрого настроя, используйте их ключ
(как указано выше).
Совместимость с sbaerlocher/ansible.traefik
Эта роль предназначена как продолжение
sbaerlocher/ansible.traefik
роли для traefik v2. Большинство переменных, заданных для указанной роли, продолжат
работать в этой роли, за исключением трех особых случаев, когда вы должны
воссоздать пользовательскую конфигурацию, используя переменные с _confkey_
.
Эти моменты объясняются в следующих разделах.
Переменные, требующие ручного вмешательства
traefik_configuration_file
Использование traefik_configuration_file
не влияет на вашу установку.
Конфигурация Traefik изменилась с введением v2 и не совместима с предыдущими версиями.
Используйте документацию Traefik
для воссоздания вашей пользовательской конфигурации с использованием переменных _confkey_
.
traefik_api
Способ определения API в Traefik v2 позволяет вам использовать несколько различных конфигураций. В целях упрощения мы убрали автоматическую генерацию конфигурации api, поскольку она не может быть просто объединена с пользовательской конфигурацией и может вызвать непредвиденные побочные эффекты.
Чтобы настроить простой, небезопасный api на порт контейнера 8080
, используйте следующую
конфигурацию (Примечание: этот пример небезопасен, пожалуйста, подумайте о том, чтобы защитить ваш API
для использования в продакшене):
traefik_confkey_api:
insecure: true
dashboard: true # используйте это для включения панели управления
traefik_ports:
- '80:80'
- '443:443'
- '8080:8080'
Это автоматически настроит entrypoint на порту 8080
.
traefik_ping
Аналогично определению api, определение ping позволяет настраивать разные ключи конфигурации, что делает автоматическую генерацию конфигурации невозможной.
Следуйте документам конфигурации Traefik о ping
чтобы найти желаемую конфигурацию. В качестве примера рассмотрите следующую
конфигурацию, которая откроет ping конечную точку на порту 8082
:
traefik_confkey_entryPoints:
ping:
address: ':8082'
traefik_confkey_ping:
entryPoint: 'ping'
traefik_ports:
- '80:80'
- '443:443'
- '8082:8082'
ansible-galaxy install arillso/ansible.traefik