Istio — новый service mesh от Google, IBM и Lyft для микросервисов с поддержкой Kubernetes
Вчера компании Google, IBM и Lyft анонсировали новый Open Source-проект Istio, реализующий функции service mesh («сетки для сервисов») для приложений с микросервисной архитектурой.
Service mesh — это новая категория программного обеспечения, обретающая актуальность в связи с растущей популярностью облачных приложений (cloud native), микросервисов, контейнеров и инструментов для их оркестровки. По своей сути это выделенный слой инфраструктуры, обеспечивающий взаимодействие (доставку запросов) между сервисами, разнесёнными по контейнерам с учётом имеющейся топологии. Известная реализация службы service mesh — это проект linkerd, развиваемый фондом CNCF (Cloud Native Computing Foundation).
В основу анонсированного вчера Istio лёг другой Open Source-проект Envoy, разработанный в Lyft и написанный на языке C++11, характеризуемый как «прокси седьмого уровня (L7) и шина для взаимодействия». Envoy позволяет создавать фильтры как подключаемые плагины, работающие как на сетевом уровне (TCP/IP), так и HTTP (поддерживается и HTTP/2), поддерживает gRPC, имеет парсеры для сбора статистики в NoSQL-базы данных MongoDB и DynamoDB, поддерживает множество методов для обнаружения сервисов (Service Discovery) и балансировку нагрузки (с учётом доступности бэкенд-серверов).
Istio называется «открытой платформой для соединения микросервисов, управления ими и обеспечения безопасности». Istio позиционируется как готовое решение для решения таких актуальных для микросервисных и облачных приложений задач, как обнаружение сервисов, балансировка нагрузки, отказоустойчивость, мониторинг конечных точек, динамическая маршрутизация для экспериментальных возможностей, общая согласованность и безопасность.
В Istio для каждого сервиса разворачивается прокси-сервер Envoy как sidecar-контейнер внутри того же пода Kubernetes. Это позволяет не только изучать поведение трафика и применять нужные политики «на месте», но и разворачивать Istio в существующих инсталляциях микросервисных приложений без необходимости переписывать код или менять архитектуру. На данный момент Istio работает только с Kubernetes, но в ближайшем будущем авторы обещают добавить поддержку Cloud Foundry, Mesos и физических серверов (bare metal). Сайт проекта с подробной документацией на английском языке — https:istio.io. Исходный код Istio написан на языке Go, распространяется на условиях свободной лицензии Apache License v2 и опубликован на GitHub.
P.S. Подробнее о том, что такое service mesh и зачем он нужен, можно прочитать в этой статье (перевод материала от создателей Linkerd, опубликованного к релизу 1.0).
Дмитрий Шурупов по материалам Istio, techcrunch.com.