Что такое Service Mesh и зачем он нужен для Kubernetes?

В этой статье специалисты компании DST Global расскажут о платформе сервисной сетки, такая как Istio, которая упрощает масштабирование рабочих нагрузок Kubernetes, предоставляя функции сети, безопасности и наблюдения.

В настоящее время предприятия стремятся внедрить архитектуру микросервисов, учитывая ее маневренность и гибкость. Контейнеры и появление Kubernetes — популярного инструмента оркестровки контейнеров — упростили для них переход от монолита к микросервисам.

Однако при масштабном использовании архитектуры микросервисов возник новый набор проблем:

DevOps и архитекторам стало сложно управлять трафиком между сервисами

Поскольку микросервисы развертываются в нескольких кластерах и облаках, данные выходят за периметр (брандмауэра) и становятся уязвимыми; безопасность становится большой проблемой

Получение общей информации о топологии сети стало кошмаром для SRE.

Внедрение новых инструментов безопасности или настройка существующих шлюзов API или контроллеров Ingress — это всего лишь лоскутное одеяло, а не полное решение вышеуказанных проблем.

Что нужно архитекторам, так это радикальная реализация их инфраструктуры для решения их растущих проблем с сетью, безопасностью и наблюдаемостью. И вот тут-то и появляется концепция сервисной сетки.

Что такое сервисная сетка? 

Сервисная сетка отделяет связь между сервисами от прикладного уровня к инфраструктурному уровню. Абстракция на уровне инфраструктуры происходит за счет проксирования трафика между сервисами (см. рис. A).

Рис. A. Связь между службами до и после внедрения сервисной сетки

Прокси-сервер развертывается вместе с приложением в качестве дополнительного контейнера. Входящий и исходящий трафик службы перехватывается прокси-сервером, который обеспечивает расширенные функции управления трафиком и безопасности. Кроме того, сервисная сетка обеспечивает возможность наблюдения за общей топологией сети.

В архитектуре сервисной сетки сетка прокси называется плоскостью данных, а контроллер, отвечающий за настройку и управление прокси плоскости данных, называется плоскостью управления.

Зачем вам Service Mesh для Kubernetes?

Вначале у большинства DevOps есть только несколько сервисов, с которыми нужно иметь дело. По мере масштабирования приложений и увеличения количества служб управление сетью и безопасностью усложняется.

Утомительное соблюдение требований безопасности

Приложения, развернутые в нескольких кластерах от разных поставщиков облачных услуг, взаимодействуют друг с другом по сети. Важно, чтобы такой трафик соответствовал определенным стандартам, чтобы не допустить злоумышленников и обеспечить безопасную связь.

Проблема в том, что политики безопасности обычно являются локальными для кластера и не работают за пределами кластера. Это указывает на потребность в решении, которое может применять согласованные политики безопасности в кластерах.

Хаотическое управление сетью

Инженерам DevOps часто приходилось контролировать поток трафика к службам — например, для выполнения канареечного развертывания. И они также хотели бы проверить отказоустойчивость и надежность системы, введя ошибки и внедрив автоматические выключатели.

Достижение такого детального контроля над сетью требует от инженеров DevOps создания большого количества конфигураций и сценариев в Kubernetes и облачной среде.

Отсутствие визуализации по сети

Когда приложения распределены по сети и между ними происходит обмен данными, SRE становится сложно отслеживать работоспособность и производительность сетевой инфраструктуры. Это серьезно снижает их способность выявлять и устранять неполадки в сети.

Внедрение службы решает вышеуказанные проблемы, предоставляя функции, которые делают управление приложениями, развернутыми в Kubernetes, безболезненным.

Ключевые особенности Service Mesh в Kubernetes

Service Mesh действует как централизованная платформа для организации сети, безопасности и наблюдения за микросервисами, развернутыми в Kubernetes.

Централизованная безопасность

С сервисной сеткой легче добиться соответствия требованиям безопасности, поскольку это можно сделать из центральной плоскости, а не настраивать ее для каждой службы. Платформа Service Mesh может применять согласованные политики безопасности, работающие за пределами кластера.

Сервисная сетка обеспечивает детализированную аутентификацию, авторизацию и контроль доступа для приложений в сетке.

Аутентификация: реализация mTLS , JWT

Авторизация : политики могут быть настроены на разрешение, отклонение или выполнение настраиваемых действий в отношении входящего запроса.

Контроль доступа: политики RBAC, которые можно установить на уровнях методов, служб и пространств имен.

Расширенное сетевое тестирование и тестирование устойчивости

Сервисная сетка обеспечивает детальный контроль над потоком трафика между сервисами. Инженеры DevOps могут разделять трафик между сервисами или направлять их на основе определенных весов.

Кроме того, сервисная сетка предоставляет следующие функции для проверки отказоустойчивости инфраструктуры без особых усилий:

Введение ошибок

Тайм-ауты

Повторные попытки

Размыкание цепи

Зеркальное отображение

Единая наблюдаемость

Внедрение сервисной сетки помогает командам SRE и Ops централизованно отслеживать состояние и производительность приложений в сетке. Сервисная сетка предоставляет следующую телеметрию для наблюдения и видимости в реальном времени:

Метрики: для мониторинга производительности и просмотра задержек, трафика, ошибок и насыщения.

Распределенная трассировка: чтобы понять жизненный цикл запросов и проанализировать зависимость службы и поток трафика.

Журналы доступа: для аудита поведения службы.

Лучшее программное обеспечение Service Mesh для Kubernetes

На рынке можно найти различное программное обеспечение для сервисных сетей, такое как Istio, Linkerd, HashiCorp Consul, Kong KUMA, Google Anthos (построен на Istio), VMware Tanzu и т. д.

Тем не менее, более 90 % пользователей используют программное обеспечение сервисной сетки Istio или Linkerd из-за их мощной и динамичной экосистемы с открытым исходным кодом для инноваций и поддержки.

Istio 

Istio — это самое популярное сертифицированное CNCF программное обеспечение Service Mesh с открытым исходным кодом, . Он использует прокси-сервер Envoy в качестве сайдкаров, а плоскость управления используется для их управления и настройки (см. рис. B).

Istio предоставляет сетевые функции, функции безопасности и наблюдения для приложений любого масштаба. Разработчики из Google, Microsoft, IBM и других активно участвуют в проекте Istio.

Linkerd 

Linkerd — это легкое программное обеспечение для сервисных сетей с открытым исходным кодом, разработанное Buoyant. Он предоставляет основные функции сервисной сетки и имеет службу назначения, службу идентификации и инжектор прокси (см. рис. C).

Более 80% вклада в Linkerd вносят сами основатели Buoyant .

(Чтобы увидеть подробное сравнение между ними и выбрать один из них для своего развертывания Kubernetes, перейдите к статье Istio vs Linkerd: лучшая сетка сервисов на 2023 год .)

Преимущества Service Mesh для Kubernetes

Ниже приведены некоторые преимущества от инженеров компании DST Global, которые предприятия получат, внедрив сервисную сетку в Kubernetes.

100% безопасность сети и данных

Сервисная сетка помогает поддерживать сеть с нулевым доверием, в которой запросы постоянно аутентифицируются и авторизуются перед обработкой. Инженеры DevOps могут реализовать такие функции, как mTLS, которые работают в масштабе всего кластера и за его пределами (см. рис. D).

Сеть с нулевым доверием помогает поддерживать безопасную инфраструктуру в текущей динамичной среде угроз, наполненной атаками, такими как «человек посередине» (MITM) и отказ в обслуживании (DoS).

(Если вам интересно узнать больше, ознакомьтесь с этой статьей: Сеть с нулевым доверием для микросервисов с Istio .)

На 80 % снижается количество неудачных изменений

В настоящее время предприятия выпускают приложения для небольшого числа активных пользователей перед полным развертыванием. Это помогает DevOps и SRE анализировать производительность приложений, выявлять любые ошибки и, таким образом, избегать возможных простоев.

Канарские и сине-зеленые развертывания являются двумя такими стратегиями развертывания. Мелкозернистые средства управления трафиком, в том числе разделение трафика на основе весов (см. рис. F), предоставляемые сервисной сеткой, упрощают их выполнение инженерами DevOps.

Рис. F. Развертывание Canary с сервисной сеткой Istio 

Доступная и отказоустойчивая инфраструктура на 99,99 %

Данные телеметрии, предоставляемые программным обеспечением Service Mesh, помогают командам SRE и Ops быстро выявлять ошибки/угрозы и реагировать на них.

Большая часть ПО Service Mesh интегрируется с инструментами мониторинга, такими как Prometheus, Grafana, Kiali, Jaeger и т. д., а предоставляемая ими панель инструментов (см. рис. G) помогает операторам визуализировать работоспособность, производительность и поведение сервисов.

Рис G — График обслуживания Kiali

5-кратное улучшение опыта разработчиков

Большинству разработчиков приложений не нравится настраивать сеть и логику безопасности в своих приложениях. Их внимание, как правило, сосредоточено на бизнес-логике и функциях построения.

Внедрение сервисной сетки снижает трудозатраты разработчиков, поскольку они остаются наедине с кодом приложения. Они могут полностью перенести настройки сети и безопасности в сервисную сетку на уровне инфраструктуры. Разделение помогает разработчикам сосредоточиться на своих основных обязанностях, т. е. на реализации бизнес-логики.

Три столпа успешного внедрения Service Mesh

Поскольку сервисная сетка является радикальной концепцией, предприятиям может быть сложно реализовать и реализовать ее ценность. Если вы являетесь архитектором или ИТ-директором, вам следует рассмотреть следующие три столпа для успешной реализации сервисной сетки.

1. Технологическая поддержка

Важно оценить программное обеспечение сервисной сетки с точки зрения технологической поддержки. Если вы являетесь зрелой организацией DevOps, использующей различные открытые стандарты и открытый код в процессе CI/CD, убедитесь, что программное обеспечение Service Mesh хорошо интегрируется с вашими инструментами CI/CD (любых версий).

Например, если вы используете Argo CD для развертывания GitOps или Prometheus для мониторинга, то программное обеспечение Service Mesh должно быть способно интегрироваться с меньшим вмешательством.

2. Поддержка предприятий

Распространение программного обеспечения с открытым исходным кодом растет. Но поддержка программного обеспечения будет первой необходимостью для предприятий, чтобы убедиться, что их ИТ доступны для бизнеса.

Оцените программное обеспечение Service Mesh, которое поддерживается крупным членом сообщества (очень хорошо для поддержки), а также существуют экосистемы сторонних поставщиков, которые могут обеспечить круглосуточную поддержку 7 дней в неделю с фиксированным соглашением об уровне обслуживания.

3. Обучение и адаптационная поддержка

Обеспечьте наличие соответствующих материалов для чтения, документов и видео , которые дополнят обучение пользователей программному обеспечению Service Mesh, потому что это не имеет смысла, если внутренние сотрудники, такие как DevOps и SRE, не смогут его внедрить.

Наконец, сервисная сетка — это не просто программное обеспечение, а модель работы приложения. Не торопите свой проект. Вместо этого изучите и оцените наилучшую сетку услуг, которая соответствует требованиям и потребностям вашей организации.

Service Mesh — путь вперед для рабочих нагрузок Kubernetes

Цель внедрения сервисной сетки — упростить управление приложениями, развернутыми в Kubernetes. Принятие этого станет необходимостью, поскольку службы начнут перетекать из одного кластера в несколько кластеров. По мере распространения Kubernetes сервисная сетка в конечном итоге станет важнейшим компонентом в большинстве организаций. 

Что такое Service Mesh и зачем он нужен для Kubernetes?
Получить консультацию у специалистов DST
Напишите нам прямо сейчас, наши специалисты расскажут об услугах и ответят на все ваши вопросы.
Комментарии
RSS
Вам может быть интересно
Традиционные решения для управления API с трудом справляются с распределенной природой Kubernetes. Познакомьтесь с некоторыми решениями от специалистов компании DST Global, для эффективного управления...
Изучите изменяемую инфраструктуру и неизменяемые структуры: узнайте от специалис...
В современной разработке большая часть приложений ...
В этой публикации специалисты из DST Global предст...
Десятилетие совершенства: путь, влияние и будущее ...
В статье подчеркивается важность создания комплекс...
Микросервисы — это тип архитектуры, который ...
Как пользоваться Github? Разработчики компании DST...
Когда дело доходит до разработки программного обес...
Инструменты контейнеризацииКонтейнеризация —...

Новые комментарии

Оптимизация производительности веб-приложений — это не просто задача, а искусств...
Если обучение кампании уже замедлилось, можно прибегнуть к действиям, о которых ...
Всё зависит от объема фида. Например, генерация динамических объявлений может за...

Заявка на услуги DST

Наш специалист свяжется с вами, обсудит оптимальную стратегию сотрудничества,
поможет сформировать бизнес требования и рассчитает стоимость услуг.

Адрес

Ижевск, ул. Воткинское шоссе, д. 170 Е, Технопарк Нобель, офис 1117

8 495 1985800
Заказать звонок

Режим работы: Пн-Пт 10:00-19:00

info@dstglobal.ru

Задать вопрос по почте

Укажите ваше имя
Укажите ваше email
Укажите ваше телефон