Стадия жизненного цикла модуля: Предварительная версия (preview)
У модуля есть требования для установки
Opensearch
Namespaced-ресурс, описывающий конечную конфигурацию и являющийся источником истины для конкретного развёрнутого сервиса Opensearch.
OpensearchClass Name
Имя класса, с которым будет связан ресурс.
Без созданного OpensearchClass развёртывание сервиса невозможно.
spec:
opensearchClassName: defaultInstance
Секция, описывающая ресурсы создаваемого сервиса.
Должна пройти валидацию по sizingPolicies соответствующего класса:
spec:
instance:
cpu:
cores: 2
coreFraction: "100%"
memory:
size: "4Gi"
persistentVolumeClaim:
size: "10Gi"
# storageClassName: local-pathTLS
Настройки серверного TLS. Режим задаётся полем mode:
CertManager— сертификат выпускается и управляется cert-manager (по умолчанию).CustomCertificate— используется пользовательский TLS-сертификат из Secret.
spec:
tls:
mode: CertManager
certManager:
clusterIssuerName: my-issuerObservability
Режим мониторинга инстанса:
Enabled— полный мониторинг с алертами (по умолчанию).Disabled— мониторинг отключён.EnabledWithoutAlerts— мониторинг без алертов.
spec:
observability: EnabledСтатус
Статус сервиса отражается в ресурсе Opensearch.
Структура Conditions показывает текущее состояние сервиса.
Значимые типы:
ConfigurationValid— показывает, прошла ли конфигурация все валидации связанногоOpensearchClass.LastValidConfigurationApplied— показывает, была ли последняя валидная конфигурация успешно применена.ScaledToLastValidConfiguration— показывает, соответствует ли количество работающих реплик заданной конфигурации.Available— показывает, работает ли инстанс Opensearch и принимает подключения.
conditions:
- lastTransitionTime: '2026-06-01T12:00:00Z'
observedGeneration: 1
status: 'True'
type: Available
- lastTransitionTime: '2026-06-01T11:58:00Z'
observedGeneration: 1
status: 'True'
type: ConfigurationValid
- lastTransitionTime: '2026-06-01T11:59:00Z'
observedGeneration: 1
status: 'True'
type: LastValidConfigurationApplied
- lastTransitionTime: '2026-06-01T12:00:00Z'
observedGeneration: 1
status: 'True'
type: ScaledToLastValidConfigurationСтатус False говорит о проблеме или незавершённой синхронизации.
В этом случае будут указаны reason и message с описанием:
- lastTransitionTime: '2026-06-01T11:59:00Z'
message: Not all the instances are running, still waiting for 1 to become ready
observedGeneration: 1
reason: ScalingInProgress
status: 'False'
type: ScaledToLastValidConfigurationПримеры использования
Базовое использование (HTTP)
- Создайте namespace:
kubectl create ns opensearch-ns- Создайте ресурс
Opensearch:
kubectl apply -f opensearch.yaml -n opensearch-nsapiVersion: managed-services.deckhouse.io/v1alpha1
kind: Opensearch
metadata:
name: my-opensearch
spec:
opensearchClassName: default
instance:
cpu:
cores: 2
coreFraction: "100%"
memory:
size: "4Gi"
persistentVolumeClaim:
size: "10Gi"- Подождите, пока все conditions станут
True:
kubectl get opensearch my-opensearch -n opensearch-ns -o wide -w- Получите пароль администратора.
Оператор автоматически генерирует пароль и сохраняет его в Secret с именем
d8ms-osch-<имя-инстанса>-admin-creds:
kubectl get secret d8ms-osch-my-opensearch-admin-creds -n opensearch-ns \
-o jsonpath='{.data.password}' | base64 -d && echo- Проверьте доступность сервиса. Без TLS security plugin отключён и Opensearch доступен по HTTP без авторизации:
kubectl port-forward -n opensearch-ns svc/d8ms-osch-my-opensearch 9200:9200В другом терминале:
curl http://localhost:9200/_cluster/health?prettyОжидаемый результат: "status": "green" или "yellow" (single-node).
Развёртывание с TLS (cert-manager)
- Создайте namespace:
kubectl create ns opensearch-tls- Создайте ресурс
Opensearchс TLS:
kubectl apply -f opensearch-tls.yaml -n opensearch-tlsapiVersion: managed-services.deckhouse.io/v1alpha1
kind: Opensearch
metadata:
name: my-opensearch
spec:
opensearchClassName: default
instance:
cpu:
cores: 2
coreFraction: "100%"
memory:
size: "4Gi"
persistentVolumeClaim:
size: "10Gi"
tls:
mode: CertManager
certManager:
clusterIssuerName: letsencrypt- Подождите, пока все conditions станут
True:
kubectl get opensearch my-opensearch -n opensearch-tls -o wide -w- Получите пароль и проверьте доступность через HTTPS:
ADMIN_PASS=$(kubectl get secret d8ms-osch-my-opensearch-admin-creds -n opensearch-tls \
-o jsonpath='{.data.password}' | base64 -d)
kubectl port-forward -n opensearch-tls svc/d8ms-osch-my-opensearch 9200:9200В другом терминале:
curl -k -u admin:$ADMIN_PASS https://localhost:9200/_cluster/health?pretty