Модуль managed-opensearch управляет инстансами OpenSearch в Deckhouse Platform (DP). OpenSearch — это поисковая система и аналитический движок с открытым исходным кодом, предназначенный для работы с большими объёмами данных в реальном времени.
Модуль предоставляет:
- Автоматическое развёртывание — создаёт инстанс OpenSearch при помощи простой YAML-конфигурации;
- Управление конфигурацией — отдельный ресурс OpensearchClass для шаблонизации создания сервиса и гибкой валидации пользовательских параметров;
- Класс-ориентированное управление — поддерживает sizing-политики и CEL-валидации;
- Долговременное хранение — поддерживает параметры PersistentVolumeClaim для данных;
- Статус — отображает текущее состояние развёрнутого инстанса OpenSearch.
Подробнее с настройками модуля и примерами его использования можно ознакомиться в документации модуля.
Архитектура модуля
Для упрощения схемы приняты следующие допущения:
- На схеме показано, что контейнеры разных подов взаимодействуют друг с другом напрямую. Фактически они взаимодействуют через соответствующие сервисы Kubernetes (внутренние балансировщики). Названия сервисов не указываются, если они очевидны из контекста. В остальных случаях название сервиса указано над стрелкой.
- Поды могут быть запущены в нескольких репликах, однако на схеме все поды изображены в одной реплике.
Архитектура модуля managed-opensearch на уровне 2 модели C4 и его взаимодействие с другими компонентами DP изображены на следующей диаграмме:
Компоненты модуля
Модуль состоит из следующих компонентов:
-
Managed-opensearch-operator (Deployment) — оператор Kubernetes, состоящий из одного контейнера manager и выполняющий следующие операции:
-
согласование состояния кастомных ресурсов Opensearch во всех пользовательских неймспейсах. Кастомные ресурсы Opensearch и OpensearchClass определяют настройки инстанса OpenSearch;
-
создание и управление кастомным ресурсом Certificate и ресурсами StatefulSet, Service, Secret и PersistentVolumeClaim, относящимися к инстансу OpenSearch.
-
-
Managed-opensearch-webhook (Deployment) — компонент, состоящий из одного контейнера manager.
Компонент выполняет валидацию и мутацию кастомных ресурсов Opensearch с помощью механизмов Validating/Mutating Admission Controllers.
-
D8ms-osch-<INSTANCE_NAME> (StatefulSet) — компонент, состоящий из одного контейнера opensearch и отвечающий за запуск и работу инстанса OpenSearch. Создаётся компонентом managed-opensearch-operator.
Взаимодействия модуля
Модуль взаимодействует с компонентом kube-apiserver:
- управляет кастомными ресурсами Opensearch и Certificate;
- следит за кастомными ресурсами OpensearchClass;
- управляет ресурсами StatefulSet, Service, Secret и PersistentVolumeClaim.
С модулем взаимодействуют следующие внешние компоненты:
-
Kube-apiserver — валидирует и мутирует кастомные ресурсы Opensearch.
-
Пользовательские приложения — отправляют запросы к инстансу OpenSearch.