В минувший вторник компания Containous представила крупное обновление к своему флагманскому Open Source-продукту — service mesh-решению Traefik — в виде версии 2.0.
![](https://habrastorage.org/r/w1560/webt/t4/ar/aj/t4arajqdnh0pwuzob_0yfmsxbls.png)
Главным новшеством в Traefik 2.0 стало появление поддержки протокола TCP. В случае шифрования по TLS для маршрутизации используются данные SNI (Server Name Indication). Примечательная особенность — возможность работы с entrypoint сразу по двум протоколам: HTTP и TCP — на одном и том же порту. Иллюстрация этой фичи:
В этом примере HTTP-запросы к
Среди прочих значимых изменений в релизе Traefik 2.0:
Полный список изменений — см. в GitHub-репозитории проекта.
Читайте также в нашем блоге:
![](https://habrastorage.org/webt/t4/ar/aj/t4arajqdnh0pwuzob_0yfmsxbls.png)
Главным новшеством в 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 и почему он мне нужен [для облачного приложения с микросервисами]?».