Стадия жизненного цикла модуля: General Availability
У модуля есть требования для установки
v0.4.17
Дата релиза: 2026-09-15
Модуль по умолчанию пишет логи на уровне INFO вместо DEBUG, поэтому установка, в которой уровень не выбирали, перестаёт получать отладочный вывод от компонентов CSI.
Ключевые изменения
Изменения в этом релизе:
- Значение
logLevelпо умолчанию теперьINFO, а неDEBUG. Там, где уровень не задавали в конфигурации модуля, CSI-контроллер и узловой плагин после обновления становятся заметно тише; вернуть прежнюю подробность можно, указавlogLevel: DEBUG.
Улучшения
В этом релизе улучшено:
- Значение
logLevelв конфигурации модуля по умолчанию теперьINFO. Эта настройка задаётLOG_LEVELCSI-контроллера и узлового плагинаcsi-node, поэтому прежний умолчательныйDEBUGозначал, что каждая установка, где настройку не трогали, держала весь слой данных на отладочной подробности и платила за это объёмом логов. Явно указанный в ModuleConfiglogLevelсоблюдается ровно как раньше, каким бы он ни был.
Рекомендации по обновлению
Перед обновлением учтите следующее:
- В конфигурации модуля делать ничего не нужно. Там, где
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