The module lifecycle stage: Preview
The module has requirements for installation
OpensearchClass
The cluster-wide OpensearchClass resource allows restricting invalid configurations and predefining deployment parameters.
Each Opensearch resource must be associated with an existing OpensearchClass resource.
Before deploying the service, all user configuration is validated against the corresponding OpensearchClass.
The OpensearchClass spec is immutable after creation. To change configuration, create a new class.
Sizing Policies
Sizing policies define allowed CPU and memory ranges for linked Opensearch instances.
This helps avoid uneven distribution of CPU and memory resources across cluster nodes.
The determining factor for choosing a particular policy is falling within the cores interval.
Then compliance with other fields of the specific policy will be checked.
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) is used for creating flexible validation mechanisms.
Predefined variables available in 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
Standard Kubernetes mechanism for managing scheduling of deployed pods.
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"Usage Examples
Basic Usage
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%"Class with Validation and Placement
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