Nova Service Mesh
1. Общие сведения
Service Mesh — это инфраструктурный слой для управления сетевым взаимодействием между сервисами в кластере. Он позволяет централизованно настраивать сетевое поведение (маршрутизацию, безопасность, наблюдаемость и устойчивость) без изменений в коде приложений.
На практике весь входящий и исходящий трафик сервисов перехватывается прокси-слоем (sidecar), где и выполняются политики управления трафиком, безопасности и наблюдаемости.
|
В данный момент модуль Service Mesh находится на стадии Tech Preview. |
2. Принцип работы
Реализация Service Mesh в Nova Container Platform построена на базе Istio - одного из наиболее продвинутых и функциональных решений в этой области. Istio обеспечивает комплексный набор инструментов для управления трафиком, обеспечения безопасности и повышения наблюдаемости в микросервисной архитектуре.
Istio использует архитектуру, разделенную на два логических уровня:
-
Data Plane
Обрабатывает весь трафик между сервисами через envoy-прокси, развернутые как sidecar-контейнеры. Каждый прокси перехватывает входящие и исходящие запросы, применяя политики маршрутизации, безопасности и сбора метрик.
-
Control Plane
Централизованно управляет конфигурацией прокси, распространяет политики безопасности, координирует процесс обнаружения сервисов и обеспечивает единую точку управления всей mesh-сетью.
Подобная архитектура обеспечивает полную прозрачность для приложений: сервисы не знают о существовании Service Mesh и продолжают работать без изменений в коде, получая все преимущества управляемой инфраструктуры.
3. Основные возможности
3.1. Управление трафиком
Service Mesh предоставляет расширенные возможности для контроля потоков данных между сервисами:
-
Интеллектуальная маршрутизация — гибкие правила направления запросов между версиями сервисов, что необходимо для канареечных развертываний, A/B-тестирования и постепенного внедрения новых версий.
-
Автоматические повторы и таймауты — настройка политик повторных попыток при сбоях и ограничений времени ожидания ответа, что повышает устойчивость системы к временным проблемам.
-
Распределение нагрузки — балансировка трафика между несколькими версиями сервиса по заданным правилам (по процентному соотношению, заголовкам, весам).
3.2. Безопасность
Service Mesh автоматизирует применение политик безопасности на уровне инфраструктуры:
-
Шифрование трафика — автоматическое включение mutual TLS (mTLS) для всех соединений между сервисами без необходимости настройки в коде приложения.
-
Аутентификация и авторизация — поддержка различных схем аутентификации и детальный контроль доступа на основе политик, определяющих, какие сервисы могут взаимодействовать друг с другом.
3.3. Наблюдаемость
Встроенная система наблюдения за работой распределенной системы включает:
-
Распределенную трассировку — интеграцию с системами трассирования для отслеживания пути запросов через множество сервисов и выявление узких мест.
-
Сбор метрик — автоматический экспорт метрик производительности в Prometheus или другие системы мониторинга.
-
Централизованное логирование — унифицированный сбор и хранение логов с возможностью корреляции событий между сервисами для упрощения диагностики проблем.
-
Политики и правила — определение параметров поведения сервисов, включая лимиты ресурсов и обработку ошибок.
3.4. Отказоустойчивость
Механизмы защиты от сбоев и перегрузок включают:
-
Circuit Breaker — паттерн для предотвращения каскадных отказов путем временного прерывания запросов к недоступным или медленно отвечающим сервисам.
-
Rate Limiting — ограничение частоты запросов к сервису для защиты от перегрузки и обеспечения равномерного распределения ресурсов.