Стадия жизненного цикла модуля: Предварительная версия (preview)
У модуля есть требования для установки
Valkey
Namespaced ресурс, который позволяет создавать конечную конфигурацию и является точкой правды состояния для конкретного развернутого сервиса valkey.
ValkeyClassName
Имя класса, с которым будет связан конкретный ресурс.
Без созданного ValkeyClass разворачивание сервиса невозможно.
spec:
valkeyClassName: defaultInstance
Секция, которая описывает ресурсы создаваемого сервиса.
Должна пройти валидацию по sizingPolicy соответствующего класса:
spec:
instance:
memory:
size: 1Gi
cpu:
cores: 1
coreFraction: 50
persistentVolumeClaim:
size: 1Gi
storageClassName: defaultConfiguration
Секция, описывающая конфигурацию сервиса valkey.
Должна пройти валидацию по overridableConfiguration и validations соответствующего класса:
spec:
configuration:
maxMemory: "512Mi"
maxMemoryPolicy: Volatile-lfuПоддерживаемые версии Valkey
Единственная поддерживаемая версия Valkey 9.0.1
Наши образы для запуска Valkey-контейнеров основаны на distroless-архитектуре.
Пользователи и роли
Пользователи Valkey описываются в секции spec.users. Для каждого пользователя обязательны имя (name) и роль (role). Пароль задаётся ровно одним из способов:
hashedPassword— SHA-256 от пароля в hex-формате, в нижнем регистре;secretRef— ссылка на существующий Secret в том же неймспейсе, где пароль хранится в открытом виде;storeCredsToSecret— оператор сам генерирует пароль и сохраняет Secret с указанным именем в том же неймспейсе.
Роли
| Роль | Права | Назначение |
|---|---|---|
ReadOnly |
Чтение всех ключей и каналов. Команда KEYS запрещена. |
Сервисы, которые только читают данные. |
ReadWrite |
Все команды, кроме групп @admin и @dangerous. Разрешена команда INFO. |
Приложения. |
Monitoring |
Нет доступа к ключам и каналам. Разрешены INFO, CONFIG GET, CLIENT LIST, CLIENT INFO, SLOWLOG, LATENCY, MEMORY, CLUSTER INFO. |
Сбор метрик. |
Особенности
- Если пароль пользователя не удаётся получить (например, Secret из
secretRefне существует), пользователь пропускается, но сервис продолжает работать. После устранения проблемы пользователь будет создан автоматически. - При смене пароля активные сессии пользователя разрываются.
- Secret, созданный через
storeCredsToSecret, нельзя редактировать вручную. Чтобы сгенерировать новый пароль, удалите Secret — оператор создаст его заново.
Внимание. Встроенный пользователь
defaultпока остаётся доступным без пароля для обратной совместимости. В одной из следующих версий он будет закрыт. Рекомендуем заранее перевести клиентов на пользователей изspec.users.
spec:
users:
- name: app
role: ReadWrite
storeCredsToSecret: app-valkey-creds
- name: reader
role: ReadOnly
secretRef:
name: reader-password
key: password
- name: exporter
role: Monitoring
hashedPassword: <sha256-hex-пароля>Cтатус
Статус сервиса Managed Valkey отражается в ресурсе Valkey.
Структура Conditions однозначно показывает текущий статус сервиса
Значимые типы:
LastValidConfigurationApplied- Агрегирующий тип, который показывает, была ли применена успешно последняя валидная конфигурация хотя бы раз.ConfigurationValid- показывает прошла ли что конфигурация все валидации связанногоValkeyClass.ScaledToLastValidConfiguration- показывает, соответствует ли количество работающих реплик заданной конфигурации.Available- показывает, работает ли master реплика сервиса и принимает подключения.UsersSynced- показывает, все ли пользователи были синхронизированы и приведены к описанному состоянию.DatabasesSynced- показывает, все ли логические базы были синхронизированы и приведены к описанному состоянию.
conditions:
- lastTransitionTime: '2025-09-22T23:20:36Z'
observedGeneration: 2
status: 'True'
type: Available
- lastTransitionTime: '2025-09-22T14:38:04Z'
observedGeneration: 2
status: 'True'
type: ConfigurationValid
- lastTransitionTime: '2025-09-22T14:38:06Z'
observedGeneration: 2
status: 'True'
type: DatabasesSynced
- lastTransitionTime: '2025-09-22T14:38:47Z'
observedGeneration: 2
status: 'True'
type: LastValidConfigurationApplied
- lastTransitionTime: '2025-09-22T23:20:36Z'
observedGeneration: 2
status: 'True'
type: ScaledToLastValidConfiguration
- lastTransitionTime: '2025-09-22T14:38:05Z'
observedGeneration: 2
status: 'True'
type: UsersSyncedСтатус False говорит о проблеме на том или ином этапе либо незавершенной синхронизации состояния.
Для такого состояния будет указан reason и message с описанием.
---
- lastTransitionTime: '2025-09-23T14:53:33Z'
message: Syncing
observedGeneration: 1
reason: Syncing
status: 'False'
type: LastValidConfigurationApplied
- lastTransitionTime: '2025-09-23T14:54:58Z'
message: Not all the instances are running still waiting for 1 to become ready
observedGeneration: 1
reason: ScalingInProgress
status: 'False'
type: ScaledToLastValidConfiguration
---Примеры использования
Базовое использование
Без постоянного хранилища данных.
- Создайте namespace с именем
valkey. - Создайте ресурс
Valkey
kubectl apply -f managed-services_v1alpha1_valkey.yaml -n valkeyapiVersion: managed-services.deckhouse.io/v1alpha1
kind: Valkey
metadata:
name: valkey-sample
spec:
valkeyClassName: default
configuration:
maxMemory: "256Mi"
maxMemoryPolicy: Volatile-lfu
save: ""
appendOnly: "No"
instance:
memory:
size: "512Mi"
cpu:
cores: 1
coreFraction: "25%"
persistentVolumeClaim:
size: "1Gi"- Подождите, пока кластер будет создан все conditions будет в
True:
kubectl get valkey valkey-sample -n valkey -o wide -w- Для подключения используйте клиент
redis-cliи сервисd8ms-vlk-valkey-sample
redis-cli -h d8ms-vlk-valkey-sample -p 6379С использованием AOF хранилища
- Создайте namespace с именем
valkey. - Создайте ресурс
Valkey
kubectl apply -f managed-services_v1alpha1_valkey.yaml -n valkeyapiVersion: managed-services.deckhouse.io/v1alpha1
kind: Valkey
metadata:
name: valkey-sample
spec:
valkeyClassName: default
configuration:
maxMemory: "256Mi"
maxMemoryPolicy: Volatile-lfu
save: ""
appendOnly: "Yes"
instance:
memory:
size: "512Mi"
cpu:
cores: 1
coreFraction: "50%"
persistentVolumeClaim:
size: "1Gi"- Подождите, пока кластер будет создан все conditions будет в
True:
kubectl get valkey valkey-sample -n valkey -o wide -w- Для подключения используйте клиент
redis-cliи сервисd8ms-vlk-valkey-sample
redis-cli -h d8ms-vlk-valkey-sample -p 6379С использованием RDB хранилища
- Создайте namespace с именем
valkey. - Создайте ресурс
Valkey
kubectl apply -f managed-services_v1alpha1_valkey.yaml -n valkeyapiVersion: managed-services.deckhouse.io/v1alpha1
kind: Valkey
metadata:
name: valkey-sample
spec:
valkeyClassName: default
configuration:
maxMemory: "256Mi"
maxMemoryPolicy: Volatile-ttl
save: "60 5"
appendOnly: "No"
instance:
memory:
size: "512Mi"
cpu:
cores: 1
coreFraction: "50%"
persistentVolumeClaim:
size: "1Gi"- Подождите, пока кластер будет создан все conditions будет в
True:
kubectl get valkey valkey-sample -n valkey -o wide -w- Для подключения используйте клиент
redis-cliи сервисd8ms-vlk-valkey-sample
redis-cli -h d8ms-vlk-valkey-sample -p 6379