- PVSM.RU - https://www.pvsm.ru -
На этой неделе компания Containous, хорошо известная в сообществе cloud native (Kubernetes и других проектов CNCF) благодаря своему продукту Traefik, анонсировала [1] новое Open Source-решение категории service mesh — Maesh [2].
Основная идея Maesh сводится к тому, что эта «сервисная сетка» с самого начала создаётся как максимально простая во всём: и в установке, и в использовании. Технически новое решение основывается [3] на том же Traefik и написано на языке Go. Исходный код распространяется [4] на условиях свободной лицензии Apache License v2.
Maesh поддерживает стандартный интерфейс для реализации service mesh'ей в Kubernetes — SMI [5] — и по умолчанию не активируется для уже существующих в кластере сервисов, позволяя подключать их к «сетке» по мере необходимости.
Реализация Maesh не использует sidecar-контейнеры — таким образом, ни объекты в Kubernetes, ни трафик не модифицируются незаметно для вас. Вместо этого управление трафиком осуществляется через proxy endpoints, запущенные на каждом узле K8s-кластера. Контроллер Maesh запускается как отдельный pod, отвечающий за обработку конфигурации и развёртывание всего необходимого в кластере.
Для своей работы Maesh требует наличия CoreDNS (поддерживаются версии 1.3+) в качестве DNS-провайдера в кластере Kubernetes: это позволяет использовать endpoint'ы по соседству с пользовательскими сервисами, не требуя запуска sidecar-контейнеров. Поддерживаемые версии самого Kubernetes — 1.11+ (также потребуется наличие Helm v2).
С точки зрения сетевых особенностей, в Maesh поддерживаются два режима:
Благодаря тому, что «под капотом» 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].
Читайте также в нашем блоге:
Автор: 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
Нажмите здесь для печати.