Стадия жизненного цикла модуля: Общедоступная версия
У модуля есть требования для установки
v0.2.32
Дата релиза: 2026-10-01
Инструменты iSCSI, multipath и NVMe на узле теперь всегда берутся из собственных пакетов модуля, а не из репозиториев дистрибутива, а доступ к ресурсам модуля выдается через роли RBACv2 из DKP 1.78.
Ключевые изменения
Изменения в этом релизе:
NodeGroupConfigurationбольше не обращается к пакетному менеджеру узла заopen-iscsi,multipath-toolsиnvme-cli: узел без доступа к своим репозиториям больше не ждет их при каждом запуске bashible, а недостающие на узле инструменты ставятся из пакетов модуляiscsi-toolsиnvme-tools.- В DKP 1.78 и новее модуль поставляет роли
d8:system-capability:csi-yadro-tatlin-unified:viewиd8:system-capability:csi-yadro-tatlin-unified:editдляYadroTatlinUnifiedStorageClassиYadroTatlinUnifiedStorageConnection.
Новый функционал
В этом релизе добавлено:
- Модуль поставляет роли RBACv2 для своих кластерных ресурсов
YadroTatlinUnifiedStorageClassиYadroTatlinUnifiedStorageConnection:viewдаетget,listиwatch,edit—create,update,patch,deleteиdeletecollection. В DKP 1.78 и новее это capability (право доступа в новой ролевой модели)d8:system-capability:csi-yadro-tatlin-unified:viewиd8:system-capability:csi-yadro-tatlin-unified:editсrbac.deckhouse.io/scope: system; в более ранних версиях DKP те же правила поставляются какd8:manage:permission:module:csi-yadro-tatlin-unified:viewиd8:manage:permission:module:csi-yadro-tatlin-unified:edit.viewагрегируется в роль хранилищаviewer, аedit— в роль хранилищаmanager.
Улучшения
В этом релизе улучшено:
NodeGroupConfigurationставит пакетiscsi-toolsна каждый обслуживаемый модулем узел, аnvme-tools— на каждый такой узел, где настроен NVMe-TCP, вместо того чтобы сначала пробоватьopen-iscsi,multipath-toolsиnvme-cliиз дистрибутива.iscsi-toolsтеперь решает по каждой паре отдельно: параiscsiadm/iscsidилиmultipath/multipathd, которая на узле уже есть, остается узловой, и включается только ее юнит из дистрибутива, а недостающая пара размещается в/var/lib/deckhouse/sds/csi-yadro-tatlin-unifiedс собственным юнитомd8-csi-yadro-tatlin-unified-*. Узел сopen-iscsi, но безmultipath-toolsтеперь получаетmultipathdмодуля; раньше пакет модуля отступал, как только на узле находился любойiscsiadm.nvme-toolsпо-прежнему ставитnvmeтолько на узел, где своего нет.spec.controlPlane.nodeSelectorиspec.dataPlane.nodeSelectorвYadroTatlinUnifiedStorageConnectionтеперь атомарны для server-side apply (применение изменений на стороне API-сервера): селектор заменяется целиком, а не сливается по полям между двумя источниками изменений. Каждый элементmatchExpressionsтеперь обязан содержатьkeyиoperator; элемент без них и раньше ничего не выбирал.
Исправления
В этом релизе исправлено:
- Узел, на котором собственные инструменты изменились после установки пакета модуля, настраивается заново при следующем запуске bashible. Шаг установки пакета выполнялся только один раз на версию модуля, поэтому инструмент, позднее пропавший с узла, оставался недоступным до следующего релиза, а установленный позже пакет дистрибутива запускал своего демона рядом с демоном модуля. Теперь
NodeGroupConfigurationдляiscsiadm,multipathdиnvmeсравнивает, есть ли инструмент на узле и в пакете, и переустанавливает пакет, если это больше не согласуется. - Файлы, которые прежняя версия
iscsi-toolsилиnvme-toolsположила вне собственного каталога, — обертки/usr/local/sbin/iscsiadmи/usr/local/sbin/nvme, ссылки и модули multipath, — после обновления больше не принимаются за файлы узла и удаляются при удалении пакета.
Рекомендации по обновлению
Перед обновлением учтите следующее:
- Ничего не нужно делать вручную. Узлы, где уже работают
iscsid,multipathdилиnvmeиз дистрибутива, сохраняют их; узел, который использует пакеты модуля, тоже сохраняет их. Если узлу теперь нужны инструменты дистрибутива, их должен установить администратор: при следующем запуске bashible модуль их обнаружит и уступит эту пару узлу.
Документация
Изменения в документации:
- Раздел FAQ про
open-iscsi,multipath-toolsиnvme-cliтеперь описывает, откуда берется каждый инструмент на узле, какие файлы пакеты модуля кладут на узел и как проверить, какая пара откуда взята. - В справочнике
YadroTatlinUnifiedStorageClassтеперь описано полеspec, а в справочникеYadroTatlinUnifiedStorageConnection— элементыmatchExpressionsобоих селекторов узлов, на английском и русском языках.
v0.2.31
Дата релиза: 2026-09-24
Обновление безопасности: CSI-драйвер и хуки модуля пересобраны с исправленными grpc и x/crypto.
Ключевые изменения
Изменения в этом релизе:
google.golang.org/grpcобновлён с v1.82.1 до v1.83.2 в CSI-драйвере (csi-tatlin-u), что закрывает CVE-2026-84303, CVE-2026-84304 и CVE-2026-84445.
Обновления безопасности
Обновления безопасности в этом релизе:
google.golang.org/grpcобновлён с v1.82.1 до v1.83.2 в CSI-драйвере (csi-tatlin-u), что закрывает CVE-2026-84303, CVE-2026-84304 и CVE-2026-84445.golang.org/x/cryptoобновлён с v0.53.0 до v0.57.0 в хуках модуля (go-hooks), что закрывает CVE-2026-56854 (обход аутентификации по адресу источника вx/crypto/ssh), CVE-2026-56855 и CVE-2026-78662.
v0.2.30
Дата релиза: 2026-09-14
Модуль сам устанавливает userspace iSCSI и NVMe там, где репозитории узла этого не могут, отдаёт метрики контроллера и scheduler extender и больше не оставляет суперпользователю 5 % каждого тома ext4.
Ключевые изменения
Изменения в этом релизе:
- Узел, репозитории которого не могут предоставить
open-iscsi,multipath-toolsилиnvme-cli, больше не остаётся неспособным подключить том: модуль ставит их из собственных пакетных образов. - Контроллер и scheduler extender отдают метрики, их забирают через kube-rbac-proxy того же пода;
ServiceMonitorиPodMonitorпоставляются вместе с модулем. - Том ext4 больше не резервирует 5 % своего объёма для суперпользователя, а
YadroTatlinUnifiedStorageClassможет запросить долю обратно через аннотацию.
Новый функционал
В этом релизе добавлено:
- Там, где пакетный менеджер узла не может установить
open-iscsiиmultipath-tools,NodeGroupConfigurationоткатывается на собственный образ модуляiscsi-tools: содержимое распаковывается в/var/lib/deckhouse/sds, демоны поднимаются юнитамиd8-csi-yadro-tatlin-unified-iscsid.serviceиd8-csi-yadro-tatlin-unified-multipathd.service. Узел, на котором уже есть свойopen-iscsi, остаётся нетронутым: клиент одной версии не разговаривает с демоном другой. - У
nvme-cliпоявился собственный пакетный образnvme-toolsи собственный откат, который используется только там, где модуль настроен на NVMe-TCP. Он не зависит от отката для iSCSI: дистрибутив может дать один набор пакетов и не дать другой. Безnvme-cliна узле не сохранялось NVMe Qualified Name, и драйвер сообщалinitiators is emptyдля каждого тома, который его просили опубликовать на таком узле. - Контроллер и scheduler extender отдают метрики за kube-rbac-proxy: компонент слушает на
127.0.0.1, а прокси публикует их по TLS за проверкой прав.ServiceMonitorдля контроллера иPodMonitorдля extender входят в модуль, а порты настраиваются значениями модуляcontrollerMetricsPort,controllerMetricsProxyPort,schedulerExtenderMetricsPortиschedulerExtenderMetricsProxyPort. - Аннотация
storage.deckhouse.io/ext4-reserved-percentнаYadroTatlinUnifiedStorageClassзадаёт долю тома, оставляемую суперпользователю: целое число от 0 до 50. Она действует только на тома, созданные после её установки, класс сfsType: xfsеё игнорирует, а при недопустимом значенииYadroTatlinUnifiedStorageClassостаётся сReady=Falseи причиной в статусе — вместо отказа при создании тома позже. Смена аннотации заставляет контроллер пересоздать StorageClass, потому чтоparametersсуществующего в Kubernetes неизменяемы.
Улучшения
В этом релизе улучшено:
- Том ext4 теперь форматируется вообще без резерва для суперпользователя. Все тома, созданные этим модулем раньше, отдавали root стандартные 5 % ext4, поскольку при форматировании не передавался
-m; тома, создаваемые с этого момента, отдают это место нагрузке. - Контроллер и scheduler extender пишут логи через один общий логгер в том же структурированном формате, что и остальные модули.
- Значение
logLevelпо умолчанию теперьINFO, а неDEBUG— его получит кластер, в котором параметр не задан явно.
Исправления
В этом релизе исправлено:
- Поды CSI больше не ждут появления
YadroTatlinUnifiedStorageConnection, чтобы запуститься. Оба Secret, которые они монтируют, пишет контроллер при обработке подключения, а чарт требовал эти тома обязательными, поэтому на свежей установке все поды CSI стояли вContainerCreatingсsecret not found, и драйвер не работал, пока кто-нибудь не объявит подключение. Теперь монтирования необязательные, и kubelet наполняет тома, как только Secret появляются.
Рекомендации по обновлению
Перед обновлением учтите следующее:
- Руками делать ничего не нужно. Новые пакеты ставятся только на узлы, где нельзя установить пакеты дистрибутива, а узлы со своим стеком не затрагиваются.
- Резерв ext4 для суперпользователя меняется только у томов, созданных после обновления. Уже существующие файловые системы сохраняют те 5 %, с которыми были отформатированы; чтобы резерв остался и у новых томов, поставьте на класс аннотацию
storage.deckhouse.io/ext4-reserved-percent=5. - Кластеру, который полагался на прежнюю подробность логов, следует явно задать
logLevel: DEBUGв конфигурации модуля, поскольку значение по умолчанию теперьINFO.
v0.2.29
- Исправление: успешное монтирование больше не считается ошибкой — в образ добавлен /etc/mtab (симлинк на /proc/self/mounts), из-за отсутствия которого mount возвращал код 16. Обёртка wrap-mount сужена до iscsiadm и больше не подменяет mount
- Исправление: релизный образ больше не собирается из кэша с устаревшим changelog.yaml — зависимости git-маппинга привязаны к стадии install, на которой файл и копируется
- Внутренние изменения в сборке модуля
v0.2.28
- Исправление: контроллеру выданы права patch на events вместо list — повторная запись события больше не отклоняется по правам
- Исправление: VPA переведён с устаревшего режима обновления Auto на InPlaceOrRecreate
- Опциональные ресурсы включаются по наличию CRD в API, а не по списку включённых модулей
- Фиксы CVE
- Обновление базовых образов до v2.1.2, Go до 1.26.6 и lib-helm до 1.72.14
v0.2.27
- YadroTatlinUnifiedStorageClass и YadroTatlinUnifiedStorageConnection публикуют status.conditions и status.observedGeneration, добавлена колонка Ready. Поле status.phase сохраняет прежний набор значений, но теперь вычисляется из условия Ready
- Обновление базовых образов до v1.3.25, Go 1.26.5 и lib-helm до 1.72.13
v0.2.26
- Модуль snapshot-controller больше не обязательная зависимость: VolumeSnapshotClass создаётся только при наличии API snapshot.storage.k8s.io
- Обновление базовых образов, Go 1.26.5 и lib-helm до 1.72.12
- Устранена уязвимость в gRPC (GHSA-hrxh-6v49-42gf)
- Внутренние изменения в сборке модуля
v0.2.25
- Обновление драйвера до вендорской версии v26.06
- Исправление: многочисленные правки в работе режима NVMe-over-TCP
- Исправление: область видимости secret deckhouse-registry ограничена активным источником образов
- Устранены уязвимости в сторонних зависимостях
- Внутренние изменения в сборке модуля
v0.2.24
- Обновление базовых образов container-base до v1.1.2
v0.2.23
- Исправлены пути монтирования в образе scheduler-extender
- Добавлена инструкция по настройке NQN хостов для NVMe-over-TCP в документацию
v0.2.22
- При пробросе меток из YadroTatlinUnifiedStorageClass в StorageClass теперь исключаются метки с заданными игнорируемыми префиксами
- Обновлён CSI-драйвер до версии yadro/tatlin-unified v26.02
v0.2.21
- Добавлена поддержка протокола NVMe-over-TCP в YadroTatlinUnifiedStorageConnection (требуется Tatlin Unified Gen2 с прошивкой 3.2.0 или новее и предварительно созданная группа доступа типа
nvme) - Обновление базовых образов и lib-helm до 1.72.0
v0.2.20
- Метки из YadroTatlinUnifiedStorageClass теперь пробрасываются в управляемый StorageClass Kubernetes
- Обновление базовых образов, Go 1.25.10 и lib-helm 1.71.12
v0.2.19
- Внутренние изменения в структуре и сборке модуля
v0.2.18
- Обновление базовых образов, Go 1.25.10 и lib-helm 1.71.11
- Внутренние изменения в сборку модуля
v0.2.17
- Изменения в CI: DistroPackagesProxy и env прокси в werf, доработки CVE-сканов (role_name, checkout)
- Добавлены кластерные роли user-authz в шаблонах
v0.2.16
- Установка пакетов в NodeGroupConfiguration больше не приводит к падению скрипта при ошибках
- Замена yum на bb-dnf, разделение NGC для Debian и Altlinux, унификация именований
v0.2.15
- Добавлены недостающие точки монтирования в distroless-образе csi-yadro-tatlin-unified
- Обновление базовых образов, Go и lib-helm
v0.2.14
- Фиксы CVE
- Правки документации
v0.2.13
- Обновление базовых образов и версии golang
- Обновление хуков, работающих при удалении модуля
v0.2.12
- Переработка манифестов модуля
- Обновление версии CSI до 25.12
v0.2.11
- Правки CVE
- Правки манифестов модуля
v0.2.10
- Обновлена версия базовых образов
- Обновлена версия Go до 1.24.11
- Обновлена версия lib-helm до deckhouse_lib_helm-1.64.10
- Добавление аннотации volumesnapshotclass для StorageClass для совместимости
- Правки в сборку CSI
- Обновление CSI
v0.2.9
- Обновлена версия базовых образов
v0.2.8
- Обновлена версия Go до 1.24.9
- Обновлена lib-helm до deckhouse_lib_helm-1.64.1
v0.2.7
- Обновлены исходники для исправления CVE
v0.2.6
- Обновлена версия Go до 1.24.8
- Обновлена lib-helm до deckhouse_lib_helm-1.63.6
v0.2.5
- Добавлены файлы release notes
- Рефакторинг модуля
- Переключение csi на service account csi
- Добавлена поддержка containerd v2
- Переключение на distroless образ
v0.2.4
- Добавлен postStop хук для очистки файла сокета при остановке csi-node
- Добавлена поддержка HA mode для CSI controller
v0.2.3
- Добавлен параметр nodeSelector для указания node с полезной нагрузкой
v0.2.0
- Обновление CSI на версию 25.04
- Некоторое количество багфиксов
v0.1.1
- Множественные правки для соответствия style guides
- Перевод хуков на Golang
v0.1.0
- Выкат модуля после переименования (старый пока что оставлен с пометкой deprecated)