Стадия жизненного цикла модуля: Общедоступная версия
У модуля есть требования для установки
v0.2.28
Дата релиза: 2026-10-01
HPE CSI Driver и оба CSP обновлены до v3.3.0, каждый узел теперь получает недостающий стек iSCSI из собственного пакета модуля, не обращаясь к репозиториям дистрибутива, а права доступа модуль выдаёт в модели capability/scope из DKP 1.78.
Ключевые изменения
Изменения в этом релизе:
- HPE CSI Driver и оба Container Storage Provider (поставщика хранилища для CSI-драйвера) —
alletra-9000-primera-and-3par-cspиalletra-6000-and-nimble-csp— обновлены с v3.1.0 до v3.3.0; в апстриме (исходном проекте) исправлены подключение и отключение томов, работа с multipath и потребление памяти CSP. NodeGroupConfigurationбольше не просит у пакетного менеджера узлаopen-iscsi,multipath-toolsиsg3-utils. Каждый узел получает пакет модуляiscsi-tools, который оставляет то, что уже есть на хосте, и доставляет только недостающее, поэтому узел без доступа к своим репозиториям больше не ждёт пакетный менеджер при каждом запуске bashible.- В DKP 1.78 и новее роли доступа к модулю —
d8:system-capability:csi-hpe:viewиd8:system-capability:csi-hpe:editмодели capability/scope; в версиях ниже 1.78 модуль сохраняетd8:manage:permission:module:csi-hpe:viewиd8:manage:permission:module:csi-hpe:edit.
Новый функционал
В этом релизе добавлено:
- В DKP 1.78 и новее модуль создаёт ClusterRole
d8:system-capability:csi-hpe:view(чтениеHPEStorageClassиHPEStorageConnection) иd8:system-capability:csi-hpe:edit(их создание, изменение и удаление) с меткамиrbac.deckhouse.io/kind: capabilityиrbac.deckhouse.io/scope: system, и DKP агрегирует их в роли просмотра и управления хранилищем своей новой модели RBAC. Модель модуль выбирает по версии DKP в кластере; в кластерах ниже 1.78 роли остаются прежними —d8:manage:permission:module:csi-hpe:viewиd8:manage:permission:module:csi-hpe:edit.
Улучшения
В этом релизе улучшено:
- Стек iSCSI на узел приходит только из собственного пакета модуля
iscsi-tools. Пакет решает отдельно для каждой пары —iscsiadmсiscsid,multipathсmultipathd: пара, которая у хоста есть своя, остаётся хостовой, и включается только юнит дистрибутива; недостающая пара ставится в/var/lib/deckhouse/sds/csi-hpeсо своим юнитом модуля. Поэтому хост сopen-iscsi, но безmultipath-toolsполучаетmultipathdмодуля, тогда как раньше пакет отступал, как только у хоста находилсяiscsiadm. Настройкаfind_multipaths noи блок устройств 3PAR доходят до каждого узла, какой быmultipathdтам ни работал.sg3-utilsбольше не ставится: драйвер не вызывает ни одной его утилиты. - Если инструменты узла меняются после установки пакета — хост лишился
iscsiadmилиmultipathdлибо рядом с пакетом модуля поставили пакет дистрибутива, —NodeGroupConfigurationзапускает установку пакета заново, и узел не остаётся без инструмента и не держит два демона рядом до следующего релиза модуля.
Исправления
В этом релизе исправлено:
- Обновление пакета
iscsi-toolsбольше не теряет учёт файлов, которые прежняя версия положила вне своего каталога, — обёрткиiscsiadmв/usr/local/sbinи модулей проверки путей multipath в/usr/lib/multipath. После обновления их принимали за собственные файлы хоста и не удаляли при удалении пакета; теперь они обновляются и удаляются вместе с пакетом.
Обновления безопасности
Обновления безопасности в этом релизе:
- Бинарный файл
csi-driverсобирается сgoogle.golang.org/grpcv1.83.2 (было v1.82.1), что закрывает CVE-2026-84303, CVE-2026-84304 и CVE-2026-84445, и сgolang.org/x/cryptov0.56.0 (было v0.53.0), что закрывает CVE-2026-56854, CVE-2026-56855 и CVE-2026-78662.
Рекомендации по обновлению
Перед обновлением учтите следующее:
- Узел, на котором уже есть
open-iscsiиmultipath-toolsиз дистрибутива, сохраняет их и их юниты; с него ничего не удаляется, включаяsg3-utils. Узел, добавленный после обновления, больше не получает эти пакеты из репозиториев дистрибутива: всё недостающее приходит из пакета модуля, и вместоiscsidилиmultipathdдистрибутива там работаетd8-csi-hpe-iscsid.serviceилиd8-csi-hpe-multipathd.service. - В DKP 1.78 и новее ClusterRole
d8:manage:permission:module:csi-hpe:viewиd8:manage:permission:module:csi-hpe:editзаменяются наd8:system-capability:csi-hpe:viewиd8:system-capability:csi-hpe:edit. Доступ, выданный через роли хранилища DKP, продолжает работать; RoleBinding или ClusterRoleBinding, в котором старая роль указана напрямую, нужно переключить на новое имя.
Документация
Изменения в документации:
- Раздел FAQ описывает, откуда на узле берутся
open-iscsiиmultipath-tools: как пакет решает для каждой пары, какие файлы он кладёт вне своего каталога и когда забирает их обратно, и как по узлу понять, какие демоны хостовые, а какие — модуля. - У поля
specвHPEStorageClassпоявилось английское описание в справочнике CRD; раньше оно было только в русском.
Зависимости
Обновления зависимостей:
HPE CSI Driver for Kubernetes:3.1.0→3.3.0(changelog)- Среди исправлений апстрима: отключение или подключение PVC больше не отключает и не перенумеровывает постороннее multipath-устройство на узле; карта multipath без групп путей, оставшаяся после отказа SAN-коммутатора, сбрасывается через
multipath -f, а не принудительнымdmsetup remove; узловой плагин расходует меньше памяти при получении списка multipath-устройств.
- Среди исправлений апстрима: отключение или подключение PVC больше не отключает и не перенумеровывает постороннее multipath-устройство на узле; карта multipath без групп путей, оставшаяся после отказа SAN-коммутатора, сбрасывается через
alletra-9000-primera-and-3par-csp:3.1.0→3.3.0(changelog)- Обслуживает
HPEStorageConnectionсstorageType: Primera3Par. Среди исправлений апстрима: публикация тома, которая не удалась из-за одновременного удаления объекта хоста на СХД, больше не записываетLunId=-1и не блокирует все последующие подключения тома; ControllerUnpublishVolume больше не оставляет устаревший экспорт, мешающий удалить том; устранены повторяющиеся OOM-завершения (по нехватке памяти) пода CSP из-за избыточного логирования; клонирование PVC в больший размер, чем у исходного, теперь работает.
- Обслуживает
alletra-6000-and-nimble-csp:3.1.0→3.3.0(changelog)- Обслуживает
HPEStorageConnectionсstorageType: NimbleAlletra.
- Обслуживает
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)