Стадия жизненного цикла модуля: Общедоступная версия

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

v0.8.1

Дата релиза: 2026-10-01

Агент удаляет ресурсы BlockDevice, остающиеся в состоянии Missing дольше настраиваемого срока, расширение планировщика в режиме HA больше не обещает одно и то же свободное место дважды, а неактивные тонкие тома снова активируются.

Ключевые изменения

Изменения в этом релизе:

  • Новая настройка модуля missingBlockDeviceRetentionHours (по умолчанию 24): BlockDevice, устройство которого отсутствует так долго и который не использует ни один LVMVolumeGroup, удаляется, и на узлах с динамически подключаемыми LUN ресурсы Missing больше не копятся бесконечно.
  • При двух репликах sds-common-scheduler-extender (режим HA (high availability, высокая доступность)) резервирования места обслуживает одна выбранная реплика, поэтому двум подам больше не может быть обещано одно и то же свободное место тонкого пула.
  • Тонкий LVMLogicalVolume, деактивированный при активном тонком пуле, агент снова активирует.

Новый функционал

В этом релизе добавлено:

  • Настройка модуля missingBlockDeviceRetentionHours (в часах, от 0 до 8760, по умолчанию 24). BlockDevice, который нельзя использовать, при пропаже устройства не удаляется: ему выставляется condition (условие) Missing, переходящий в True после 10 минут отсутствия устройства. Теперь агент удаляет такой ресурс своего узла, когда Missing остаётся True дольше этого срока, если ни один LVMVolumeGroup не перечисляет его в status.nodes и его status.lvmVolumeGroupName не указывает на существующий LVMVolumeGroup: физический том, пропавший из-под работающей группы томов, остаётся на виду. Если устройство вернётся, ресурс создаётся заново. 0 отключает удаление. Новая метрика sds_node_configurator_block_devices_missing{node,reason} считает оставшиеся ресурсы с Missing=True; каждое удаление агент пишет в лог.
  • В DKP 1.78 и новее роли доступа модуля следуют схеме RBAC capability/scope (возможность/область действия): ClusterRole d8:system-capability:sds-node-configurator:view и d8:system-capability:sds-node-configurator:edit дают доступ только на чтение и полный доступ к BlockDevice, LVMVolumeGroup, LVMVolumeGroupSet, LVMLogicalVolume и LVMLogicalVolumeSnapshot. В версиях ниже 1.78 модуль сохраняет роли d8:manage:permission:module:sds-node-configurator:view и :edit.

Исправления

В этом релизе исправлено:

  • В режиме HA каждая из двух реплик sds-common-scheduler-extender хранила свои резервирования места в памяти, поэтому запросам планирования, на которые отвечали разные реплики, могло быть обещано одно и то же свободное место с переподпиской тонкого пула. Теперь реплики выбирают лидера через Lease (аренду) d8-sds-node-configurator/sds-common-scheduler-extender; запросы фильтрации, оценки и резервирования обслуживает только лидер, вторая реплика пересылает их ему и отвечает 503, пока лидер недоступен.
  • Тонкий LVMLogicalVolume, деактивированный сам по себе (например, командой lvchange -an) при активном тонком пуле, больше никогда не активировался, и том оставался недоступен. Теперь агент выполняет vgchange -ay для его группы томов, как уже делал для толстых томов и тонких пулов. Логические тома с флагом пропуска активации, который модуль никогда не выставляет, по-прежнему остаются неактивными.

Рекомендации по обновлению

Перед обновлением учтите следующее:

  • Удаление ресурсов Missing включено по умолчанию. Сразу после обновления агент удалит каждый BlockDevice, который уже больше 24 часов находится в Missing=True и не используется LVMVolumeGroup. Чтобы сохранить их, до обновления задайте missingBlockDeviceRetentionHours равным 0 или большему значению.
  • В DKP 1.78 и новее ClusterRole d8:manage:permission:module:sds-node-configurator:view и :edit заменяются на d8:system-capability:sds-node-configurator:view и :edit. Привязки, которые ссылаются на старые имена ролей напрямую, нужно перевести на новые.

Документация

Изменения в документации:

  • Русскоязычный справочник BlockDevice теперь описывает status.conditions и его поля.

Зависимости

Обновления зависимостей:

  • LVM2 (lvm, dmsetup на узлах): снимок ветки main → 2.03.42 (changelog)
    • Статические lvm и dmsetup, которые модуль ставит на узлы, теперь берутся из выпуска LVM2 2.03.42. Прежняя сборка закрепляла ревизию, но не переключалась на неё, поэтому на узлы попадал невыпущенный снимок ветки main LVM2.

v0.8.0

Дата релиза: 2026-09-24

Файлы модуля на узле переезжают из /opt/deckhouse/sds в /var/lib/deckhouse/sds, агент перестаёт читать LVM с дисков виртуальных машин, а тонким снимкам больше не нужен модуль ядра dm_snapshot.

Ключевые изменения

Изменения в этом релизе:

  • Дерево модуля на узле переезжает в /var/lib/deckhouse/sds, куда можно писать и на узлах, где /opt доступен только для чтения, а значение fileDevicesDirectory по умолчанию становится /var/lib/deckhouse/sds/file-devices. Существующие записи spec.fileDevices в старом каталоге продолжают работать там же.
  • На узле с виртуальными машинами группы томов, которые вложенный кластер создаёт на своих дисках, больше не превращаются в ресурсы LVMVolumeGroup и BlockDevice кластера-хозяина.
  • LVMLogicalVolumeSnapshot, восстановление из VolumeSnapshot и клоны тонких томов работают на узлах без модуля ядра dm_snapshot.

Улучшения

В этом релизе улучшено:

  • Новые метрики: sds_node_configurator_published_block_devices и sds_node_configurator_published_devices_directory_present показывают, сколько устройств на узле агент не пускает в LVM и нашёл ли он там каталог kubelet с опубликованными блочными томами, а sds_node_configurator_legacy_file_devices_directory_lvgs считает ресурсы LVMVolumeGroup, у которых spec.fileDevices всё ещё указывает на /opt/deckhouse/sds/file-devices; их имена выводятся в лог модуля.

Исправления

В этом релизе исправлено:

  • На узле с виртуальными машинами (DVP) агент читал LVM внутри дисков ВМ: группы томов гостевого кластера появлялись как ресурсы LVMVolumeGroup, а его диски — как ресурсы BlockDevice кластера-хозяина. Теперь команды lvm агента отвергают каждое устройство, которое kubelet опубликовал в под как блочный том, вместе с его разделами и всем, что построено поверх, для любого CSI-драйвера. Ресурсы, созданные так до обновления, выходят из Ready, и их можно удалить; группа томов внутри ВМ при этом не затрагивается.
  • Группа томов с тегом storage.deckhouse.io/lvmVolumeGroupName=<name>, указывающим на LVMVolumeGroup, которого в этом кластере нет, импортировалась как новый ресурс, хотя такой тег пишет только модуль в другом кластере (например, внутри виртуальной машины). Теперь она не импортируется: агент один раз пишет отказ в лог и учитывает его в sds_node_configurator_lvm_volume_group_import_refused_total. Группа томов, переданная модулю тегом storage.deckhouse.io/enabled=true без тега с именем, импортируется как прежде, как и группа на файлах-подложках.
  • Создание LVMLogicalVolumeSnapshot, восстановление из VolumeSnapshot и клонирование тонкого LVMLogicalVolume падали на узлах без загруженного модуля ядра dm_snapshot с ошибкой snapshot: Required device-mapper target(s) not detected in your kernel. Теперь тонкие снимки создаются без этого модуля. Агент по-прежнему загружает dm_snapshot на каждом узле с тонким выделением, а узел, где его нет, больше не мешает агенту запуститься.
  • Встроенный lvm не мог сам загрузить недостающий модуль ядра device-mapper и вместо этого сообщал, что цель не найдена. Теперь он вызывает /sbin/modprobe узла.

Несовместимые изменения

Изменения, влияющие на обратную совместимость:

  • Модуль больше не устанавливает lvm и dmsetup в /opt/deckhouse/sds/bin и удаляет старые копии с узлов. Скрипты вне модуля, которые запускали их оттуда, должны перейти на /var/lib/deckhouse/sds/bin/.

Рекомендации по обновлению

Перед обновлением учтите следующее:

  • Руками делать ничего не нужно. После перезапуска пода агента на узле следующий прогон bashible удаляет файлы, которые модуль раньше устанавливал в /opt/deckhouse/sds; файлы других модулей и файлы-подложки там остаются на месте. Скрипты, которые запускали /opt/deckhouse/sds/bin/lvm или dmsetup, должны перейти на /var/lib/deckhouse/sds/bin/.
  • Поле spec.fileDevices[].directory неизменяемое, поэтому записи, созданные со старым значением по умолчанию /opt/deckhouse/sds/file-devices, продолжают на него указывать, и агент продолжает его принимать. Не переносите их файлы-подложки руками: как перевести запись в новый каталог без остановки, описано в FAQ. Новые записи создавайте в новом каталоге по умолчанию. Значение fileDevicesDirectory, явно заданное в настройках модуля, остаётся как есть.

Документация

Изменения в документации:

  • FAQ: раздел о файлах-подложках, созданных до переноса базового каталога, с порядком перевода записи в новый каталог через pvmove.

v0.7.5

Дата релиза: 2026-09-14

Scheduler extender теперь работает на узлах control plane — рядом с kube-scheduler, который к нему обращается.

Ключевые изменения

Изменения в этом релизе:

  • Под sds-common-scheduler-extender размещается на узлах control plane, а не на системных, и терпит их taint (метку-ограничение, запрещающую планирование обычных подов).

Исправления

В этом релизе исправлено:

  • Deployment sds-common-scheduler-extender запрашивал системные узлы и нёс tolerations стратегии system, которая не терпит ни taint узлов control plane, ни пользовательские, поэтому под не мог быть размещён на узле control plane. Теперь он выбирает master-узлы — с откатом на системные в кластерах, где роль master не объявлена, — и терпит любой узел, что ставит его рядом с kube-scheduler, который вызывает его при каждой попытке планирования в модулях, зарегистрировавших расширение.

v0.7.4

Дата релиза: 2026-09-11

Метрики контроллера и scheduler extender теперь публикуются через kube-rbac-proxy, а LVMLogicalVolume с размером в процентах больше не отклоняется при создании и не остаётся в Failed после того, как достиг запрошенного размера.

Ключевые изменения

Изменения в этом релизе:

  • Эндпоинты /metrics контроллера и scheduler extender больше недоступны без аутентификации: оба слушают на 127.0.0.1, а публикует их kube-rbac-proxy, поэтому для сбора нужно право get на deployments/prometheus-metrics.
  • LVMLogicalVolume с размером в процентах — 100%FREE целой группы томов, как их выдаёт sds-elastic по одной на OSD, — больше не отклоняется при создании и не остаётся в Failed с unable to extend LV, err: not enough space.
  • Скан LVM, дошедший до multipath-карты, у которой не осталось путей, больше не блокирует агент: узел продолжает сообщать о своих блочных устройствах, а его RWO-тома могут переехать на другой узел.

Улучшения

В этом релизе улучшено:

  • Метрики scheduler extender собираются впервые: порт всегда был открыт менеджером, но никто его не объявлял и не опрашивал.
  • utils_commands_execution_count_total и utils_commands_errors_count_total наконец экспортируются. Оба инкрементировались примерно в сорока местах агента и контроллера, но не были зарегистрированы, поэтому подсчитанное никуда не попадало.
  • Все бинарники модуля пишут логи через один общий логгер. Имя компонента, выдавшего запись, теперь лежит в поле записи (logger), а не в виде префикса в тексте сообщения.

Исправления

В этом релизе исправлено:

  • Размер LVMLogicalVolume, заданный процентом в spec.size, вычисляется от ёмкости, которую LVM сообщает как сумму устройств, а она не выровнена по extent’ам. Округление запроса вверх давало на один extent больше этой ёмкости, из-за чего запрос 100% группы томов считался в неё не влезающим: создание отклонялось, а extender переводил в Failed том, уже занимающий всё место. Теперь процентные размеры округляются вниз, к границе extent’а.
  • LVMLogicalVolume, помеченный Failed из-за того, что свободное место группы ещё не догнало только что созданный LV, оставался в Failed до конца жизни: последующие проходы завершались раньше, увидев том уже нужного размера. Теперь такой том переходит в Created.
  • Агент мог сообщить block device size is invalid для исправного устройства: переменная для результата ioctl лежала на стеке, и рост стека во время вызова перемещал её, поэтому размер записывался по старому адресу и оставался нулевым.
  • Скан LVM, дошедший до multipath-карты без путей, блокировался в ядре вместо отказа, и каждый зависший скан держал карту открытой. Из-за этого агент останавливался, multipath -f не мог удалить карту, а том оставался в Node.status.volumesInUse и не подключался на другом узле. Теперь такие карты — device-mapper с UUID mpath- и без slaves — отбрасываются в global_filter каждой команды LVM.

Обновления безопасности

Обновления безопасности в этом релизе:

  • Закрыт анонимный доступ к метрикам контроллера и scheduler extender. Раньше эндпоинты никого не аутентифицировали, были доступны из любого пода кластера, а ServiceMonitor отправлял на них токен ServiceAccount’а Prometheus по обычному HTTP.
  • golang.org/x/crypto, используемый хуками модуля, обновлён до 0.56.0 — это закрывает CVE-2026-56854 (критическая, обход аутентификации в x/crypto/ssh), CVE-2026-56855 и CVE-2026-78662.

Рекомендации по обновлению

Перед обновлением учтите следующее:

  • Для метрик руками делать нечего: поставляемый с модулем ServiceMonitor уже опрашивает прокси по HTTPS с токеном. Перенастроить придётся только собственный сборщик, который читал метрики контроллера напрямую по HTTP: его нужно направить на порт прокси и выдать ему право get на deployments/prometheus-metrics.
  • Формат записей лога изменился, поэтому фильтр, искавший имя компонента внутри текста сообщения, нужно перевести на поле logger.

v0.7.3

  • Добавлено условие Missing у BlockDevice: исчезнувшее, но занятое устройство (например, входящее в LVM Physical Volume) больше не остаётся навсегда с устаревшим status.path. Сначала выставляется Unknown, True — только если устройство отсутствует непрерывно 10 минут, поэтому мигающий путь iSCSI, восстановившийся сам, не помечается. Условие снимается, как только устройство находится снова; сам объект не удаляется, чтобы не рвать ссылки из LVMVolumeGroup и LVMLogicalVolume
  • Исправление: агент больше не падает на закэшированном логическом томе без атрибутов LVM
  • Исправление: потолки VPA для агента, scheduler-extender и контроллера подняты до измеренного потребления
  • Исправление: релизный образ больше не собирается из кэша с устаревшим changelog.yaml — зависимости git-маппинга привязаны к стадии install, на которой файл и копируется
  • Обновление базовых образов до v2.1.3 и lib-helm до 1.72.14
  • Документация: описаны серийные номера виртуальных дисков
  • Внутренние изменения в сборке модуля

v0.7.2

  • Исправление: контроллеру выданы права на запись событий (create и patch) — раньше запись события отклонялась по правам
  • Фиксы CVE
  • Внутренние изменения в сборке: обновлён CI, в релизный образ добавлены crds, docs и openapi

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