Стадия жизненного цикла модуля: Предварительная версия (preview)

У модуля есть требования для установки

Opensearch

Namespaced-ресурс, описывающий конечную конфигурацию и являющийся источником истины для конкретного развёрнутого сервиса Opensearch.

OpensearchClass Name

Имя класса, с которым будет связан ресурс. Без созданного OpensearchClass развёртывание сервиса невозможно.

spec:
  opensearchClassName: default

Instance

Секция, описывающая ресурсы создаваемого сервиса. Должна пройти валидацию по sizingPolicies соответствующего класса:

spec:
  instance:
    cpu:
      cores: 2
      coreFraction: "100%"
    memory:
      size: "4Gi"
    persistentVolumeClaim:
      size: "10Gi"
      # storageClassName: local-path

TLS

Настройки серверного TLS. Режим задаётся полем mode:

  • CertManager — сертификат выпускается и управляется cert-manager (по умолчанию).
  • CustomCertificate — используется пользовательский TLS-сертификат из Secret.
spec:
  tls:
    mode: CertManager
    certManager:
      clusterIssuerName: my-issuer

Observability

Режим мониторинга инстанса:

  • 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)

  1. Создайте namespace:
kubectl create ns opensearch-ns
  1. Создайте ресурс Opensearch:
kubectl apply -f opensearch.yaml -n opensearch-ns
apiVersion: 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"
  1. Подождите, пока все conditions станут True:
kubectl get opensearch my-opensearch -n opensearch-ns -o wide -w
  1. Получите пароль администратора. Оператор автоматически генерирует пароль и сохраняет его в Secret с именем d8ms-osch-<имя-инстанса>-admin-creds:
kubectl get secret d8ms-osch-my-opensearch-admin-creds -n opensearch-ns \
  -o jsonpath='{.data.password}' | base64 -d && echo
  1. Проверьте доступность сервиса. Без 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)

  1. Создайте namespace:
kubectl create ns opensearch-tls
  1. Создайте ресурс Opensearch с TLS:
kubectl apply -f opensearch-tls.yaml -n opensearch-tls
apiVersion: 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
  1. Подождите, пока все conditions станут True:
kubectl get opensearch my-opensearch -n opensearch-tls -o wide -w
  1. Получите пароль и проверьте доступность через 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