Стадия жизненного цикла модуля: Preview
У модуля есть требования для установки

OpensearchClass

Кластерный ресурс OpensearchClass позволяет ограничить создание невалидных конфигураций и предопределить параметры развёртывания. Каждый ресурс Opensearch обязательно должен быть связан с существующим ресурсом OpensearchClass. Перед развёртыванием сервиса вся конфигурация валидируется о соответствующий OpensearchClass.

Spec ресурса OpensearchClass неизменяем после создания. Для изменения конфигурации создайте новый класс.

Политики масштабирования

Политики масштабирования определяют допустимые диапазоны CPU и памяти для связанных инстансов Opensearch. Определяющий фактор выбора политики — попадание в интервал cores. Далее проверяется соответствие остальных полей выбранной политики.

spec:
  sizingPolicies:
    - cores:
        min: 1
        max: 4
      memory:
        min: 1Gi
        max: 8Gi
        step: 1Gi
      coreFractions:
        - 50%
        - 100%
    - cores:
        min: 5
        max: 10
      memory:
        min: 4Gi
        max: 32Gi
        step: 1Gi
      coreFractions:
        - 100%

Правила валидации

В качестве синтаксиса используется CEL (Common Expression Language) для создания гибких механизмов валидации. Предопределённые переменные, доступные в rule:

  • instance.memory.size
  • instance.cpu.cores
spec:
  validations:
    - message: "Memory must be at least 2x CPU cores in GiB"
      rule: "instance.memory.size >= instance.cpu.cores * 2147483648"

Привязка к узлам (Affinity)

Стандартный механизм Kubernetes для управления размещением подов.

spec:
  nodeAffinity:
    requiredDuringSchedulingIgnoredDuringExecution:
      nodeSelectorTerms:
      - matchExpressions:
        - key: "node.deckhouse.io/group"
          operator: "In"
          values:
          - "opensearch"

Допуски (Tolerations)

spec:
  tolerations:
  - key: dedicated
    operator: Equal
    value: opensearch
    effect: NoSchedule

Выбор узла (Node Selector)

spec:
  nodeSelector:
    "node.deckhouse.io/group": "opensearch"

Примеры использования

Базовое использование

apiVersion: managed-services.deckhouse.io/v1alpha1
kind: OpensearchClass
metadata:
  name: default
spec:
  sizingPolicies:
    - cores:
        min: 1
        max: 4
      memory:
        min: 2Gi
        max: 8Gi
        step: 1Gi
      coreFractions:
        - 50%
        - 100%
    - cores:
        min: 5
        max: 10
      memory:
        min: 8Gi
        max: 32Gi
        step: 1Gi
      coreFractions:
        - 100%