Pull to refresh
Флант
DevOps-as-a-Service, Kubernetes, обслуживание 24×7

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

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



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

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

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



Для своей работы 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

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

P.S.


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

Tags:
Hubs:
+26
Comments 0
Comments Leave a comment

Other news

Information

Website
flant.ru
Registered
Founded
Employees
201–500 employees
Location
Россия
Representative
Тимур Тукаев