Для улучшения работы сайта мы используем файлы cookies. Оставаясь на сайте, вы соглашаетесь с политикой обработки персональных данных.

Nova Service Mesh. Архитектура

1. Компоненты модуля

Все компоненты модуля Service Mesh в Nova Container Platform работают в среде Kubernetes и реализуют описанную ранее двухуровневую архитектуру с Control Plane и Data Plane, дополненную полным стеком инструментов наблюдаемости.

Ниже представлена схема, демонстрирующая взаимодействие компонентов:

nova servise mesh

В таблице ниже приведены компоненты и их краткое описание:

Компонент Тип Количество Описание

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-узел, имеющий метку: (node-role.kubernetes.io/istio-ingressgateway)

Компонент, который управляет входящим трафиком в сервисную сетку (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.