Стадия жизненного цикла модуля: Общедоступная версия
У модуля есть требования для установки
v0.1.26
Дата релиза: 2026-09-24
Обновление безопасности: бинарные файлы Trident и хуки модуля пересобраны с исправленными grpc и x/crypto.
Ключевые изменения
Изменения в этом релизе:
google.golang.org/grpcобновлён с v1.82.1 до v1.83.2 вtrident_orchestratorиnode_prep, что закрывает CVE-2026-84303, CVE-2026-84304 и CVE-2026-84445.
Обновления безопасности
Обновления безопасности в этом релизе:
google.golang.org/grpcобновлён с v1.82.1 до v1.83.2 вtrident_orchestratorиnode_prep, что закрывает CVE-2026-84303, CVE-2026-84304 и CVE-2026-84445.golang.org/x/cryptoобновлён с v0.53.0 до v0.57.0 вtrident_orchestrator,node_prepи хуках модуля (go-hooks), что закрывает CVE-2026-56854 (обход аутентификации по адресу источника вx/crypto/ssh), CVE-2026-56855 и CVE-2026-78662.
v0.1.25
Дата релиза: 2026-09-09
Узел, репозитории которого не могут дать стек iSCSI, теперь получает его из собственного пакетного образа модуля, NetappStorageConnection задаёт, сколько тома оставлять суперпользователю — по умолчанию нисколько, тогда как раньше ext4 забирал 5%, — а контроллер модуля отдаёт метрики и берёт уровень логирования из настройки модуля.
Ключевые изменения
Изменения в этом релизе:
- Модуль сам ставит
open-iscsiиmultipath-toolsиз собственного пакетного образа, если репозитории узла их не дают. Раньше такой узел оставался как есть, и любое подключение тома на нём падало с ошибкойnsenter: failed to execute iscsiadm. NetappStorageConnectionумеет запросить долю файловой системы под суперпользователя — классический резерв ext4 — аннотациейstorage.deckhouse.io/ext4-reserved-percent. Без такого запроса тома форматируются без резерва, тогда как раньше каждый том ext4 отдавал root’у стандартные 5%.- Перезапуск
node-driver-registrarбольше не заклинивает узловой плагин. Из-за этой взаимной блокировки один-два узла кластера оставались безcsi.trident.netapp.ioв своёмCSINodeи не могли подключить том, пока соседние узлы работали нормально.
Новый функционал
В этом релизе добавлено:
- Узел, на котором пакеты
open-iscsiиmultipath-tools(в RPM-дистрибутивах —iscsi-initiator-utilsиdevice-mapper-multipath) не устанавливаются из репозиториев, теперь получает их из собственного пакетного образа модуляiscsi-tools: содержимое разворачивается в/var/lib/deckhouse/sds/csi-netapp, каждый исполняемый файл запускается со своим путём поиска библиотек, и для демонов поднимаются два юнита —d8-csi-netapp-iscsid.serviceиd8-csi-netapp-multipathd.service. Пакеты дистрибутива остаются предпочтительным путём, и два пути никогда не смешиваются: узел, у которого есть свойiscsiadm, целиком сохраняет своё, потому что клиент одной версии не разговаривает сiscsidдругой. Всё, чтоNodeGroupConfigurationделает после установки, выполняется на таком узле точно так же, как на любом другом: переопределениеfind_multipaths no, блок устройств NetApp ONTAP, модули ядра и меткаstorage.deckhouse.io/csi-netapp-node-ready, которой дожидается узловой компонент CSI. - Аннотация
storage.deckhouse.io/ext4-reserved-percentнаNetappStorageConnectionзадаёт долю файловой системы, оставляемую суперпользователю: целое число процентов от 0 до 50, по умолчанию 0. Обратите внимание на ресурс: в отличие от остальных модулей хранения, значение задаётся на соединении, а не на StorageClass, — Trident держит опции mkfs на бэкенде, поэтому оно действует на все StorageClass, обслуживаемые этим соединением. Резерв действует на тома, созданные после этого; уже существующая файловая система сохраняет тот резерв, с которым была создана. Некорректное значение оставляетNetappStorageConnectionсReady=Falseи причиной в статусе, вместо того чтобы сломать создание тома позже. - Настройка модуля
logLevelзадаёт, насколько подробно пишет логи контроллер:ERROR,WARN,INFO,DEBUGилиTRACE. По умолчаниюINFO, тогда как раньше контроллер писал на уровнеDEBUGи изменить это было нельзя. - Контроллер отдаёт метрики, а PodMonitor подставляет их основному Prometheus кластера: это то, что controller-runtime сообщает о каждом контроллере модуля — число и длительность реконсиляций, глубина очереди задач, задержки client-go. Сам контроллер слушает метрики на
127.0.0.1, а каждый сбор авторизует kube-rbac-proxy в том же поде.
Улучшения
В этом релизе улучшено:
- Release notes пишутся по локалям в
.release-notes/<тег>.yamlи<тег>.ru.yamlс разделамиsummary,highlights,new_features,improvements,fixes,security,breaking,upgrade_notes,known_issues,docsиdependencies. В кластер попадают обе локали, поэтому консоль показывает описание на языке читателя; релизы, выпущенные до этого, остаются в прежнем плоском формате и отображаются на той же странице точно так же, как раньше.
Исправления
В этом релизе исправлено:
- Опции форматирования
formatOptions, которые модуль записывает в бэкенд Trident, наконец до него доходят. Раньше они лежали на верхнем уровне спекиTridentBackendConfig, где у драйвера такого поля нет: Trident читает их из-подdefaults, поэтому значение с верхнего уровня разбиралось в ничто и молча отбрасывалось. Из-за этого-E nodiscard, который модуль запрашивал всегда, ни разу не применялся, и каждый том форматировался с полным discard устройства. - Перезапуск
node-driver-registrarбольше не уносит с собой CSI-драйвер. Проба liveness у csi-node смотрела на порт, который отдаёт регистратор, но была прикреплена к контейнеру драйвера, и они вставали в клинч: регистратор по своей логике завершается при неудачной регистрации, вместе с ним исчезает порт, проба убивает драйвер, пропадает сокет CSI, и перезапущенный регистратор до него уже не дотягивается. Узел поднимался с заклиненным узловым плагином — десяток перезапусков и отсутствиеcsi.trident.netapp.ioв егоCSINode, то есть подключить том на таком узле было нельзя, — пока другие узлы того же кластера работали нормально. Теперь проба находится на том контейнере, который её обслуживает. - Изменение конфигурации multipath больше не падает на узле, где
multipathdвключён, но не запущен: такой юнит наотрез отказывает в перезагрузке конфигурации, шаг настройки узла после этого ретраился бесконечно, иfind_multipaths noот модуля оставался неприменённым — а его читают собственные предполётные проверки Trident, прежде чем согласиться подключить том. Обработчик перезапускает юнит, если перезагрузить конфигурацию не удаётся, и охватывает также собственный юнит модуляd8-csi-netapp-multipathd.service. - Релизный тег без release notes публиковал пустой
changelog.yaml, оставляяModuleRelease.spec.changelogпустым при зелёной сборке. Теперь такой тег роняет сборку.
Рекомендации по обновлению
Перед обновлением учтите следующее:
- Тома, созданные после обновления, не несут резерва под суперпользователя, поэтому весь том доступен нагрузке; уже существующая файловая система сохраняет те 5%, с которыми была создана. Руками делать ничего не нужно: контроллер сам перезаписывает
TridentBackendConfigкаждого соединения, а существующие тома и PVC не затрагиваются. - После обновления контроллер пишет логи на уровне
INFO, тогда как раньше писал наDEBUGбезусловно. Чтобы вернуть прежнюю подробность, задайтеsettings.logLevelзначениеDEBUGилиTRACE. - Узел, чей под csi-node застрял во взаимной блокировке при регистрации, восстановится сам по мере раскатки исправленного пода DaemonSet — удалять поды руками не требуется.
Документация
Изменения в документации:
- Страница настроек модуля описывает два способа, которыми стек iSCSI попадает на узел, — из репозиториев самого узла и из пакетного образа модуля: какой путь предпочтителен и почему, что и куда кладёт запасной путь, как по узлу понять, какой из двух он выбрал, и какие два механизма остаются незаметными, пока том не откажется монтироваться.
- Там же описана доля тома, оставляемая суперпользователю: аннотация, то, что её место — на соединении, а не на StorageClass, диапазон значений и то, что резерв действует только на тома, созданные после этого.
v0.1.24
- Исправление: релизный образ больше не собирается из кэша с устаревшим changelog.yaml — зависимости git-маппинга привязаны к стадии install, на которой файл и копируется
- Обновление базовых образов до v2.1.4
- Внутренние изменения в сборке модуля
v0.1.23
- Исправление: успешное монтирование NFS больше не считается ошибкой — в образ добавлен /etc/mtab (симлинк на /proc/self/mounts), из-за отсутствия которого mount возвращал код 16
- Исправление: контроллеру выданы права patch на events вместо list — повторная запись события больше не отклоняется по правам
- Фиксы CVE
- Обновление базовых образов до v2.1.2, Go до 1.26.6 и lib-helm до 1.72.14
v0.1.22
- Исправление: секрет с учётными данными создаётся раньше TridentBackendConfig, который на него ссылается, иначе Trident отклонял backend с ошибкой «backend credentials not found»; при удалении порядок обратный. Заодно устранён ранний выход из reconcile, при котором Ready=True публиковался до создания секрета, StorageClass и VolumeSnapshotClass
- Обновление базовых образов до v1.3.25, Go 1.26.5 и lib-helm до 1.72.13
- Внутренние изменения: работа с условиями переведена на общую библиотеку
v0.1.21
- Модуль snapshot-controller больше не обязательная зависимость: VolumeSnapshotClass создаётся только при наличии CRD snapshot.storage.k8s.io, иначе NetappStorageClass и NetappStorageConnection обрабатываются без снапшотной части
- Обновление базовых образов, Go 1.26.5 и lib-helm до 1.72.12
- Устранена уязвимость в gRPC (GHSA-hrxh-6v49-42gf)
- Внутренние изменения в сборке модуля
v0.1.20
- Исправление: секреты доступа к registry Deckhouse теперь ограничены активным источником образов
- Обновление базовых образов, Go 1.26.5 и lib-helm до 1.72.10
- Внутренние изменения в сборке модуля
v0.1.19
- При пробросе меток из NetappStorageClass в StorageClass теперь исключаются метки с заданными игнорируемыми префиксами
- Обновление базовых образов и lib-helm до 1.72.0
v0.1.18
- Метки из NetappStorageClass теперь пробрасываются в управляемый StorageClass Kubernetes
- Обновление базовых образов, Go 1.25.10 и lib-helm 1.71.12
v0.1.17
- Внутренние изменения в структуре и сборке модуля
v0.1.16
- Обновление базовых образов, Go 1.25.10 и lib-helm 1.71.11
- Внутренние изменения в сборку модуля
v0.1.15
- Исправления в структуру модуля
v0.1.14
- csi-netapp переведён на distroless-сборку Trident (host-бинарники через nsenter), повышена устойчивость node-плагина к рестартам
- В CRD NetappStorageClass и NetappStorageConnection добавлены status.conditions и printer columns
- Добавлены NodeGroupConfiguration для установки iscsi/multipath на Altlinux, RedOS-like и Ubuntu-like
- Исправлены уязвимости (CVE) в зависимостях бинарей Trident
v0.1.13
- Изменения в CI: DistroPackagesProxy и env прокси в werf, доработки CVE-сканов (role_name, checkout)
- Добавлены кластерные роли user-authz в шаблонах
v0.1.12
- Добавлены недостающие точки монтирования в distroless-образе csi-netapp
- Обновление базовых образов, Go и lib-helm (фикс CVE)
- Уточнения в документации
v0.1.11
- Обновление базовых образов и версии golang
- Обновление хуков, работающих при удалении модуля
- Отключен запрос Capacity со стороны k8s (CSI не поддерживает выдачу Capacity)
- Исправления в работе со снапшотами
- Правки в работе CSI
v0.1.10
- Фикс HA-mode, теперь он работает корректно
v0.1.9
- Обновлена версия базовых образов
- Исправления в документации
v0.1.8
- Обновлена версия Go до 1.24.9
- Обновлена lib-helm до deckhouse_lib_helm-1.64.1
v0.1.7
- Добавлены файлы release notes
v0.1.6
- Добавлена дополнительные монтирования для поддержки containerd v2
v0.1.5
- Добавлена информация о необходимости snapshot-controller для работы модуля
- Добавлен readonlyRootFilesystem для большей безопасности модуля
v0.1.4
- Фиксы CVE
v0.1.3
- Добавлены фиксы для поддержки containerd v2
- Добавлена зависимость от snapshot-controller
v0.1.1
- Закрытие CVE
- Рефакторинг модуля, правка ошибок в манифестах
- Улучшения в документации