- PVSM.RU - https://www.pvsm.ru -

Maesh — новый простой service mesh для Kubernetes от авторов Traefik

На этой неделе компания Containous, хорошо известная в сообществе cloud native (Kubernetes и других проектов CNCF) благодаря своему продукту Traefik, анонсировала [1] новое Open Source-решение категории service mesh — Maesh [2].

Maesh — новый простой service mesh для Kubernetes от авторов Traefik - 1

Основная идея Maesh сводится к тому, что эта «сервисная сетка» с самого начала создаётся как максимально простая во всём: и в установке, и в использовании. Технически новое решение основывается [3] на том же Traefik и написано на языке Go. Исходный код распространяется [4] на условиях свободной лицензии Apache License v2.

Maesh поддерживает стандартный интерфейс для реализации service mesh'ей в Kubernetes — SMI [5] — и по умолчанию не активируется для уже существующих в кластере сервисов, позволяя подключать их к «сетке» по мере необходимости.

Реализация Maesh не использует sidecar-контейнеры — таким образом, ни объекты в Kubernetes, ни трафик не модифицируются незаметно для вас. Вместо этого управление трафиком осуществляется через proxy endpoints, запущенные на каждом узле K8s-кластера. Контроллер Maesh запускается как отдельный pod, отвечающий за обработку конфигурации и развёртывание всего необходимого в кластере.

Maesh — новый простой service mesh для Kubernetes от авторов Traefik - 2

Для своей работы Maesh требует наличия CoreDNS (поддерживаются версии 1.3+) в качестве DNS-провайдера в кластере Kubernetes: это позволяет использовать endpoint'ы по соседству с пользовательскими сервисами, не требуя запуска sidecar-контейнеров. Поддерживаемые версии самого Kubernetes — 1.11+ (также потребуется наличие Helm v2).

С точки зрения сетевых особенностей, в Maesh поддерживаются два режима:

  • HTTP (тогда используются фичи Traefik),
  • TCP (в нём обеспечивается простая интеграция с SNI).

Благодаря тому, что «под капотом» Maesh задействована кодовая база Traefik, в новом решении доступны многие его возможности: контроль доступом, rate limits, circuit breakers, повторные попытки, балансировка нагрузки для HTTP, gRPC, WebSocket, трассировка с OpenTracing и т.п.

Начать использовать Maesh в Kubernetes-кластере действительно очень просто. Для этого достаточно установить его Helm-чарт:

$ helm repo add maesh https://containous.github.io/maesh/charts
$ helm repo update
$ helm install --name=maesh --namespace=maesh maesh/maesh

… и поставить аннотацию, активирующую его работу для выбранного сервиса:

$ kubectl annotate service 
    web-application maesh.containo.us/traffic-type=http

… или же такую — для сервиса с TCP вместо HTTP:

$ kubectl annotate service mongo-database 
    maesh.containo.us/traffic-type=tcp

Подробнее — смотрите в документации проекта [6].

P.S.

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

Автор: shurup

Источник [12]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/sistemnoe-administrirovanie/329396

Ссылки в тексте:

[1] анонсировала: https://blog.containo.us/announcing-maesh-a-lightweight-and-simpler-service-mesh-made-by-the-traefik-team-cb866edc6f29

[2] Maesh: https://mae.sh/

[3] основывается: https://github.com/containous/maesh/pull/186

[4] распространяется: https://github.com/containous/maesh

[5] SMI: https://smi-spec.io/

[6] документации проекта: https://docs.mae.sh/

[7] часть 1 (знакомство с основными возможностями): https://habr.com/ru/company/flant/blog/438426/

[8] часть 2 (управление трафиком): https://habr.com/ru/company/flant/blog/440378/

[9] часть 3 (аутентификация и авторизация): https://habr.com/ru/company/flant/blog/443668/

[10] Conduit — легковесный service mesh для Kubernetes: https://habr.com/ru/company/flant/blog/349496/

[11] Что такое service mesh и почему он мне нужен [для облачного приложения с микросервисами]?: https://habr.com/ru/company/flant/blog/327536/

[12] Источник: https://habr.com/ru/post/466627/?utm_campaign=466627&utm_source=habrahabr&utm_medium=rss