Модуль managed-valkey управляет инстансами Valkey (Redis-совместимое хранилище данных в оперативной памяти) в Deckhouse Platform (DP). Он предоставляет:

  • Автоматическое развёртывание — создаёт инстанс Valkey при помощи простой YAML-конфигурации;
  • Standalone — поддерживает установку одиночного инстанса;
  • Persistent Storage — позволяет сконфигурировать разные варианты хранения данных: AOF, RDB, AOF+RDB;
  • Управление конфигурацией — отдельный ресурс ValkeyClass для шаблонизации создания сервиса и гибкой валидации пользовательских параметров;
  • Статус — отображает текущее состояние развёрнутого инстанса Valkey.

Подробнее с настройками модуля и примерами его использования можно ознакомиться в документации модуля.

Архитектура модуля

Для упрощения схемы приняты следующие допущения:

  • На схеме показано, что контейнеры разных подов взаимодействуют друг с другом напрямую. Фактически они взаимодействуют через соответствующие сервисы Kubernetes (внутренние балансировщики). Названия сервисов не указываются, если они очевидны из контекста. В остальных случаях название сервиса указано над стрелкой.
  • Поды могут быть запущены в нескольких репликах, однако на схеме все поды изображены в одной реплике.

Архитектура модуля managed-valkey на уровне 2 модели C4 и его взаимодействие с другими компонентами DP изображены на следующей диаграмме:

Архитектура модуля managed-valkey

Компоненты модуля

Модуль состоит из следующих компонентов:

  1. Managed-valkey-operator (Deployment) — оператор Kubernetes, состоящий из одного контейнера manager и выполняющий следующие операции:

    • согласование состояния кастомных ресурсов Valkey во всех пользовательских неймспейсах. Кастомные ресурсы Valkey и ValkeyClass определяют настройки инстанса Valkey;

    • создание и управление кастомным ресурсом Certificate и ресурсами StatefulSet, Secret, ConfigMap и PersistentVolumeClaim, относящимися к инстансу Valkey.

  2. Managed-valkey-webhook (Deployment) — компонент, состоящий из одного контейнера manager.

    Компонент выполняет валидацию и мутацию кастомных ресурсов Valkey, а также мутацию кастомных ресурсов ValkeyClass с помощью механизмов Validating Admission Controller и Mutating Admission Controller.

  3. D8ms-valkey-<INSTANCE_NAME> (StatefulSet) — компонент выполняет запуск и подготовку инстанса Valkey. Создаётся компонентом managed-valkey-operator.

    Состоит из двух контейнеров:

    • valkey — основной контейнер, являющийся Open Source-проектом;
    • agent — сайдкар-контейнер, выполняющий настройку основного контейнера в соответствии с параметрами в ресурсе Valkey.

Взаимодействия модуля

Модуль взаимодействует с компонентом kube-apiserver, через который:

  • управляет кастомными ресурсами Valkey, ValkeyClass и Certificate;
  • управляет ресурсами StatefulSet, Secret, ConfigMap и PersistentVolumeClaim.

С модулем взаимодействуют следующие внешние компоненты:

  1. Kube-apiserver — валидирует и мутирует кастомные ресурсы Valkey, мутирует кастомные ресурсы ValkeyClass.

  2. Prometheus-main — собирает метрики компонентов managed-valkey-operator и managed-valkey-webhook.

  3. Пользовательские приложения — отправляют запросы к инстансу Valkey.

Дополнительные ресурсы