В минувший вторник компания Containous представила крупное обновление к своему флагманскому Open Source-продукту — service mesh-решению Traefik — в виде версии 2.0.
Главным новшеством в Traefik 2.0 стало появление поддержки протокола TCP. В случае шифрования по TLS для маршрутизации используются данные SNI (Server Name Indication). Примечательная особенность — возможность работы с entrypoint сразу по двум протоколам: HTTP и TCP — на одном и том же порту. Иллюстрация этой фичи:
В этом примере HTTP-запросы к
Среди прочих значимых изменений в релизе Traefik 2.0:
Полный список изменений — см. в GitHub-репозитории проекта.
Читайте также в нашем блоге:
Главным новшеством в Traefik 2.0 стало появление поддержки протокола TCP. В случае шифрования по TLS для маршрутизации используются данные SNI (Server Name Indication). Примечательная особенность — возможность работы с entrypoint сразу по двум протоколам: HTTP и TCP — на одном и том же порту. Иллюстрация этой фичи:
tcp:
routers:
to-db-1:
entrypoints:
- web-secure
rule: "HostSNI(`db1.domain`)"
service: "db-1"
tls: {}
http:
routers:
to-db1-dashboard:
entrypoints:
- web-secure
rule: "Host(`dashboard.db1.domain`)"
service: "db1-dashboard"
tls: {}
В этом примере HTTP-запросы к
dashboard.db1.domain
направляются на веб-сервис управления базой данных, а TCP к db1.domain
— на сервис самой СУБД.Среди прочих значимых изменений в релизе Traefik 2.0:
- поддержка так называемых middleware — промежуточных звеньев для запросов, суть которых сводится к возможности проводить специальные операции над запросами до того, как они попадают в сервис (или перед тем, как ответ сервиса отправляется клиентам). Примеры таких операций, названия которых говорят за себя: BasicAuth, Compress, Headers, RateLimit… Часто используемые совместно middleware можно объединять в цепочки (chains);
- новый веб-интерфейс (WebUI) для просмотра информации о кластере и управления настройками Traefik;
- поддержка канареечных выкатов (canary deployments) и, соответственно, возможности A/B-тестирования, что реализовано в виде Service Load Balancers, перенаправляющих запросы к сервисам приложения;
- поддержка зеркалирования запросов для дублирования одного и того же входящего трафика на различные сервисы (тоже реализовано в Service Load Balancers);
- конфигурация для Kubernetes в виде CRD;
- альтернативный формат конфигурации в YAML.
Полный список изменений — см. в GitHub-репозитории проекта.
P.S.
Читайте также в нашем блоге:
- «Maesh — новый простой service mesh для Kubernetes от авторов Traefik»;
- «Назад к микросервисам вместе с Istio»: часть 1 (знакомство с основными возможностями), часть 2 (управление трафиком), часть 3 (аутентификация и авторизация);
- «Conduit — легковесный service mesh для Kubernetes»;
- «Что такое service mesh и почему он мне нужен [для облачного приложения с микросервисами]?».
powerman
А ещё лёгким движением руки перенесли поддержку работы в кластере (даже такой невинной, как синхронизация обновляемых сертификатов LE через консул) в платную версию. Что, собственно, убило возможность использовать автоматическое обновление сертификатов LE при запуске traefik в docker swarm, например.
negasus
Именно перенесли? Я просто не пользовался этой возможностью, но необходимости появляется. То есть, в первой версии это было в OpenSource а сейчас нет? Или я не так понял.
powerman
Всё так. Было и сплыло.
negasus
То есть, речь не о этом? (пример из документации)
Когда traefik кладет сертификат в Consul KV?
powerman
Бесплатный traefik не работает больше с консулом и не кладёт туда сертификаты. Так обстояли дела в 2.0.0-alpha4, это писали на официальном форуме и в слаке, это (правда, очень завуалировано) даже есть в официальном блоге. Насколько я понял, возвращать эту фичу в 2.0.0 они не планировали, но лично я список изменений относительно этой альфы ещё не изучал.
negasus
Как вариант, может быть дело во времени и их приоритетах? Например, сейчас релиз v2 не работает с Consul Catalog в виде провайдера. А мне вот именно эта фишка очень нужна. Ну что ж, сделал PR, подал. Сейчас дописываю несколько интеграционных тестов, надеюсь скоро влиться в мастер.