Стадия жизненного цикла модуляGeneral Availability

У модуля есть требования для установки

v0.7.1

  • Исправление: одно «осиротевшее» устройство device-mapper без диска больше не останавливает обнаружение BlockDevice на всём узле — раньше из-за него агент не создавал ни одного BlockDevice на ноде, включая исправные диски
  • Исправление: LVMVolumeGroup с единственным PV, чьё имя не удалось определить сразу, больше не зависает в Pending навсегда — устранены пустая публикация status.nodes и отсутствие повторной попытки при отсутствии udev-событий
  • Исправление: агент подставляет унаследованный от родительского устройства серийный номер, если прямое чтение серийника не удалось (участники multipath, crypt/dm-устройства) — раньше такие устройства пропускались при обнаружении BlockDevice
  • Опциональные ресурсы (VerticalPodAutoscaler, PodMonitor/ServiceMonitor) теперь включаются по факту наличия CRD в API, а не по списку enabledModules
  • Документация: исправлено дублирование ключа description в русских CRD LVMVolumeGroup, ломавшее docs-builder, добавлено недостающее описание status.extentSize и восстановлено описание blockDevice

v0.7.0

  • Исправление: агент больше не принимает за свои LVM-структуры внутри блочных устройств, отданных виртуальным машинам, — в LVM global_filter возвращено исключение /dev/loop. Устранены вызванные этим отказы LVMVolumeGroup с причинами CacheEmpty и ScanFailed — имя VG больше не считается идентификатором, а предупреждение LVM о дубликате чужого имени не приписывается нашей группе
  • Добавлена поддержка LVM на файлах: поле spec.fileDevices у LVMVolumeGroup и LVMVolumeGroupSet. Агент создаёт файл, подключает его как loop-устройство и использует как PV, что даёт LVM-хранилище на узле без свободного диска; поле blockDeviceSelector стало необязательным
  • Планировщик (scheduler-extender) учитывает PVC, перечисленные в аннотации пода extra-pvcs
  • LVMLogicalVolume, LVMLogicalVolumeSnapshot и LVMVolumeGroupSet публикуют status.conditions; у BlockDevice появилось условие Consumable, объясняющее, почему устройство нельзя использовать; обработка условий LVMVolumeGroup приведена к общему виду
  • Исправление: том, созданный из снапшота или клонированием, расширяется до запрошенного размера — раньше PVC оставался в Pending в ожидании размера, который никогда не появлялся
  • Исправление: тонкий пул, заданный процентом от размера VG, больше не застревает в VGConfigurationApplied=False из-за округления LVM на один экстент
  • Исправление: холостой вызов lvextend распознаётся как безобидный и на LVM 2.03.16 — иначе LVMVolumeGroup оставался в NotReady
  • Исправление: при взятии существующей VG под управление blockDeviceSelector больше не остаётся пустым
  • Исправление: после pvcreate и vgcreate агент вызывает udevadm, чтобы обновить базу udev
  • Исправление: при включённом storage-foundation агент загружает модуль ядра dm_snapshot
  • Удалён устаревший CRD LvmVolumeGroupBackup, оставшийся от разовой миграции: новый хук снимает финализаторы с остатков и удаляет сам CRD
  • Добавлен экспериментальный режим обнаружения блочных устройств через netlink, включаемый флагом ENABLE_NETLINK_BLOCK_DEVICE_DISCOVERY
  • Обновление базовых образов до v1.3.25, Go 1.26.5 и lib-helm до 1.72.13
  • Устранены уязвимости в golang.org/x/net, golang.org/x/sys и golang.org/x/crypto
  • Внутренние изменения в сборке модуля и CI, значительно расширен набор e2e-тестов

v0.6.10

  • Из LVM global_filter удалено общее accept-правило, которое приводило к сканированию нестандартных путей (/dev/disk/by-diskseq/*) и дублированию имён VG

v0.6.9

  • Агент теперь игнорирует «чужие» блочные устройства (rbd, drbd, nbd, loop) при сканировании LVM
  • Исправлена обработка дублирующихся имён VG: статус LVMVolumeGroup больше не повреждается
  • Устранена блокировка запуска пода агента; добавлены таймауты на LVM-команды
  • Улучшена стабильность имён устаревших блочных устройств: сопоставление по серийному номеру или WWN предотвращает пересоздание при смене имени
  • Исправлена валидация селектора BlockDevice: оператор In теперь единственный допустимый

v0.6.8

  • Исправлена гонка в scheduler-extender при пустом PVC.Status.Phase: решение о привязке PVC теперь принимается по Spec.VolumeName, узлы без подходящей LVMVolumeGroup всегда отбраковываются
  • Agent теперь планируется также на узлах данных sds-elastic
  • Обновление базовых образов и lib-helm до 1.72.0

v0.6.7

  • Обновление базовых образов, Go 1.25.10 и lib-helm 1.71.12
  • Внутренние изменения в структуре и сборке модуля

v0.6.6

  • Внутренние изменения в структуре и сборке модуля

v0.6.5

  • Обновление базовых образов, Go 1.25.10 и lib-helm 1.71.11
  • Внутренние изменения в сборку модуля

v0.6.4

  • Исправления в структуру модуля

v0.6.3

  • scheduler-extender: PVC с отсутствующим StorageClass больше не блокируют планирование пода

v0.6.2

  • Изменения в CI: DistroPackagesProxy и env прокси в werf, доработки CVE-сканов (role_name, checkout)
  • Добавлены кластерные роли user-authz в шаблонах

v0.6.1

  • Добавлено определение точек монтирования через парсер mountinfo в агенте
  • Добавлен учёт locality реплик в scheduler-extender для replicated-томов
  • Исправлены гонки и зацикливание реконсиляции в контроллерах LVG/LLV
  • Учтён ExtentSize при сравнении в discoverer и добавлен fallback 4Mi в контроллере LLV
  • Убрана ложная пометка LLV как Failed при actualSize > spec.size
  • Исправлено двойное вычитание Failed LLV с actualSize при подсчёте свободного места в scheduler-extender
  • Обновление базовых образов и lib-helm

v0.6.0

  • Фиксы CVE
  • Переход на общий scheduler для SDS
  • Замена фиксированной resize delta на автоматическое определение дельты размера LVM раздела
  • Автоактивация LVM разделов при операциях с томами

v0.5.16

  • Добавлен хук для очистки ресурсов при выключении модуля
  • Убрана настройка enableThinProvisioning, предполагаем, что thin provisioning всегда включен
  • Обновление module-sdk для фикса CVE, обновление golang

v0.5.15

  • Добавлены метрики для LVM томов
  • Обновление module-sdk для фикса CVE
  • Рефакторинг манифестов

v0.5.14

  • Обновлены версии базовых образов и lib-helm
  • Установлено значение по умолчанию для enableThinProvisioning в true
  • Улучшены документация
  • Исправления в манифестах
  • Добавлена поддержка HA mode

v0.5.13

  • Обновлена версия базовых образов

v0.5.12

  • Обновлена версия Go до 1.24.9
  • Обновлена lib-helm до deckhouse_lib_helm-1.64.1
  • Обновлены документации

v0.5.11

  • Исправлена очистка томов в некоторых ОС

v0.5.10

  • Удалены requirements к Python

v0.5.9

  • Исправлена ошибка с инактивированными логическими томами

v0.5.8

  • Добавлены файлы release notes

v0.5.7

  • Исправлена ошибка при установке модуля на нодах с containerd v2

v0.5.6

  • Добавлена дополнительные монтирования для поддержки containerd v2

v0.5.5

  • Фиксы CVE

v0.5.4

  • Фиксы CVE
  • Внутренние изменения для поддержки containerd v2

v0.5.3

  • Поправлен баг, препятствующий обновлению статусов LVG при наличии в кластере missed/notready нод

v0.5.2

  • Убрана поддержка модуля sds-drbd
  • Добавлено сокрытие устройств csi-scsi-generic

v0.5.1

  • Технический релиз, рефакторинг модуля

v0.5.0

  • Добавлена возможность затирания данных в enterprise версиях
  • Множественные правки в документацию

v0.4.6

  • Технический релиз. Убран статус “Превью” в документации

v0.4.5

  • Многочисленные правки в документации
  • Добавлены LVMVolumeGroupSet и LVMLogicalVolumeSnapshots
  • Исправлена работа с labels и finalizers в ряде внутренних объектов
  • Добавлена загрузка dm_snapshot при необходимости

v0.4.3

  • Устранено падение скрипта миграции BlockDevices при отсутствии финалайзеров на ресурсах

v0.4.2

  • Фикс для поддержки серийных номеров BlockDevice длиной до 63 символов

v0.4.1

  • Исправлена потенциальная проблема с отсутствующими labels в хуке миграции LvmVolumeGroup->LVMVolumeGroup
  • Добавлен контроллер, отслеживающий labels на ресурсах BlockDevice для оперативной актуализации ресурсов LVMVolumeGroup

v0.4.0

  • Ресурсы LvmVolumeGroups будут мигированы в LVMVolumeGroups
  • Точные списки BlockDevices в LVMVolumeGroups будут мигрированы в селекторы
  • Множественные правки в контроллеры и документации

v0.3.2

  • Фикс в работе sds-health-watcher-controller, из-за которого он мог некорректно обрабатывать статус некоторых нод

v0.3.1

  • Обновление golang до актуальной 1.22.6 для закрытия известных уязвимостей

v0.3.0

  • Добавлена настройка thin provisioning в mc, для автоматической подгрузки модуля dm_thin_pool
  • Образы переведены на distroless
  • Добавлены labels к сущности BlockDevices (для будущего использования в BlockDevicesSelectors)
  • Множественные правки багов и документации

v0.2.5

  • Добавлены метрики и их сбор в Prometheus, порты хелсчеков переведены на правильные

v0.2.4

  • Добавлено авторасширение для thin pools LVM volume groups и LVM logical volumes

v0.2.3

  • Добавлен внутренний кэш для ускорения работы
  • Добавлены health и readiness проверки в контроллер
  • Улучшено отображение ресурсов в cli
  • Теперь LVM volume group удаляются при удалении соответствующего ресурса k8s, а не при добавлении аннотации
  • Добавлено указание размера LVM volume group в процентах
  • Добавлена поддержка AllocationLimit в LVM volume group
  • Добавлена поддержка непрерывных (contiguous) томов в sds-local-volume

v0.2.1

  • Добавили поддержку multipath устройств

v0.2.0

  • Добавлен LVMLogicalVolumeWatcher CRDs
  • Добавлены дополнительные тестовые случаи
  • Добавлена функция AreSizesEqualWithinDelta
  • Исправлен resize для thinPools
  • Добавлены тесты к LvmLogicalVolumeWatcher контроллеру
  • Исправлено именование в LVMLogicalVolume
  • Добавлена node affinity
  • Улучшена обработка LVMLogicalVolume: логирование, отображение размера и обработка событий
  • Статически скомпонованные nsenter, lsblk и lvm утилиты
  • Исправлено последовательное обнаружение путем переключения на динамический lsblk
  • Переписан bin-copier скрипт на Golang
  • Перемещены lsblk и его библиотеки в образ агента
  • Добавлено поле age
  • Реализована фильтрация stderr для команд LVM
  • Добавлены bench-тесты для LVMLogicalVolume контроллера
  • Изменен тип размера со string на quantity
  • Добавлена параллельная обработка в lvm_logical_volume_watcher и валидация размера VG в lvm_volume_group_watcher