Стадия жизненного цикла модуля: Preview
ValkeyClass
Custer Wide Ресурс ValkeyClass позволяет ограничить создание невалидных конфигураций и предопределить некоторые значения.
Каждый ресурс Valkey обязательно должен быть связан с существующим ресурсом ValkeyClass.
Перед развертыванием сервиса, вся конфигурация будет проверена о соответсвующий ValkeyClass.
Sizing Policies
Структура позволяет создавать набор политик определения размера связанных Valkey.
Это позволит избегать неравномерного распределения ресурсов CPU и Memory на нодах кластера.
Определяющим фактором выбора той или иной политики является попадание в интервал cores.
Далее будет проверено соответствие остальных полей конкретной политики.
spec:
sizingPolicies:
- cores:
min: 1
max: 4
memory:
min: 100Mi
max: 1Gi
step: 1Mi
coreFraction: [10, 30, 50]
- cores:
min: 5
max: 10
memory:
min: 500Mi
max: 2Gi
coreFraction: [50, 70, 100]
Validation Rules
В качестве синтаксиса используется CEL (Common Expression Language) для создания гибких механизмов валидаций.
Мы предоставляем набор предопределенных переменных, которые можно использовать в rule:
- configuration.maxMemory
int - configuration.maxMemoryPolicy
string - configuration.save
string - configuration.appendOnly
string - instance.memory.size
int - instance.cpu.cores
int
spec:
validations:
- message: "maxMemory should be less then instance.memory.size at least for 10%"
rule: "configuration.maxMemory <= instance.memory.size - instance.memory.size / 10"
Overridable Configuration
Белый список параметров конфигурации которые могут быть переопределены в ресурсе Valkey.
Список всех возможных параметров.
spec:
overridableConfiguration:
- maxMemory
- maxMemoryPolicy
Configuration
Параметры конфигурации, которые могут быть определены на уровне ValkeyClass.
Значения этих параметров переопределят defaults для всех связанных Valkey.
Note: Параметры, которые были разрешены и переопределены в overridableConfiguration будут являться приоритетными.
spec:
configuration:
maxMemoryPolicy: Noeviction
save: "360 100"
appendOnly: "No"
Значения по умолчанию, которые устанавливаются Valkey Operator исходят из следующей логики:
save: ""appendOnly: “no”maxMemory:spec.instance.memory.size* 0.9
Affinity
Стандартный механизм Kubernetes для управления планированием разворачиваемых подов.
spec:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: "node.deckhouse.io/group"
operator: "In"
values:
- "valkey"
Tolerations
Стандартный механизм Kubernetes для управления планированием разворачиваемых подов.
spec:
tolerations:
- key: primary-role
operator: Equal
value: valkey
effect: NoSchedule
Node Selector
Стандартный механизм Kubernetes для управления планированием разворачиваемых подов.
nodeSelector:
"node.deckhouse.io/group": "valkey"
Примеры использования
Базовое использование
apiVersion: managed-services.deckhouse.io/v1alpha1
kind: ValkeyClass
spec:
overridableConfiguration:
- maxMemoryPolicy
- save
- appendOnly
- maxMemory
configuration:
maxMemoryPolicy: Noeviction
save: "360 100"
appendOnly: "No"
sizingPolicies:
- cores:
min: 1
max: 4
memory:
min: 128Mi
max: 2Gi
step: 128Mi
coreFractions:
- "25%"
- "50%"
- "75%"
- "100%"
- cores:
min: 5
max: 8
memory:
min: 2Gi
max: 8Gi
step: 1Gi
coreFractions:
- "25%"
- "50%"
- "75%"
- "100%"
validations:
- message: "maxMemory should be less then instance.memory.size at least for 10%"
rule: "configuration.maxMemory <= instance.memory.size - instance.memory.size / 10"