Стадия жизненного цикла модуля: Общедоступная версия
У модуля есть требования для установки
v0.2.27
Дата релиза: 2026-09-09
Узел, репозитории которого не могут поставить стек iSCSI, теперь получает его из собственного пакетного образа модуля, HPEStorageClass умеет резервировать долю файловой системы под суперпользователя, а взаимная блокировка, оставлявшая отдельные узлы без работающего узлового плагина, исправлена.
Ключевые изменения
Изменения в этом релизе:
- Модуль сам ставит
open-iscsiиmultipath-toolsиз собственного пакетного образа, если репозитории узла их не дают. Раньше такой узел оставался как есть, и любое подключение тома на нём падало через несколько минут монтирования с ошибкойchroot: failed to run command 'iscsiadm'. HPEStorageClassумеет запросить долю файловой системы под суперпользователя — классический резерв ext4 — аннотациейstorage.deckhouse.io/ext4-reserved-percent. Без такого запроса тома ext4 теперь форматируются вообще без резерва, тогда как раньше теряли стандартные 5% ext4.- Перезапуск
node-driver-registrarбольше не заклинивает узловой плагин. Из-за этой взаимной блокировки один-два узла кластера оставались безcsi.hpe.comв своёмCSINodeи не могли подключить том, пока соседние узлы работали нормально.
Новый функционал
В этом релизе добавлено:
- Узел, на котором пакеты
open-iscsiиmultipath-toolsне устанавливаются из репозиториев, теперь получает их из собственного пакетного образа модуляiscsi-tools: содержимое разворачивается в/var/lib/deckhouse/sds/csi-hpe, каждый исполняемый файл запускается со своим путём поиска библиотек, и для демонов поднимаются два юнита —d8-csi-hpe-iscsid.serviceиd8-csi-hpe-multipathd.service. Пакеты дистрибутива остаются предпочтительным путём, и два пути никогда не смешиваются: узел, у которого есть свойiscsiadm, целиком сохраняет своё, потому что клиент одной версии не разговаривает сiscsidдругой. Уже имеющийся на узле/etc/iscsi/initiatorname.iscsiне трогается, поэтому узел сохраняет тот IQN, под которым его знает СХД. Всё остальное, что настраивает модуль, применяется к такому узлу точно так же, как к любому другому, включаяfind_multipaths no, без которого драйвер вообще не видит карту device-mapper. - Аннотация
storage.deckhouse.io/ext4-reserved-percentнаHPEStorageClassзадаёт долю файловой системы, оставляемую суперпользователю: целое число процентов от 0 до 50, по умолчанию 0. Значение доходит до драйвера как параметрfsCreateOptionsуправляемого StorageClass, потому что CSI-драйвер не видит аннотаций StorageClass. Без аннотации модуль теперь явно указывает-m0, тогда как обычныйmkfs.ext4оставлял стандартные 5% ext4. Резерв действует на тома, созданные после этого, — уже существующая файловая система сохраняет тот резерв, с которым была создана, — и только для ext4: класс сfsType: xfsне затрагивается, так как XFS не оставляет блоков суперпользователю. Некорректное значение оставляетHPEStorageClassсReady=Falseи причиной в статусе, вместо того чтобы сломать создание тома позже. - Настройка модуля
logLevelзадаёт, насколько подробно пишет логи контроллер:ERROR,WARN,INFO,DEBUGилиTRACE, по умолчаниюINFO. - Контроллер отдаёт метрики, а ServiceMonitor подставляет их основному Prometheus кластера: это то, что controller-runtime сообщает о каждом контроллере модуля — число и длительность реконсиляций, глубина очереди задач, задержки client-go. Сам контроллер слушает метрики на
127.0.0.1, а каждый сбор авторизует kube-rbac-proxy в том же поде.
Исправления
В этом релизе исправлено:
- Перезапуск
node-driver-registrarбольше не уносит с собой CSI-драйвер. Проба liveness у csi-node смотрела на порт, который отдаёт регистратор, но была прикреплена к контейнеру драйвера, и они вставали в клинч: регистратор по своей логике завершается при неудачной регистрации, вместе с ним исчезает порт, проба убивает драйвер, пропадает сокет CSI, и перезапущенный регистратор до него уже не дотягивается. Узлы поднимались с заклиненным узловым плагином — десяток перезапусков и отсутствиеcsi.hpe.comв ихCSINode, то есть подключить том на таком узле было нельзя, — пока другие узлы того же кластера работали нормально. Теперь проба находится на том контейнере, который её обслуживает. - Изменение конфигурации multipath больше не падает на узле, где
multipathdвключён, но не запущен: такой юнит наотрез отказывает в перезагрузке конфигурации, шаг настройки узла после этого ретраился бесконечно, иfind_multipaths noот модуля так и не доходил до демона — а именно он решает, получит ли LUN с единственным путём карту device-mapper вообще. Обработчик перезапускает юнит, если перезагрузить конфигурацию не удаётся, и охватывает также собственный юнит модуляd8-csi-hpe-multipathd.service.
Рекомендации по обновлению
Перед обновлением учтите следующее:
- Каждый StorageClass, управляемый
HPEStorageClassсfsTypeext4, при обновлении получает параметрfsCreateOptions: -m0. Так какparametersсуществующего StorageClass в Kubernetes неизменяемы, контроллер один раз пересоздаёт такой класс сам. Существующие тома, PVC и данные в них не затрагиваются, а том, созданный до обновления, сохраняет тот резерв, с которым была создана его файловая система. Руками делать ничего не нужно.
Документация
Изменения в документации:
- Появился раздел FAQ о двух способах, которыми стек iSCSI попадает на узел, — из репозиториев самого узла и из пакетного образа модуля: какой путь предпочтителен и почему, что и куда кладёт запасной путь, как по узлу понять, какой из двух он выбрал, и какие две вещи запасной путь намеренно не меняет.
- Появился раздел FAQ о доле тома, оставляемой суперпользователю: аннотация, диапазон значений, то, что резерв действует только на тома, созданные после этого, и то, что класс с
fsType: xfsне затрагивается. - Русский справочник по
HPEStorageClassснова соответствует схеме: поля называютсяstorageConnectionNameиfsType, аaccessProtocolиcpgв нём вовсе отсутствовали. Полеspec.controlPlane.addressуHPEStorageConnectionтеперь описано как устаревшее в пользуbackendAddress. Оба манифеста CRD генерируются из Go-типов API, поэтому схема и её описание больше не смогут разойтись.
v0.2.26
- Исправление: контроллеру выданы права patch на events вместо list — повторная запись события больше не отклоняется по правам
- Опциональные ресурсы включаются по наличию CRD в API, а не по списку включённых модулей — проверки переведены на helm_lib_api_version_exists
- Фиксы CVE
- Обновление базовых образов до v2.1.2, Go до 1.26.6 и lib-helm до 1.72.14
v0.2.25
- HPEStorageClass и HPEStorageConnection публикуют status.conditions и status.observedGeneration, добавлена колонка Ready. Поле status.phase сохраняет прежний набор значений, но теперь вычисляется из условия Ready
- Исправление: на узлах принудительно выставляется find_multipaths no отдельным файлом /etc/multipath/conf.d/99-deckhouse-csi-hpe-defaults.conf, поэтому LUN, доступный по одному пути, всё равно получает multipath-устройство, и подключение тома больше не завершается ошибкой “device not found with serial”
- Исправление: поды primera3par-csp и nimble-csp больше не закрепляются на вышедшем из строя узле — убраны tolerations, бессрочно допускавшие not-ready и unreachable, поэтому Deployment переезжает на живой узел
- Обновление базовых образов до v1.3.25, Go 1.26.5 и lib-helm до 1.72.13
v0.2.24
- Модуль snapshot-controller больше не обязательная зависимость: VolumeSnapshotClass создаётся только при наличии CRD snapshot.storage.k8s.io, иначе HPEStorageConnection обрабатывается без снапшотной части
- Обновление базовых образов, Go 1.26.5 и lib-helm до 1.72.12
- Устранена уязвимость в gRPC (GHSA-hrxh-6v49-42gf)
- Внутренние изменения в сборке модуля
v0.2.23
- Обновление базовых образов, Go 1.26.5 и lib-helm до 1.72.10
- Внутренние изменения в сборке модуля
v0.2.22
- Исправление: секреты доступа к registry Deckhouse теперь ограничены активным источником образов
- Обновление базовых образов, Go 1.26.5 и lib-helm до 1.72.9
- Внутренние изменения в сборке модуля
v0.2.21
- Обновление базовых образов container-base до v1.1.2
v0.2.20
- Переход runtime-образа csi-hpe на distroless-базу
v0.2.19
- При пробросе меток из HPEStorageClass в StorageClass теперь исключаются метки с заданными игнорируемыми префиксами
- Обновление базовых образов и lib-helm до 1.72.0
v0.2.18
- Метки из HPEStorageClass теперь пробрасываются в управляемый StorageClass Kubernetes
- Обновление базовых образов, Go 1.25.10 и lib-helm 1.71.12
v0.2.17
- Внутренние изменения в структуре и сборке модуля
v0.2.16
- Обновление базовых образов, Go 1.25.10 и lib-helm 1.71.11
- Внутренние изменения в сборку модуля
v0.2.15
- Исправления в структуру модуля
v0.2.14
- Изменения в CI: DistroPackagesProxy и env прокси в werf, доработки CVE-сканов (role_name, checkout)
- Добавлены кластерные роли user-authz в шаблонах
v0.2.13
- Установка пакетов в NodeGroupConfiguration больше не приводит к падению скрипта при ошибках
v0.2.12
- Добавлены инфраструктура и недостающие точки монтирования для distroless-образов
- Обновление базовых образов, Go и lib-helm (фикс CVE)
v0.2.11
- Обновление базовых образов и версии golang
- Обновление хуков, работающих при удалении модуля
- Отключен запрос Capacity со стороны k8s (CSI не поддерживает выдачу Capacity)
- Исправления в NGC, подготавливающих ноды
- Исправления в манифестах модуля
v0.2.10
- Обновление версии CSI до v3.0.0
- Переключение с yum на dnf для установки пакетов на дистрибутивах CentOS
- Исправление CVE
- Обновление документации
- Исправление аннотации VolumeSnapshotClass в StorageClasses
v0.2.9
- Обновлена версия базовых образов
v0.2.8
- Обновлена версия Go до 1.24.9
- Обновлена lib-helm до deckhouse_lib_helm-1.64.1
v0.2.7
- Технический релиз, внутренние доработки в модуле
v0.2.6
- Технический релиз, внутренние доработки в модуле
v0.2.5
- Добавлены файлы release notes
v0.2.4
- Добавлена дополнительные монтирования для поддержки containerd v2
v0.2.3
- Добавлена информация о необходимости snapshot-controller для работы модуля
- Добавлен readonlyRootFilesystem для большей безопасности модуля
v0.2.2
- Добавлена зависимость от snapshot-controller
v0.2.1
- Технический релиз, внутренние доработки в модуле
v0.2.0
- Тотальный рефакторинг модуля
- Правки в документации
- Фикс CVE, кроме GHSA-m425-mq94-257g в CSI, требующего длительного разбора зависимостей (в плане)
- CVE-2025-22869 в проприетарном бинарном файле
v0.1.4
- Добавлены требования к версии Deckhouse (>= 1.67)