Модуль managed-valkey управляет инстансами Valkey (Redis-совместимое хранилище данных в оперативной памяти) в Deckhouse Kubernetes Platform (DKP). Он предоставляет:
- Автоматическое развёртывание — создаёт инстанс Valkey при помощи простой YAML-конфигурации;
- Standalone — поддерживает установку одиночного инстанса;
- Persistent Storage — позволяет сконфигурировать разные варианты хранения данных:
AOF,RDB,AOF+RDB; - Управление конфигурацией — отдельный ресурс ValkeyClass для шаблонизации создания сервиса и гибкой валидации пользовательских параметров;
- Статус — отображает текущее состояние развёрнутого инстанса Valkey.
Подробнее с настройками модуля и примерами его использования можно ознакомиться в документации модуля.
Архитектура модуля
Для упрощения схемы приняты следующие допущения:
- На схеме показано, что контейнеры разных подов взаимодействуют друг с другом напрямую. Фактически они взаимодействуют через соответствующие сервисы Kubernetes (внутренние балансировщики). Названия сервисов не указываются, если они очевидны из контекста. В остальных случаях название сервиса указано над стрелкой.
- Поды могут быть запущены в нескольких репликах, однако на схеме все поды изображены в одной реплике.
Архитектура модуля managed-valkey на уровне 2 модели C4 и его взаимодействие с другими компонентами DKP изображены на следующей диаграмме:
Компоненты модуля
Модуль состоит из следующих компонентов:
-
managed-valkey-operator (Deployment) — оператор Kubernetes, состоящий из одного контейнера manager и выполняющий следующие операции:
-
согласование состояния кастомных ресурсов Valkey во всех пользовательских неймспейсах. Ресурс Valkey определяет настройки инстанса Valkey;
-
создание и управление ресурсами StatefulSet, Secret, ConfigMap и PersistentVolumeClaim, относящимися к инстансу Valkey.
-
-
managed-valkey-webhook (Deployment) — компонент, состоящий из одного контейнера manager.
Компонент выполняет валидацию и мутацию кастомных ресурсов Valkey, а также мутацию кастомных ресурсов ValkeyClass с помощью механизмов Validating Admission Controller и Mutating Admission Controller.
-
d8ms-valkey-<INSTANCE_NAME> (StatefulSet) — компонент выполняет запуск и подготовку инстанса Valkey. Создаётся компонентом managed-valkey-operator.
Состоит из двух контейнеров:
- valkey — основной контейнер, являющийся Open Source-проектом;
- agent — сайдкар-контейнер, выполняющий настройку основного контейнера в соответствии с параметрами в ресурсе Valkey.
Взаимодействия модуля
Модуль взаимодействует с компонентом kube-apiserver, через который:
- управляет кастомными ресурсами Valkey, ValkeyClass и Certificate;
- управляет ресурсами StatefulSet, Secret, ConfigMap и PersistentVolumeClaim.
С модулем взаимодействуют следующие внешние компоненты:
-
kube-apiserver — обрабатывает запросы на валидацию и мутацию кастомных ресурсов Valkey.
-
prometheus-main — собирает метрики компонентов managed-valkey-operator и managed-valkey-webhook.
-
Пользовательские приложения — отправляют запросы к инстансу Valkey.