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

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

v0.4.17

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

Модуль по умолчанию пишет логи на уровне INFO вместо DEBUG, поэтому установка, в которой уровень не выбирали, перестаёт получать отладочный вывод от компонентов CSI.

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

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

  • Значение logLevel по умолчанию теперь INFO, а не DEBUG. Там, где уровень не задавали в конфигурации модуля, CSI-контроллер и узловой плагин после обновления становятся заметно тише; вернуть прежнюю подробность можно, указав logLevel: DEBUG.

Улучшения

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

  • Значение logLevel в конфигурации модуля по умолчанию теперь INFO. Эта настройка задаёт LOG_LEVEL CSI-контроллера и узлового плагина csi-node, поэтому прежний умолчательный DEBUG означал, что каждая установка, где настройку не трогали, держала весь слой данных на отладочной подробности и платила за это объёмом логов. Явно указанный в ModuleConfig logLevel соблюдается ровно как раньше, каким бы он ни был.

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

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

  • В конфигурации модуля делать ничего не нужно. Там, где logLevel не задан, компоненты поднимутся на уровне INFO по мере раскатки подов при обновлении; там, где задан, уровень останется прежним. Чтобы сохранить прежнее поведение, укажите logLevel: DEBUG явно.

v0.4.16

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

LocalStorageClass умеет резервировать долю файловой системы под суперпользователя, исправлена взаимная блокировка csi-node, из-за которой отдельные узлы не могли подключить том, а сам релиз описывается разделами и на двух языках.

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

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

  • LocalStorageClass умеет запросить долю файловой системы под суперпользователя — классический резерв ext4 — аннотацией storage.deckhouse.io/ext4-reserved-percent. Без такого запроса тома, как и раньше, форматируются без резерва.
  • Перезапуск node-driver-registrar больше не заклинивает узловой плагин. Из-за этой взаимной блокировки один-два узла кластера оставались без драйвера модуля в своём CSINode и не могли подключить том, пока соседние узлы работали нормально.
  • Релиз описывается разделами — краткое описание, ключевые изменения, новый функционал, улучшения, исправления — по-английски и по-русски, и консоль показывает описание на языке читателя.

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

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

  • Аннотация storage.deckhouse.io/ext4-reserved-percent на LocalStorageClass задаёт долю файловой системы, оставляемую суперпользователю: целое число процентов от 0 до 50, по умолчанию 0. Значение идёт через parameters управляемого StorageClass и контекст тома CSI до NodeStageVolume, потому что CSI-драйвер не видит аннотаций StorageClass, и там его применяет tune2fs. Затрагивается только та файловая система, которую этот же вызов и создал: повторная стадия тома никогда не перезаписывает суперблок файловой системы, на которой уже есть данные, поэтому том сохраняет тот резерв, с которым был создан. Резерв работает только для семейства ext — при fsType: xfs аннотация игнорируется, и валидирующий webhook сообщает об этом предупреждением, — а некорректное значение этот же webhook отклоняет сразу, вместо того чтобы ронять каждый том класса на стадии подключения. Изменение аннотации заставляет контроллер пересоздать StorageClass, так как parameters существующего StorageClass в Kubernetes неизменяемы; существующие тома и PVC при этом не затрагиваются.

Улучшения

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

  • Release notes пишутся по локалям в .release-notes/<тег>.yaml и <тег>.ru.yaml с разделами summary, highlights, new_features, improvements, fixes, security, breaking, upgrade_notes, known_issues, docs и dependencies. В кластер попадают обе локали; релизы, выпущенные до этого, остаются в прежнем плоском формате и отображаются на той же странице точно так же, как раньше.

Исправления

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

  • Перезапуск node-driver-registrar больше не уносит с собой CSI-драйвер. Проба liveness у csi-node смотрела на порт, который отдаёт регистратор, но была прикреплена к контейнеру драйвера, и они вставали в клинч: регистратор по своей логике завершается при неудачной регистрации, вместе с ним исчезает порт, проба убивает драйвер, пропадает сокет CSI, и перезапущенный регистратор до него уже не дотягивается. Узел поднимался с заклиненным узловым плагином — десяток перезапусков и отсутствие драйвера в его CSINode, то есть подключить том на таком узле было нельзя, — пока другие узлы того же кластера работали нормально. Теперь проба находится на том контейнере, который её обслуживает.
  • Релизный тег без release notes публиковал пустой changelog.yaml, оставляя ModuleRelease.spec.changelog пустым при зелёной сборке. Теперь такой тег роняет сборку.

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

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

  • В конфигурации модуля делать ничего не нужно. Узел, чей под csi-node застрял во взаимной блокировке при регистрации, восстановится сам по мере раскатки исправленного пода DaemonSet — удалять поды руками не требуется.

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

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

  • Появился раздел FAQ о доле тома, оставляемой суперпользователю: аннотация, диапазон значений, то, что резерв действует только на тома, созданные после этого, и то, что при fsType: xfs он игнорируется.

v0.4.15

  • Исправление: релизный образ больше не собирается из кэша с устаревшим changelog.yaml — зависимости git-маппинга привязаны к стадии install, на которой файл и копируется
  • Обновление базовых образов до v2.1.4 и lib-helm до 1.72.14
  • Внутренние изменения в сборке модуля

v0.4.14

  • Исправление: контроллеру выданы права patch на events вместо list — повторная запись события больше не отклоняется по правам
  • Опциональные ресурсы включаются по наличию CRD в API, а не по списку включённых модулей — проверки переведены на helm_lib_api_version_exists
  • Фиксы CVE
  • Внутренние изменения в сборке: обновлён CI, в релизный образ добавлены crds, docs и openapi

v0.4.13

  • Исправление: LVMLogicalVolume и LVMLogicalVolumeSnapshot, оставшиеся после удаления PersistentVolume со StorageClass с reclaimPolicy Retain, больше не остаются навсегда — добавлен сборщик, снимающий финализатор модуля с ресурсов, удаление которых уже запрошено и на которые никто не ссылается. Раньше место в группе томов оставалось занятым, команда удаления LVMLogicalVolume не завершалась, и финализатор приходилось снимать вручную
  • Добавлены метрики по логическим томам и по томам, пережившим свой PersistentVolume, пять правил алертинга и дашборд «SDS Local Volume»; описан порядок ручного освобождения места при reclaimPolicy Retain
  • LocalStorageClass публикует status.conditions и status.observedGeneration
  • Исправление: сообщение условия обрезается до допустимой схемой длины
  • Обновление базовых образов до v1.3.25 и lib-helm до 1.72.13

v0.4.12

  • Модуль snapshot-controller больше не обязательная зависимость: VolumeSnapshotClass создаётся только при наличии API snapshot.storage.k8s.io
  • Добавлены метрики контроллера и CSI-драйвера (ранее модуль не экспортировал ничего), логирование переведено на общие библиотеки Deckhouse
  • Исправление: размер тома при обычном создании выравнивается по границе экстента LVM, ёмкость тома и restoreSize снапшота сообщаются по фактическому размеру LV — ранее запрос на 35Mi давал LV в 36Mi, описанный как 35Mi
  • Исправление: восстановление снапшота или клонирование в StorageClass типа Thick теперь отклоняется — ранее получался Bound PVC без данных
  • Исправление: проверка свободного места для Thick выполняется по выровненному размеру, ошибка выбора узла с максимумом свободного места больше не игнорируется
  • Обновление базовых образов и lib-helm до 1.72.12
  • Устранена уязвимость в gRPC (GHSA-hrxh-6v49-42gf)
  • Внутренние изменения в сборке модуля

v0.4.11

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

v0.4.10

  • Добавлена возможность выбора LVMVolumeGroup по меткам (labelSelector) в LocalStorageClass
  • Внутренние изменения в сборке модуля

v0.4.9

  • Исправлено формирование секрета доступа к registry (deckhouse-registry): теперь в него попадают данные авторизации только активного источника образов
  • Обновление базовых образов container-base до v1.1.8, Go 1.26.4 и lib-helm до 1.72.4

v0.4.8

  • Обновление базовых образов container-base до v1.1.2

v0.4.7

  • При пробросе меток из LocalStorageClass в StorageClass теперь исключаются метки с заданными игнорируемыми префиксами
  • Обновление базовых образов и lib-helm до 1.72.0

v0.4.6

  • Метки из LocalStorageClass теперь пробрасываются в управляемый StorageClass Kubernetes
  • Обновление базовых образов, Go 1.25.10 и lib-helm 1.71.12

v0.4.5

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

v0.4.4

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

v0.4.3

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

v0.4.2

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

v0.4.1

  • Обновление базовых образов и lib-helm

v0.4.0

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

v0.3.19

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

v0.3.18

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

v0.3.17

  • Исправление паники контроллера при обработке LVG без Node в статусе
  • Переработка манифестов, объединение контроллера и вебхука в один Pod

v0.3.16

  • Правки в документации
  • Исправления в scheduler, поправлено поведение при работе с другими provisioners
  • Фиксы багов в контроллере

v0.3.15

  • Фикс HA-mode, теперь он работает корректно
  • Убран функционал scheduler, остававшийся для совместимости со старыми версиями Deckhouse

v0.3.14

  • Обновлена версия базовых образов
  • Фикс CVE
  • Обновлена версия Go до 1.24.10

v0.3.13

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

v0.3.12

  • Обновлена версия Go до 1.24.8
  • Обновлена lib-helm до deckhouse_lib_helm-1.63.6

v0.3.11

  • Добавлены файлы release notes
  • Перевод хуков в модуле c python на golang

v0.3.10

  • Добавлена информация о необходимости snapshot-controller для работы модуля
  • Добавлен readonlyRootFilesystem для большей безопасности модуля

v0.3.9

  • Фиксы CVE

v0.3.8

  • Фиксы CVE
  • Внутренние изменения для поддержки containerd v2
  • Добавлена зависимость от snapshot-controller

v0.3.7

  • Добавлен метод NodeGetVolumeStats (для поддержки метрик kubelet_volume_stats_*)

v0.3.6

  • Правки в документацию

v0.3.5

  • Несколько фиксов для корректной поддержки VolumeSnapshots

v0.3.4

  • До конца исправлена ошибка с включенным csi snapshotter в CE версии

v0.3.3

  • Исправлена ошибка с включенным csi snapshotter в CE версии
  • Включен режим HA в CSI controller

v0.3.2

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

v0.3.1

  • Правки в документацию
  • Рефакторинг модуля

v0.2.3

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

v0.2.1

  • Поправлена ошибка, при которой освобожденная PVC могла считаться используемой
  • Уменьшен размер модуля, исключены сборочные образы

v0.2.0

  • Обновлены библиотеки golang API для поддержки sds-node-configurator v0.4.0
  • Множественные правки в контроллеры и документации
  • Добавлена поддержка файловой системы XFS

v0.1.2

  • Удалено поле isDefault (используйте стандартную аннотацию в k8s SC)
  • Добавлена поддержка непрерывных (contiguous) томов
  • Добавлены правила antiaffinity для HA режима контроллера
  • Добавлена поддержка AllocationLimit
  • Добавлены health и readiness проверки в контроллер

v0.1.1

  • Добавили в документацию описание процесса управления подами sds-local-volume

v0.1.0

  • Исправлена максимальная количество томов на узел и карта чтения/записи
  • Добавлен веб-хук валидации LocalStorageClass
  • Добавлены логи и улучшена оценка узлов
  • Добавлена документация модуля
  • Добавлен кэш для extender-scheduler
  • Добавлена проверка версии релиза предыдущего канала
  • Исправлена версия API KubeSchedulerConfiguration