Valkey

Namespaced ресурс, который позволяет создавать конечную конфигурацию и является точкой правды состояния для конкретного развернутого сервиса valkey.

ValkeyClassName

Имя класса, с которым будет связан конкретный ресурс.
Без созданного ValkeyClass разворачивание сервиса невозможно.

spec:
  valkeyClassName: default

Instance

Секция, которая описывает ресурсы создаваемого сервиса.
Должна пройти валидацию по sizingPolicy соответствующего класса:

spec:
  instance:
    memory:
      size: 1Gi
    cpu:
      cores: 1
      coreFraction: 50
    persistentVolumeClaim:
      size: 1Gi
      storageClassName: default

Configuration

Секция, описывающая конфигурацию сервиса valkey.
Должна пройти валидацию по overridableConfiguration и validations соответствующего класса:

spec:
  configuration:
    maxMemory: "512Mi"
    maxMemoryPolicy: Volatile-lfu

Поддерживаемые версии Valkey

Единственная поддерживаемая версия Valkey 9.0.1

Наши образы для запуска Valkey-контейнеров основаны на distroless-архитектуре.

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
---

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

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

Без постоянного хранилища данных.

  1. Создайте namespace с именем valkey.
  2. Создайте ресурс Valkey
kubectl apply -f managed-services_v1alpha1_valkey.yaml -n valkey
apiVersion: 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"
  1. Подождите, пока кластер будет создан все conditions будет в True:
  kubectl get valkey valkey-sample -n valkey -o wide -w
  1. Для подключения используйте клиент redis-cli и сервис d8ms-vlk-valkey-sample
  redis-cli -h d8ms-vlk-valkey-sample -p 6379

С использованием AOF хранилища

  1. Создайте namespace с именем valkey.
  2. Создайте ресурс Valkey
kubectl apply -f managed-services_v1alpha1_valkey.yaml -n valkey
apiVersion: 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"
  1. Подождите, пока кластер будет создан все conditions будет в True:
  kubectl get valkey valkey-sample -n valkey -o wide -w
  1. Для подключения используйте клиент redis-cli и сервис d8ms-vlk-valkey-sample
  redis-cli -h d8ms-vlk-valkey-sample -p 6379

С использованием RDB хранилища

  1. Создайте namespace с именем valkey.
  2. Создайте ресурс Valkey
kubectl apply -f managed-services_v1alpha1_valkey.yaml -n valkey
apiVersion: 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"
  1. Подождите, пока кластер будет создан все conditions будет в True:
  kubectl get valkey valkey-sample -n valkey -o wide -w
  1. Для подключения используйте клиент redis-cli и сервис d8ms-vlk-valkey-sample
  redis-cli -h d8ms-vlk-valkey-sample -p 6379