Что такое Traefik

Обновлено и опубликовано Опубликовано:

Traefik —
простыми словами

современный обратный прокси-сервер с балансировкой нагрузки, написанный на Go и заточенный под контейнерные среды. Первая версия вышла в 2016 году, разработчик — компания Traefik Labs.

Основная задача Traefik — принимать входящие запросы и распределять их между сервисами, которые находятся за ним. То же самое умеет и обычный веб-сервер в роли прокси, но у Traefik другой подход к конфигурации. Он сам обнаруживает запущенные сервисы и строит для них маршруты, а не ждет, пока администратор вручную пропишет их в файле.

Для этого Traefik подключается к так называемым провайдерам — Docker, Kubernetes, Consul и другим. Он следит за событиями в этих системах и читает правила маршрутизации прямо из меток (labels) контейнеров. Как только появляется новый контейнер с нужной меткой, Traefik сразу добавляет для него маршрут — без перезапуска и без правки конфигов вручную.

Из готовых меток и провайдеров Traefik собирает три сущности:

  • Роутеры (routers). Определяют, по какому правилу (домен, путь, заголовок) запрос попадет к тому или иному сервису.
  • Сервисы (services). Указывают, куда именно отправить запрос — на конкретный контейнер или группу контейнеров с балансировкой между ними.
  • Middleware. Промежуточные обработчики запроса — базовая аутентификация, ограничение частоты запросов, фильтрация по IP-адресам, редиректы, добавление заголовков.

Пример правила маршрутизации в labels для контейнера может выглядеть так:

labels:
  - traefik.http.routers.myapp.rule=Host(`example.com`)

* строка означает: запросы на домен example.com пойдут в контейнер, на котором висит эта метка. Остальные параметры — сертификат, порт, middleware — добавляются такими же отдельными labels.

Ключевые особенности

  • Автоматическое обнаружение сервисов. Не нужно перезапускать Traefik при добавлении нового приложения в Docker Compose или Kubernetes.
  • Автоматический HTTPS. Traefik сам получает и продлевает сертификаты через Let's Encrypt, без отдельного certbot.
  • Веб-панель (dashboard). Показывает список роутеров, сервисов и их текущее состояние — удобно для отладки правил. Панель работает только на чтение, менять через нее конфигурацию нельзя. В production ее обычно закрывают паролем или отключают вовсе.
  • Несколько провайдеров одновременно. Traefik может параллельно читать конфигурацию из Docker, Kubernetes, файлов и других источников.
  • Небольшой размер. Это один бинарный файл на Go, для работы хватает десятков мегабайт оперативной памяти.

Traefik или nginx

Traefik часто сравнивают с NGINX, поскольку оба решают одну и ту же задачу — прием и распределение HTTP-трафика:

  • Не требует ручного редактирования конфигурационного файла при каждом новом сервисе.
  • Хуже подходит для отдачи статики и тонкой настройки кэширования, где NGINX традиционно сильнее.
  • Проще интегрируется с Docker и Kubernetes без дополнительных инструментов вроде nginx-ingress или сторонних генераторов конфигов.
  • Уступает NGINX по общей производительности под очень высокой нагрузкой.

Для стека, где контейнеры часто появляются и исчезают (CI/CD, микросервисы), обычно выбирают Traefik. Для раздачи статики или задач, где конфигурация меняется редко, чаще берут NGINX.

Traefik 3

Актуальная ветка — Traefik 3, она сменила Traefik 2 и принесла несколько заметных изменений: нативную поддержку HTTP/3 без экспериментальных флагов, переход с Jaeger и Zipkin на OTLP для трассировки запросов и более широкую поддержку Kubernetes Gateway API. Синтаксис правил маршрутизации при этом изменился, но обратная совместимость с большинством конфигураций Traefik 2 сохранена. Миграция в типовом случае сводится к обновлению образа и проверке устаревших параметров по официальному migration guide.

При настройке под высокую доступность стоит учитывать один нюанс: если запускать несколько экземпляров Traefik независимо, каждый будет отдельно запрашивать сертификаты у Let's Encrypt, а это быстро упирается в лимит запросов у самого Let's Encrypt.

Установка, настройка и документация

Traefik распространяется как готовый Docker-образ, бинарный файл или Helm-чарт для Kubernetes — конкретный способ установки зависит от того, где будет работать прокси. Настройка сводится к двум частям: статический конфиг (порты, провайдеры, точки входа) задается один раз при запуске, а динамическая часть — роутеры, сервисы, middleware — берется из меток контейнеров или отдельных файлов и может меняться на лету.

Разобраться, как пользоваться Traefik в конкретном сценарии — Docker Compose, Kubernetes или классический сервер — проще всего по официальной документации проекта, она подробно описывает каждый провайдер и формат меток.

Traefik распространяется по лицензии MIT, то есть бесплатен и для коммерческого использования.

Подробнее о Traefik на Википедии.



Дмитрий Моск
— IT-специалист.
Настройка серверов, услуги DevOps.

Другие термины

UNIX   API   Suricata   Active Directory   Llama.cpp   HTTP   RTSP   RemoteApp   PAM   Proxmox VE   OpenVZ   Exchange Server   MinIO   Ceph   PostgreSQL   IAX   SoftEther   Git   OpenSearch   FreeIPA  
.....

Реклама