Nova Service Mesh. Архитектура
1. Компоненты модуля
Все компоненты модуля Service Mesh в Nova Container Platform работают в среде Kubernetes и реализуют описанную ранее двухуровневую архитектуру с Control Plane и Data Plane, дополненную полным стеком инструментов наблюдаемости.
Ниже представлена схема, демонстрирующая взаимодействие компонентов:
В таблице ниже приведены компоненты и их краткое описание:
| Компонент | Тип | Количество | Описание |
|---|---|---|---|
Control Plane (Istiod) |
Deployment |
1 Pod на каждый infra-узел |
Платформа с открытым исходным кодом, реализующая концепцию Service Mesh для управления сетевым взаимодействием между микросервисами. Она предоставляет возможности для обеспечения безопасности, балансировки нагрузки, мониторинга и управления трафиком между сервисами в кластере. |
Data Plane (Envoy Proxy) |
Pods |
Внедряется как sidecar-контейнер в Pod с приложением |
Высокопроизводительный прокси-сервер и балансировщик нагрузки, предназначенный для современных облачных и микросервисных архитектур. Он работает на уровнях L3/L4. L7 предоставляет расширенные возможности управления трафиком, балансировки нагрузки и мониторинга для приложений, работающих в микросервисной среде. |
Istio CNI Plugin |
DaemonSet |
1 Pod на каждый узел |
Компонент, который заменяет init-контейнер в Istio для перенаправления сетевого трафика в sidecar-прокси Envoy. Он позволяет управлять трафиком, направляемым в сервисы, и обеспечивает безопасность, устраняя необходимость в повышенных привилегиях для init-контейнера. |
Istio Ingress Controller |
DaemonSet |
1 Pod на каждый worker-узел, имеющий метку: ( |
Компонент, который управляет входящим трафиком в сервисную сетку (service mesh) Istio. Он позволяет определять правила для маршрутизации внешнего трафика к различным сервисам, работающим внутри кластера Kubernetes под управлением Service Mesh, обеспечивая такие возможности, как балансировка нагрузки, шифрование, авторизация и мониторинг. |
Service Mesh Policy |
CRD |
На все Pods с Envoy Proxy |
Набор правил и конфигураций, которые определяют, как сервисы внутри Service Mesh могут взаимодействовать друг с другом. |
Kiali |
Deployment |
1 Pod на каждый infra-узел |
Веб-интерфейс для визуализации и управления Service Mesh. |
Istio CSR |
Deployment |
1 Pod на каждый infra-узел |
Компонент, который использует cert-manager для автоматизации выдачи и обновления сертификатов для компонентов Istio, включая рабочие нагрузки и плоскость управления. |
Grafana |
Deployment |
1 Pod на каждый infra-узел |
Отдельный экземпляр Grafana, развернутый как самостоятельный компонент Nova Service Mesh. Используется для отображения данных из Kiali. |
Prometheus |
StatefulSet |
1 Pod на каждый infra-узел |
Отдельный экземпляр Prometheus, развернутый как самостоятельный компонент Nova Service Mesh. Используется для сбора метрик с control plane и istiod. |
Jaeger Operator |
Pod |
1 Pod |
Платформа для распределенной трассировки, которая используется для мониторинга в микросервисных приложениях и позволяет визуализировать пути запросов в приложениях. |
Jaeger Agent |
DaemonSet |
1 Pod на каждый infra-узел |
Платформа для распределенной трассировки, которая используется для мониторинга микросервисных приложений и позволяет визуализировать пути запросов в приложениях. |
Jaeger Collector |
Deployment |
1 Pod на каждый infra-узел |
Легкий сетевой агент, принимающий трассировочные данные от приложений и пересылающий их в Jaeger Collector; разворачивается на каждом узле как инфраструктурный компонент. |
Jaeger Query + UI |
Deployment |
1 Pod на каждый infra-узел |
Сервис, который принимает трассы от агентов, валидирует и обрабатывает их, а затем сохраняет в выбранное хранилище (например, Elasticsearch или Cassandra) для последующего анализа. |
OpenSearch |
StatefulSet |
1 Pod на каждый infra-узел |
Отдельный экземпляр OpenSearch, развернутый как самостоятельный компонент Nova Service Mesh. Используется для хранения трейсов jaeger. |
2. Основные сущности в Istio и принцип их работы
Далее в таблице представлено описание основных сущностей Istio.
| Тип | Описание |
|---|---|
Gateway |
Объект конфигурации, используемый для организации логики работы Ingress- и Egress-шлюзов. В его определении отсутствует selector для явного выбора Pod-ов Istio-IngressGateway, на которых будут открыты указанные порты. В спецификации Gateway задаются порты, протоколы и их наименования, которые используются для маршрутизации входящего и исходящего трафика. |
VirtualService |
Объект конфигурации Istio, отвечающий за управление маршрутизацией трафика внутри сервисной сети. Он позволяет задавать детализированные правила обработки запросов, включая механизмы поэтапного внедрения изменений, такие как A/B-тестирование и канареечные развертывания. |
DestinationRule |
Объект конфигурации Istio, задающий правила обработки трафика, направленного к целевому сервису. В нем определяются правила балансировки нагрузки, параметры повторных попыток и механизмы обеспечения отказоустойчивости. |
PeerAuthentication |
Управляет политиками аутентификации на уровне Pod-ов. Он определяет правила приема или отклонения входящих запросов в сервисной сети в соответствии с заданными механизмами безопасности. |
Sidecar |
Управляет уровнем видимости и схемой трафика для отдельных Pods. Это дает возможность оптимизировать и ограничивать трафик, направленный к Pods. |