Стадия жизненного цикла модуля: Общедоступная версия

У модуля есть требования для установки

v0.3.26

Дата релиза: 2026-10-01

Драйвер Huawei CSI обновлён до v4.12.1, узлы получают стек iSCSI и multipath из собственного пакета модуля без обращения к репозиториям дистрибутива, а модуль поставляет роли доступа к своим ресурсам.

Ключевые изменения

Изменения в этом релизе:

  • Ресурсы NodeGroupConfiguration модуля больше не запрашивают open-iscsi, multipath-tools и sg3-utils у пакетного менеджера узла. Каждый узел получает пакет модуля iscsi-tools, который ставит только те пары, которых нет на хосте (iscsiadm с iscsid, multipath с multipathd); узел без доступа к своим репозиториям больше не ждёт их при каждом запуске bashible.
  • Драйвер Huawei CSI (eSDK) обновлён с v4.10.1 до v4.12.1.
  • Модуль поставляет ClusterRole для просмотра и управления HuaweiStorageClass и HuaweiStorageConnection, агрегированные в роль администратора хранилища.

Новый функционал

В этом релизе добавлено:

  • Модуль поставляет две ClusterRole для своих кластерных ресурсов HuaweiStorageClass и HuaweiStorageConnection: просмотр (get, list, watch) и изменение (create, update, patch, delete, deletecollection); обе агрегируются в роль администратора хранилища (rbac.deckhouse.io/aggregate-to-storage-as: manager). В DKP 1.78 и новее это capability (возможности) RBACv2 d8:system-capability:csi-huawei:view и d8:system-capability:csi-huawei:edit, в более ранних версиях — d8:manage:permission:module:csi-huawei:view и d8:manage:permission:module:csi-huawei:edit.

Улучшения

В этом релизе улучшено:

  • Ресурсы NodeGroupConfiguration (узлы ALT Linux, семейства РЕД ОС и семейства Ubuntu) ставят пакет модуля iscsi-tools на каждый узел, а не пробуют сначала open-iscsi и multipath-tools из дистрибутива. Пакет решает для каждой пары отдельно: пара, которая на хосте уже есть, остаётся хостовой, и модуль только включает для неё unit (юнит systemd) дистрибутива и запускает mpathconf; недостающая пара ставится из пакета со своим юнитом (d8-csi-huawei-iscsid.service, d8-csi-huawei-multipathd.service). Хост с open-iscsi, но без multipath-tools, теперь получает multipathd модуля; раньше пакет ничего не делал на любом хосте, где был iscsiadm. Настройки multipath deferred_remove/flush_on_last_del записываются для того multipathd, который работает на узле.
  • sg3-utils больше не ставится на узлы: драйвер нигде не вызывает его утилиты. Уже установленные пакеты не удаляются.
  • Если набор утилит на узле изменился после установки пакета модуля (с хоста пропал iscsiadm или multipath либо позже поставили пакет дистрибутива с ними), NodeGroupConfiguration переустанавливает пакет: узел снова получает недостающую пару, а демон пакета уступает место демону дистрибутива. Раньше это решение принималось один раз на версию модуля.

Исправления

В этом релизе исправлено:

  • При обновлении пакета iscsi-tools плагины multipath в /usr/lib/multipath и обёртка iscsiadm в /usr/local/sbin, оставленные предыдущей версией, принимались за собственные файлы хоста: обёртка оставалась старой версии, и ни то, ни другое не удалялось вместе с пакетом. Теперь они распознаются как файлы пакета и заменяются.

Рекомендации по обновлению

Перед обновлением учтите следующее:

  • Ручных действий не требуется. При первом запуске bashible после обновления узлы с open-iscsi и multipath-tools из дистрибутива продолжают использовать их; узлы без какой-либо из пар получают её из пакета модуля. Уже смонтированные тома не затрагиваются.

Документация

Изменения в документации:

  • Раздел FAQ о том, откуда на узле берутся open-iscsi и multipath-tools, переписан под установку по парам из пакета модуля, в том числе как определить, какая пара на узле откуда взята. В разделе README про FC указано, что multipath и multipathd ставятся из пакета модуля на узлы без собственного multipath-tools.
  • У поля spec ресурса HuaweiStorageClass в CRD появилось описание.

Зависимости

Обновления зависимостей:

  • Huawei CSI (eSDK_K8S_Plugin): 4.10.1 → 4.12.1 (changelog)
    • Патчи модуля перенесены без изменения поведения; google.golang.org/grpc остаётся на v1.83.2. Новые возможности апстрима (NVMe over TCP, мониторинг состояния томов, восстановление из снимка поверхностным копированием, тома Hyper-Metro) через HuaweiStorageConnection и HuaweiStorageClass недоступны.

v0.3.25

Дата релиза: 2026-09-24

Обновление безопасности: бинарные файлы Huawei CSI и хуки модуля пересобраны с исправленными grpc и x/crypto.

Ключевые изменения

Изменения в этом релизе:

  • google.golang.org/grpc обновлён с v1.82.1 до v1.83.2 во всех четырёх бинарных файлах Huawei eSDK (huaweicsi, oceanctl, storage-backend-controller, storage-backend-sidecar), что закрывает CVE-2026-84303, CVE-2026-84304 и CVE-2026-84445.

Обновления безопасности

Обновления безопасности в этом релизе:

  • google.golang.org/grpc обновлён с v1.82.1 до v1.83.2 во всех четырёх бинарных файлах Huawei eSDK (huaweicsi, oceanctl, storage-backend-controller, storage-backend-sidecar), что закрывает 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.3.24

Дата релиза: 2026-09-14

Обслуживающий релиз: модуль пересобран тулчейном Go 1.27.1 на базовых образах v2.1.17, поведение не меняется.

Ключевые изменения

Изменения в этом релизе:

  • Все компоненты модуля собраны с Go 1.27.1 на базовых образах v2.1.17. Поведение модуля, его ресурсы и настройки не меняются.

Рекомендации по обновлению

Перед обновлением учтите следующее:

  • Обновление не требует действий руками. Ресурсы, настройки модуля и существующие тома не затрагиваются, поды контроллера и узлов только перезапускаются на пересобранных образах.

v0.3.23

Дата релиза: 2026-09-09

Модуль научился сам устанавливать стек iSCSI на узлы, репозитории которых его не дают, позволяет ресурсу HuaweiStorageClass задать долю тома ext4, остающуюся суперпользователю, и отдаёт метрики контроллера.

Ключевые изменения

Изменения в этом релизе:

  • Узел, у которого в репозиториях нет open-iscsi и multipath-tools, больше не остаётся непригодным: модуль разворачивает на нём собственный образ-пакет и запускает демоны из него.
  • Том с ext4 больше не удерживает 5 % своего объёма под суперпользователя; вернуть себе долю можно аннотацией на ресурсе HuaweiStorageClass.
  • Контроллер модуля отдаёт метрики, и Prometheus допущен до их сбора.

Новый функционал

В этом релизе добавлено:

  • Узел, который не может установить open-iscsi и multipath-tools из своих репозиториев, получает их от модуля: ресурс NodeGroupConfiguration распаковывает образ iscsi-tools модуля в /var/lib/deckhouse/sds/csi-huawei и запускает d8-csi-huawei-iscsid.service и d8-csi-huawei-multipathd.service. Пакеты самого узла остаются предпочтительным путём, и узел, на котором они есть, модуль не трогает.
  • Аннотация storage.deckhouse.io/ext4-reserved-percent на ресурсе HuaweiStorageClass задаёт долю тома, удерживаемую под суперпользователя: целое число процентов от 0 до 50. Она действует только на файловые системы семейства ext, класс с fsType: xfs её игнорирует, а при некорректном значении HuaweiStorageClass остаётся с Ready=False и причиной в статусе, вместо того чтобы позже сломать создание тома.
  • Контроллер модуля отдаёт метрики через kube-rbac-proxy: число и длительность реконсиляций, глубину очереди, задержки client-go, вместе с ресурсом ServiceMonitor для Prometheus. Порты настраиваются параметрами модуля controllerMetricsPort и controllerMetricsProxyPort.

Улучшения

В этом релизе улучшено:

  • Когда СХД отказывается создать том, событие ProvisioningFailed теперь несёт сообщение и рекомендацию, которые вернул массив, а не только числовой код ошибки DeviceManager.
  • Строки лога контроллера содержат поля парами ключ-значение и называют компонент, из которого пришли, вместо префикса внутри текста сообщения.

Исправления

В этом релизе исправлено:

  • Prometheus не мог собирать метрики контроллера модуля: стоящему перед ними kube-rbac-proxy не было позволено создавать TokenReview и SubjectAccessReview, поэтому каждый сбор отвергался, а цель оставалась недоступной.
  • Узел мог остаться с csi-node в CrashLoopBackOff и без драйвера в своём объекте CSINode, из-за чего тома на нём не подключались. Проба liveness контейнера узла смотрела на порт, который держит соседний контейнер-регистратор, поэтому выход регистратора уводил за собой и драйвер.

Рекомендации по обновлению

Перед обновлением учтите следующее:

  • Изменение резерва ext4 под суперпользователя применяется к томам, созданным после обновления; уже существующие файловые системы сохраняют тот резерв, с которым были созданы. Руками делать ничего не нужно, а классу, которому резерв нужен, требуется аннотация.
  • Метрики контроллера начинают собираться после того, как обновление пересоздаст поды модуля. Алерт TargetDown, поднятый на контроллер модуля, гаснет сам.

Документация

Изменения в документации:

  • Два новых раздела FAQ: что произойдёт, если репозитории узла не могут предоставить стек iSCSI, и сколько места тома резервируется под суперпользователя.

Зависимости

Обновления зависимостей:

  • deckhouse_lib_helm: 1.72.18 → 1.72.22
    • Приносит исправление пробы liveness для csi-node и контракт RBAC для прокси метрик.

v0.3.22

  • Перед монтированием уже отформатированного тома выполняется проверка файловой системы ext2/3/4 (e2fsck -p): исправимые ошибки устраняются автоматически, том с неустранимыми ошибками больше не монтируется до ручного восстановления
  • В FAQ добавлена процедура восстановления тома, который не монтируется из-за ошибок файловой системы
  • Обновление базовых образов до v2.1.5, Go до 1.26.6 и lib-helm до 1.72.17
  • Внутренние изменения в сборке модуля

v0.3.21

  • Исправление: релизный образ больше не собирается из кэша с устаревшим changelog.yaml — зависимости git-маппинга привязаны к стадии install, на которой файл и копируется
  • Обновление базовых образов до v2.1.4
  • Внутренние изменения в сборке модуля

v0.3.20

  • Исправление: контроллеру выданы права patch на events вместо list — повторная запись события больше не отклоняется по правам

v0.3.19

  • Исправление: multipath перестаёт удерживать I/O после удаления последнего пути к LUN (добавлена настройка flush_on_last_del) — устраняет зависание узла в NotReady
  • В документации убран устаревший пример volumeBindingMode в HuaweiStorageClass, добавлен пример подключения по Fibre Channel
  • Обновление базовых образов до v2.1.2, Go до 1.26.6 и lib-helm до 1.72.14
  • Внутренние изменения в сборке модуля

v0.3.18

  • HuaweiStorageClass и HuaweiStorageConnection публикуют status.conditions и status.observedGeneration, добавлена колонка Ready. Поле status.phase сохраняет прежний набор значений, но теперь вычисляется из условия Ready
  • Обновление базовых образов до v1.3.25, Go 1.26.5 и lib-helm до 1.72.13

v0.3.17

  • Исправление: устранён сбой запуска pod’а csi-node на узлах с containerd v2 — добавлено монтирование hostPath /sys/fs/cgroup

v0.3.16

  • Модуль snapshot-controller больше не обязательная зависимость: VolumeSnapshotClass создаётся только при наличии API snapshot.storage.k8s.io
  • Обновление базовых образов, Go 1.26.5 и lib-helm до 1.72.12
  • Устранена уязвимость в gRPC (GHSA-hrxh-6v49-42gf)
  • Внутренние изменения в сборке модуля

v0.3.15

  • Обновление базовых образов, Go 1.26.5 и lib-helm до 1.72.10
  • Внутренние изменения в сборке модуля

v0.3.14

  • Исправление: устранён циклический перезапуск pod’а csi-node, вызванный синхронной очисткой устаревших устройств
  • Исправление: секреты доступа к registry Deckhouse теперь ограничены активным источником образов
  • Обновление базовых образов, Go 1.26.5 и lib-helm до 1.72.9
  • Внутренние изменения в сборке модуля

v0.3.13

  • Добавлено автоматическое восстановление недоступных бэкендов хранилища Huawei
  • При пробросе меток из HuaweiStorageClass в StorageClass теперь исключаются метки с заданными игнорируемыми префиксами
  • Обновление базовых образов и lib-helm до 1.72.0

v0.3.12

  • Метки из HuaweiStorageClass теперь пробрасываются в управляемый StorageClass Kubernetes
  • Обновление базовых образов, Go 1.25.10 и lib-helm 1.71.12

v0.3.11

  • Внутренние изменения в структуре и сборке модуля

v0.3.10

  • Обновление базовых образов, Go 1.25.10 и lib-helm 1.71.11
  • Внутренние изменения в сборку модуля

v0.3.9

  • Исправления в структуру модуля

v0.3.8

  • Обновлена документация (ревью, исправлены битые ссылки)
  • Изменения в CI: DistroPackagesProxy и env прокси в werf, доработки CVE-сканов (role_name, checkout)
  • Добавлены кластерные роли user-authz в шаблонах

v0.3.7

  • Установка пакетов в NodeGroupConfiguration больше не приводит к падению скрипта при ошибках

v0.3.6

  • Добавлены недостающие точки монтирования в distroless-образах csi-huawei
  • Обновление базовых образов, Go и lib-helm (фикс CVE)
  • Уточнения в документации

v0.3.5

  • Добавлен список поддерживаемых СХД

v0.3.4

  • Изменения для distroless (полный отказ от nsenter, где это возможно)

v0.3.3

  • Правки регрессии при ресайзе тома, возникшей в результате перехода на distroless (исправлено слишком узкое монтирование /sys с хоста)

v0.3.2

  • Правки регрессии при перемонтировании тома, возникшей в результате перехода на distroless (в некоторых случаях не совпадаю WWN у томов)

v0.3.1

  • Правки регрессии при перемонтировании тома, возникшей в результате перехода на distroless (в некоторых случаях не совпадаю WWN у томов)

v0.3.0

  • Перевод модуля в distroless (с активным патчингом оригинального CSI, для этого не приспособленного)
  • Правки в документации
  • Обновление базовых образов и версии golang
  • Обновление хуков, работающих при удалении модуля
  • Отключен запрос Capacity со стороны k8s (CSI не поддерживает выдачу Capacity)

v0.2.9

  • Исправления логики работы с volume snapshots

v0.2.8

  • Правки в документацию
  • Правки в манифестах
  • Исправления логики работы с volume snapshots
  • Обновление базовых образов

v0.2.7

  • Обновлена версия базовых образов

v0.2.6

  • Обновлена версия Go до 1.24.9
  • Обновлена lib-helm до deckhouse_lib_helm-1.64.1

v0.2.5

  • Добавлены файлы release notes

v0.2.4

  • Добавлена информация о необходимости snapshot-controller для работы модуля
  • Добавлен readonlyRootFilesystem для большей безопасности модуля

v0.2.3

  • Добавлена зависимость от snapshot-controller

v0.2.2

  • Добавлена инструкция по использованию СХД Huawei в нескольких Kubernetes кластерах

v0.2.1

  • Обновление CSI до версии v4.11.0
  • Фикс CVE
  • Добавлен хук, удаляющий ненужные ресурсы, остающиеся после удаления модуля

v0.1.1

  • Обновление golang на 1.23.6
  • Убран статус Experimental

v0.1.0

  • Стартовый релиз, базовая функциональность работает