Стадия жизненного цикла модуля: Общедоступная версия
У модуля есть требования для установки
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)