Стадия жизненного цикла модуля: Предварительная версия (preview)
У модуля есть требования для установки
OpensearchClass
Cluster-wide ресурс OpensearchClass позволяет ограничить создание невалидных конфигураций и предопределить параметры развёртывания.
Каждый ресурс Opensearch обязательно должен быть связан с существующим ресурсом OpensearchClass.
Перед развёртыванием сервиса вся конфигурация проверяется о соответствующий OpensearchClass.
Spec ресурса OpensearchClass иммутабелен после создания. Для изменения конфигурации создайте новый класс.
Sizing Policies
Структура позволяет создавать набор политик определения размера связанных Opensearch.
Это позволяет избегать неравномерного распределения ресурсов CPU и Memory на нодах кластера.
Определяющим фактором выбора той или иной политики является попадание в интервал cores.
Далее проверяется соответствие остальных полей конкретной политики.
spec:
sizingPolicies:
- cores:
min: 1
max: 4
memory:
min: 2Gi
max: 8Gi
step: 1Gi
coreFractions:
- "50%"
- "100%"
- cores:
min: 5
max: 16
memory:
min: 8Gi
max: 32Gi
step: 1Gi
coreFractions:
- "100%"Validation Rules
В качестве синтаксиса используется CEL (Common Expression Language) для создания гибких механизмов валидации.
Предопределённые переменные, доступные в rule:
instance.memory.sizeinstance.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: NoScheduleNode 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: 16
memory:
min: 8Gi
max: 32Gi
step: 1Gi
coreFractions:
- "100%"Класс с валидацией и размещением
apiVersion: managed-services.deckhouse.io/v1alpha1
kind: OpensearchClass
metadata:
name: production
spec:
sizingPolicies:
- cores:
min: 4
max: 16
memory:
min: 8Gi
max: 32Gi
step: 1Gi
coreFractions:
- "100%"
validations:
- message: "Memory must be at least 2x CPU cores in GiB"
rule: "instance.memory.size >= instance.cpu.cores * 2147483648"
nodeSelector:
"node.deckhouse.io/group": "opensearch"
tolerations:
- key: dedicated
operator: Equal
value: opensearch
effect: NoSchedule