Traefik 2.0: обновление service mesh с поддержкой TCP и новым веб-интерфейсом

В минувший вторник компания Containous представила крупное обновление к своему флагманскому Open Source-продукту — service mesh-решению Traefik — в виде версии 2.0.

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);

    tlsnqfnx0oxtfaxvanrn4gd7pzw.png

  • новый веб-интерфейс (WebUI) для просмотра информации о кластере и управления настройками Traefik;

    bqexzfkfgnh085u2sxzxydtxvpg.png

  • поддержка канареечных выкатов (canary deployments) и, соответственно, возможности A/B-тестирования, что реализовано в виде Service Load Balancers, перенаправляющих запросы к сервисам приложения;
  • поддержка зеркалирования запросов для дублирования одного и того же входящего трафика на различные сервисы (тоже реализовано в Service Load Balancers);

    tqxcxl9p_qdn9bzi2l0srpi4fee.png

  • конфигурация для Kubernetes в виде CRD;
  • альтернативный формат конфигурации в YAML.

Полный список изменений — см. в GitHub-репозитории проекта.

P.S.


Читайте также в нашем блоге:

© Habrahabr.ru