Вчера состоялся анонс очередного Open Source-решения класса service mesh — Open Service Mesh (OSM). Проект был представлен Michelle Noorali, что занимает должность Senior Software Engineer в команде Azure Cloud Native Compute компании Microsoft, а также входит в состав руководства организации CNCF.
Open Service Mesh позиционируется как «легковесная и расширяемая „сервисная сетка“, запускаемая поверх Kubernetes», которая (как, в общем-то, и другие решения этой категории) позволяет «унифицировано управлять межсервисным взаимодействием, обеспечивать для него безопасность и мониторить его в динамичных микросервисных окружениях».
Microsoft уже была замечена в активной работе над спецификацией SMI (Service Mesh Interface), призванной стандартизировать service mesh-решения для Kubernetes и недавно принятой в состав проектов CNCF (пока лишь в рамках «песочницы» — sandbox).
Open Service Mesh следует этой спецификации и призван стать проектом, руководимым Open Source-сообществом и, в частности, способствующим развитию типовых API в SMI. Буквально 10 часов назад была подана заявка и на включение Open Service Mesh в состав проектов CNCF, тоже как sandbox. (К слову, в фонде уже значатся такие service mesh-решения, как Linkerd и Kuma.)
Технические детали и архитектура
Исходный код Open Service Mesh написан на языке Go, доступен в GitHub и распространяется на условиях свободной лицензии MIT.
Анонс проекта приурочен к первому публичному релизу OSM — v0.1.0, — представленному менее суток назад. Отдельно отмечается, что OSM не готов к использованию в production.
Open Service Mesh архитектурно базируется на прокси Envoy и реализует go-control-plane xDS v3 API этого проекта. Однако, несмотря на то, что Envoy входит в поставку OSM по умолчанию, использование стандартных интерфейсов позволяет интегрировать его и с другими реверсными прокси (совместимыми с xDS). Безопасность обеспечивается автоматическим mTLS для взаимодействия сервисов.
Open Service Mesh образуется 5 компонентами:
- Proxy control plane обрабатывает gRPC-соединения от sidecar-прокси service mesh'а;
- Certificate manager обеспечивает выпуск сертификатов и управление ими (возможно использование внешних решений для этих задач);
- Endpoints providers отвечают за получение IP-адресов всех платформ, участвующих во взаимодействии (таковыми могут являться кластеры Kubernetes, машины on-prem, виртуальные машины облачных провайдеров);
- Mesh specification — обёртка вокруг спецификации SMI на Go SDK, обеспечивающая простые методы получения ресурсов по этой спецификации, абстрагируясь от специфики устройства кластера и хранилища;
- Mesh catalog — центральное звено service mesh'а, собирающее данные со всех других компонентов и передающее конфигурацию для proxy control plane.
Более подробное представление об архитектуре OSM можно получить из этой расширенной схемы:
… а также из достаточно подробного документа DESIGN.md.
Проект Open Service Mesh будет представлен на грядущей виртуальной конференции по Kubernetes — KubeCon EU Virtual 2020, — а также в рамках вебинара партнеров CNCF 14 августа.
P.S.
Читайте также в нашем блоге: