The module lifecycle stage: Generally available version
The module has requirements for installation
v0.2.34
Release date: 2026-10-29
The module hides Tatlin devices from sds-node-configurator, prepares nodes labelled after their bashible run, takes down multipath maps left without paths, and stages volumes reliably on ALT Linux, RED OS, Debian and Ubuntu nodes.
Highlights
Changes in this release:
- The module keeps a
BlockDeviceFilterthat hides every Tatlin device fromsds-node-configurator: the NVMe-TCP namespaces of other nodes and of other clusters in a shared access group are no longer published as freeBlockDevices on which anLVMVolumeGroupcould be built. - A node labelled for the CSI node plugin after its bashible run is now prepared and gets the node plugin; previously it stayed without
open-iscsi,multipathand the node plugin. csi-nodetakes down Tatlin multipath maps left without paths when it starts, and removes the WWIDs of detached volumes from/etc/multipath/wwids.
New features
This release adds:
- On clusters with
sds-node-configurator, the controller keeps theBlockDeviceFiltercsi-yadro-tatlin-unified-hide-tatlinwith the selectorstatus.blockdevice.storage.deckhouse.io/model NotIn [TATLIN-UNIFIED], which hides every block device of modelTATLIN.UNIFIEDfromsds-node-configurator, whatever the protocol. Every host of annvmeaccess group sees every namespace of the group, including the volumes of other nodes and, if the group is shared, of other clusters. The filter is created as soon as theBlockDeviceFilterresource exists in the cluster, and a changed selector is put back within a minute.
Improvements
This release improves:
- Before
csi-nodeserves requests, it takes down the Tatlin multipath maps that have no active path, no holder and no mount, and removes from/etc/multipath/wwidsthe Tatlin WWIDs that have no map or path left. After a successful iSCSI or FC unstage the volume’s WWID is removed from the file as well. Previously the file grew by a line for every volume ever attached, and a map left behind by an interrupted unstage or by a LUN the array unmapped stayed until a reboot. - When the node’s kernel has no
nvme-tcpmodule, theNodeGroupConfigurationlogs an error that names the missing module and the package that carries it (linux-modules-extra-$(uname -r)on Ubuntu). Previously this went unnoticed, and every NVMe-TCP stage on the node failed later withNVMe discovery failed.
Fixes
This release fixes:
- A node labelled for the CSI node plugin after its bashible had already run the module’s step is now prepared. The hook that computes
dataNodesChecksumhad not run since the move to Go hooks, so labelling a node did not re-run the step, and the node was left withoutopen-iscsi,multipath, the ready label and the CSI node plugin. - On a node without its own
multipath-tools, the module’s package now putsmultipathandmultipathdon the host’sPATHas well asiscsiadm. The node plugin runs them on the host, took the daemon for stopped and staged every iSCSI volume on a single device without a multipath map. NodeUnstageVolumeon ALT Linux disconnects the volume. It looked for the device by the name of the devtmpfs mount, which ALT Linux callsudevfs, found none and reported success with the paths and the multipath map still in place.- The
NodeGroupConfigurationno longer setsmax_sectors_kb 1024for TATLIN devices in/etc/multipath/conf.d/tatlin.conf; the kernel takes the transfer limits the array reports. On the 6.12 kernels of ALT Linux and RED OS, writing the limit while a volume was staged or torn down could deadlock the device queue:NodeUnstageVolumenever returned and the PV stayedReleased. The udev rule that sets the 120-second device timeout is now a single line and applies only to devices of vendorYADROand modelTATLIN; udev used to ignore its first line and set the timeout on any device of modelTATLIN. - NVMe-TCP discovery and connect work on nodes without
/sbin/nvme, wherenvmecomes from the module’snvme-toolspackage in/usr/local/sbin: the NVMe connector now runsnvmeby name fromPATH. Every stage on such a node failed withNVMe discovery failed on every export portandexit status 127. - An NVMe-TCP stage recovers when the node’s NVMe host was registered on the array before
/etc/nvme/hostnqnexisted. Discovery subsystem entries in the discovery log are now ignored, so the stage registers the host again with its NQN instead of failing on every retry. - The first
YadroTatlinUnifiedStorageConnectionof a new installation no longer makes the controller panic while it creates the credentials Secret.
Security updates
Security updates in this release:
- The CSI driver (
csi-tatlin-u) and the hooks (go-hooks) are rebuilt withgolang.org/x/netv0.62.0, closing CVE-2026-78661 and CVE-2026-97045.
Upgrade notes
Before upgrading, note the following:
- Nothing has to be done by hand. On the next bashible run the
NodeGroupConfigurationrewrites/etc/multipath/conf.d/tatlin.confwithoutmax_sectors_kband replaces the TATLIN udev rule. On clusters withsds-node-configurator, its agent deletes theBlockDevices it has published for Tatlin devices once the filter appears. - If an
LVMVolumeGroupwas built on a Tatlin LUN or namespace, itsBlockDevices are deleted as well, and theLVMVolumeGroupreports that they no longer match itsblockDeviceSelector.
v0.2.33
Release date: 2026-10-26
The node plugin no longer brings a detached iSCSI LUN back or leaves multipath maps without paths behind, connects a volume over all of its paths after Tatlin drops the node’s sessions, and registers the node on a newly added array without a restart of csi-node.
Highlights
Changes in this release:
- Detaching an iSCSI volume no longer brings its LUN back on the node: the node plugin scans only the LUN it stages instead of every LUN of every iSCSI session, and a multipath map whose paths are all gone is removed on unstage instead of staying behind with queued I/O.
- An iSCSI volume staged right after Tatlin dropped the node’s sessions is connected over all of its paths: refused logins are retried for up to 30 seconds, and sessions that
iscsidis recovering are waited for instead of being logged out. - A
YadroTatlinUnifiedStorageConnectioncreated aftercsi-nodestarted can be used on the node without restarting the pod: the node is registered on the new array as soon as the driver reads the changed configuration.
New features
This release adds:
- On DKP 1.79 and later, where the Pod Security Standards in system namespaces deny instead of warn, the module ships a
SecurityPolicyExceptionfor the CSI controller and CSI node pods. The controller’s exception allowshostNetwork, which the driver needs to reach the Tatlin management API; the node’s allowshostNetwork, privileged mode, privilege escalation, running as root and thehostPathvolumes the node plugin mounts. The objects are created only when theadmission-policy-engineCRDs are present, so earlier DKP versions are unaffected.
Improvements
This release improves:
- The TATLIN device section that the
NodeGroupConfigurationwrites to/etc/multipath/conf.d/tatlin.confnow setsflush_on_last_del yesanddeferred_remove yes:multipathdremoves a TATLIN map as soon as its last path is deleted, and a flush of a map that a process still holds open is completed when the map is closed instead of failing.
Fixes
This release fixes:
- The node plugin no longer runs
iscsiadm -m node --rescan, which scans every LUN of every iSCSI session, inNodeStageVolume,NodeUnstageVolume,NodePublishVolumeandNodeUnpublishVolume. Run before the controller unmapped a volume, it recreated the volume’s devices, and once the array unmapped it they stayed as a multipath map with no path andqueue_if_no_path. The only scan left is the one before a volume is connected, and it covers only the staged LUN on every logged-in session, including sessions whose last device is already gone. The iSCSI node records the driver logs in through getnode.session.scan = manual, so a login no longer makes the kernel scan every LUN of the new session. NodeUnstageVolumetakes down a multipath map that has no active path: it disables queueing, deletes the map’s paths and removes the map deferred. Previously it retriedmultipath -f, which fails for as long as a process blocked on the queued I/O holds the map open, and the volume could not leave the node. A map that still has an active path is flushed as before.NodeUnstageVolumeafter a restart ofcsi-nodeno longer reports success without disconnecting the volume when the device name kept in the pod is gone. For iSCSI and FC it asks the array for the volume’s WWID and disconnects by it; for NVMe-TCP it finds the namespaces by the NGUID the volume’s access group lists on the array and takes down only the multipath maps (mpath-*) over them, leaving other device-mapper devices such as LVM or dm-crypt alone. Only a 404 from the array means the volume is gone; any other error of the array fails the unstage withUnavailable, and kubelet retries it.- The node plugin no longer logs out of all iSCSI sessions to the array when its counter of staged volumes reaches zero. The counter was seeded from the number of LUNs mapped to the node rather than the volumes staged on it, so the logout could cut the sessions under volumes still mounted on the node.
- Before an iSCSI volume is connected, a portal without a session is logged in to and, while the array refuses the login, retried every 3 seconds for up to 30 seconds; a session that
iscsidis recovering is waited for instead of being logged out and in again. A portal is held off for 5 minutes only when its login timed out or was still refused at the end of the window, and later stages skip it only while the target has another session. Previously every refused portal was held off for 5 minutes and the volume stayed connected over whichever sessions happened to be up. - Every iSCSI session to a target is now recognised. The parser of
iscsiadm -m session -P 2saw only one session per target, so the node plugin took the others for missing and logged them out and in again, although they carried other volumes’ paths; when the array refused the login, the session was lost. - When
multipathdis running, the node plugin adds the LUN’s WWID to/etc/multipath/wwidsbefore the iSCSI scan and the FC connect. Withfind_multipaths yes, paths that appeared before the WWID was known stayed marked as not belonging to a multipath map:sds-node-configuratorcould publish such a path as aBlockDevice, and LVM could activate volumes on it directly. - An FC volume gets a multipath map over all of its paths when other volumes are staged at the same time. The node plugin scans each missing path of the LUN by its channel, target and LUN instead of rescanning the whole host, waits up to 5 seconds for the paths to get a block device, and counts a device only when its WWN matches the LUN’s, rescanning once a device left at that address by an earlier volume.
NodePublishVolumefor a filesystem volume refuses withUnavailablea device that has no usable path, that is, a multipath map without an active path or an NVMe namespace without a live controller in a usable ANA state. It used to runblkid,mkfsormounton such a device, which hung in the kernel and made every later call for the volume end withAborted. Raw block volumes are published as before.- The node is registered on an array whose
YadroTatlinUnifiedStorageConnectionwas created aftercsi-nodestarted. Previously the array had no host for the node untilcsi-nodewas restarted: for iSCSI and FCControllerPublishVolumefailed withcan't find host by nodeID, and NVMe-TCP stages failed after an empty discovery. NVMe-TCP discovery and connect errors now fail the stage with their real reason instead ofdiscovery complete but devices not found. - NVMe-TCP volumes are staged on nodes whose
nvmeis in/usr/local/sbinor/usr/local/bin, where the module’snvme-toolspackage and builds from source put it. The node plugin used to look for it only in/bin,/sbin,/usr/binand/usr/sbin, and every stage failed. NodeGetVolumeStatsno longer reports every NVMe-TCP volume as abnormal withhost is not attached to volume: the node’s host is looked up under its NVMe-TCP name, and the volume counts as attached when one of its access groups lists it.csi-nodestarts after a hard power-off of the node: the stalecsi.sockleft by the previous instance is removed on start. Every new pod used to fail withbind: address already in useuntil the file was removed by hand.- The
logLevelsetting of the module now reaches the CSI driver: itsCSI_LOG_LEVELfollowslogLevelinstead of being fixed atinfo, and the--vargument of the controller and node containers follows it as in the other CSI modules instead of being fixed at5.
Security updates
Security updates in this release:
- The CSI driver (
csi-tatlin-u), the module’s controller, webhooks, scheduler extender and hooks (go-hooks) are rebuilt against patched Go dependencies, closing CVE-2026-78669, CVE-2026-78659, CVE-2026-78660, CVE-2026-78663, CVE-2026-97032, CVE-2026-56851 and, ingo-hooks, CVE-2026-63209.go-hooksno longer containsdocker/distribution, which carried CVE-2026-85747 without a fixed release.
Upgrade notes
Before upgrading, note the following:
- Nothing has to be done by hand. On the next bashible run the
NodeGroupConfigurationupdates/etc/multipath/conf.d/tatlin.confand reloads or restartsmultipathdon the nodes the module serves. Sessions the driver logs in to after the update usenode.session.scan = manual.
v0.2.32
Release date: 2026-10-01
The iSCSI, multipath and NVMe tools on a node now always come from the module’s own packages instead of the distribution’s repositories, and the module grants access to its resources through the RBACv2 roles of DKP 1.78.
Highlights
Changes in this release:
- The
NodeGroupConfigurationno longer asks the node’s package manager foropen-iscsi,multipath-toolsornvme-cli: a node without a route to its repositories no longer waits for them on every bashible run, and the tools a node lacks come from the module’siscsi-toolsandnvme-toolspackages. - On DKP 1.78 and later the module ships the
d8:system-capability:csi-yadro-tatlin-unified:viewandd8:system-capability:csi-yadro-tatlin-unified:editroles forYadroTatlinUnifiedStorageClassandYadroTatlinUnifiedStorageConnection.
New features
This release adds:
- The module ships RBACv2 roles for its cluster-scoped resources
YadroTatlinUnifiedStorageClassandYadroTatlinUnifiedStorageConnection:viewgrantsget,listandwatch,editgrantscreate,update,patch,deleteanddeletecollection. On DKP 1.78 and later they are the capabilitiesd8:system-capability:csi-yadro-tatlin-unified:viewandd8:system-capability:csi-yadro-tatlin-unified:editwithrbac.deckhouse.io/scope: system; on earlier DKP versions the same rules come asd8:manage:permission:module:csi-yadro-tatlin-unified:viewandd8:manage:permission:module:csi-yadro-tatlin-unified:edit.viewis aggregated into the storageviewerrole andeditinto the storagemanagerrole.
Improvements
This release improves:
- The
NodeGroupConfigurationinstalls theiscsi-toolspackage on every node the module serves, andnvme-toolson every such node where NVMe-TCP is configured, instead of trying the distribution’sopen-iscsi,multipath-toolsandnvme-clifirst.iscsi-toolsnow decides for each pair separately: aniscsiadm/iscsidormultipath/multipathdpair the host already has stays the host’s and only its distribution unit is enabled, a missing pair lands under/var/lib/deckhouse/sds/csi-yadro-tatlin-unifiedwith ad8-csi-yadro-tatlin-unified-*unit of its own. A host withopen-iscsibut nomultipath-toolsnow gets the module’smultipathd; previously the module’s package stepped aside as soon as the host had anyiscsiadm.nvme-toolsstill landsnvmeonly on a host that has none. spec.controlPlane.nodeSelectorandspec.dataPlane.nodeSelectorofYadroTatlinUnifiedStorageConnectionare now atomic for server-side apply: a selector is replaced as a whole instead of being merged field by field between two appliers. EverymatchExpressionsitem now requireskeyandoperator; an item without them selected nothing before.
Fixes
This release fixes:
- A node whose own tools changed after the module’s package was installed is set up again on the next bashible run. The package’s install step ran only once per module version, so a tool the host later lost stayed missing until the next release, and a distribution package installed later ran its daemon next to the module’s. The
NodeGroupConfigurationnow compares, foriscsiadm,multipathdandnvme, whether the host and the package provide it, and reinstalls the package when the two no longer agree. - Files that an earlier version of
iscsi-toolsornvme-toolsput outside its own directory, such as the/usr/local/sbin/iscsiadmand/usr/local/sbin/nvmewrappers and the multipath links and plugins, are no longer mistaken for the host’s own after an update and are removed when the package is uninstalled.
Upgrade notes
Before upgrading, note the following:
- Nothing has to be done by hand. Nodes that already run the distribution’s
iscsid,multipathdornvmekeep them; a node that relies on the module’s packages keeps them as well. A node that needs the distribution’s tools from now on has to have them installed by an administrator: on the next bashible run the module notices them and steps aside for that pair.
Docs
Documentation changes:
- The FAQ entry on
open-iscsi,multipath-toolsandnvme-clinow describes where each tool on a node comes from, which files the module’s packages put on the host and how to check which pair a node took from where. - The reference for
YadroTatlinUnifiedStorageClassnow describesspec, and the reference forYadroTatlinUnifiedStorageConnectiondescribes thematchExpressionsitems of both node selectors, in English and Russian.
v0.2.31
Release date: 2026-09-24
Security update: the CSI driver and the module’s hooks are rebuilt against patched grpc and x/crypto.
Highlights
Changes in this release:
google.golang.org/grpcis raised from v1.82.1 to v1.83.2 in the CSI driver (csi-tatlin-u), closing CVE-2026-84303, CVE-2026-84304 and CVE-2026-84445.
Security updates
Security updates in this release:
google.golang.org/grpcis raised from v1.82.1 to v1.83.2 in the CSI driver (csi-tatlin-u), closing CVE-2026-84303, CVE-2026-84304 and CVE-2026-84445.golang.org/x/cryptois raised from v0.53.0 to v0.57.0 in the module’s hooks (go-hooks), closing CVE-2026-56854 (authentication bypass by source address inx/crypto/ssh), CVE-2026-56855 and CVE-2026-78662.
v0.2.30
Release date: 2026-09-14
The module now installs the iSCSI and NVMe userspace itself where a node’s repositories cannot, exports metrics for the controller and the scheduler extender, and no longer hands 5% of every ext4 volume to the superuser.
Highlights
Changes in this release:
- A node whose repositories cannot provide
open-iscsi,multipath-toolsornvme-cliis no longer left unable to attach a volume: the module installs them from package images of its own. - The controller and the scheduler extender export metrics, scraped through the kube-rbac-proxy of their pod; a
ServiceMonitorand aPodMonitorship with the module. - An ext4 volume no longer keeps 5% of its space for the superuser, and a
YadroTatlinUnifiedStorageClasscan ask for a share back with an annotation.
New features
This release adds:
- Where a node’s package manager cannot install
open-iscsiandmultipath-tools, theNodeGroupConfigurationfalls back to the module’s owniscsi-toolsimage: the payload is unpacked under/var/lib/deckhouse/sdsand the daemons come up asd8-csi-yadro-tatlin-unified-iscsid.serviceandd8-csi-yadro-tatlin-unified-multipathd.service. A node that already hasopen-iscsiof its own is left untouched, because a client of one version does not speak to a daemon of another. nvme-cligets a package image and a fallback of its own,nvme-tools, used only where the module is configured for NVMe-TCP. Its fallback is independent of the iSCSI one: a distribution may provide one set and not the other. Withoutnvme-clia node kept no NVMe Qualified Name and the driver reportedinitiators is emptyfor every volume it was asked to publish there.- The controller and the scheduler extender serve metrics behind a kube-rbac-proxy: the component binds on
127.0.0.1and the proxy publishes it over TLS behind an authorization check. AServiceMonitorfor the controller and aPodMonitorfor the extender are part of the module, and the ports are settable through thecontrollerMetricsPort,controllerMetricsProxyPort,schedulerExtenderMetricsPortandschedulerExtenderMetricsProxyPortmodule values. - The
storage.deckhouse.io/ext4-reserved-percentannotation on aYadroTatlinUnifiedStorageClasssets the share of a volume kept for the superuser: a whole number from 0 to 50. It applies only to volumes created after the annotation was set, a class withfsType: xfsignores it, and an invalid value leaves theYadroTatlinUnifiedStorageClasswithReady=Falseand the reason in its status instead of failing volume creation later. Changing the annotation makes the controller recreate the StorageClass, because theparametersof an existing one are immutable in Kubernetes.
Improvements
This release improves:
- An ext4 volume is now formatted with no superuser reserve at all. Every volume this module created before handed ext4’s default 5% to root, because the formatting step passed no
-m; volumes created from now on give that space to the workload. - The controller and the scheduler extender log through one shared logger in the structured format the rest of the fleet uses.
- The default
logLevelis nowINFOinstead ofDEBUG, which is what a cluster that never set it explicitly will get.
Fixes
This release fixes:
- The CSI Pods no longer wait for a
YadroTatlinUnifiedStorageConnectionto exist before they start. Both Secrets they mount are written by the controller while it reconciles a connection, and the chart required those volumes, so on a fresh install every CSI Pod sat inContainerCreatingwithsecret not foundand the driver was down until somebody declared a connection. The mounts are optional now, and kubelet fills them in once the Secrets appear.
Upgrade notes
Before upgrading, note the following:
- Nothing has to be done by hand. The new packages are installed only on nodes where the distribution packages cannot be, and nodes that already carry their own stack are not touched.
- The ext4 superuser reserve changes for volumes created after the update only. Filesystems that already exist keep the 5% they were formatted with; to keep a reserve on new volumes, annotate the class with
storage.deckhouse.io/ext4-reserved-percent=5. - A cluster that relied on the previous default verbosity should set
logLevel: DEBUGin the module configuration explicitly, because the default is nowINFO.
v0.2.29
- Fix: successful mount is no longer considered an error — the image now includes /etc/mtab (a symlink to /proc/self/mounts), whose absence previously caused mount to return exit code 16. The wrap-mount wrapper is now limited to iscsiadm and no longer replaces mount
- Fix: the release image is no longer built from a cache with an outdated changelog.yaml — git-mapping dependencies are tied to the install stage, where the file is copied
- Internal build changes for the module
v0.2.28
- Bugfix: the controller is granted patch on events instead of list - a repeated event write is no longer denied by RBAC
- Bugfix: the VPA is switched from the deprecated Auto update mode to InPlaceOrRecreate
- Optional resources are enabled based on the presence of the CRD in the API, not on the list of enabled modules
- CVE fixes
- Base images updated to v2.1.2, Go to 1.26.6 and lib-helm to 1.72.14
v0.2.27
- YadroTatlinUnifiedStorageClass and YadroTatlinUnifiedStorageConnection publish status.conditions and status.observedGeneration, added Ready column. The status.phase field retains the same set of values, but is now calculated from the Ready condition
- Update base images to v1.3.25, Go 1.26.5 and lib-helm to 1.72.13
v0.2.26
- The snapshot-controller module is no longer a required dependency: VolumeSnapshotClass is created only if the snapshot.storage.k8s.io API is available
- Update base images, Go 1.26.5 and lib-helm to 1.72.12
- Fixed a vulnerability in gRPC (GHSA-hrxh-6v49-42gf)
- Internal changes in module assembly
v0.2.25
- Driver update to vendor version v26.06
- Bugfix: numerous fixes in the operation of the NVMe-over-TCP mode
- Bugfix: secret deckhouse-registry scope limited to active image source
- Fixed vulnerabilities in third-party dependencies
- Internal changes in module assembly
v0.2.24
- Updating container-base images to v1.1.2
v0.2.23
- Fixed mount paths in the scheduler-extender image
- Added instructions for setting up NQN hosts for NVMe-over-TCP to the documentation
v0.2.22
- When forwarding labels from YadroTatlinUnifiedStorageClass to StorageClass, labels with specified ignored prefixes are now excluded
- Updated CSI driver to version yadro/tatlin-unified v26.02
v0.2.21
- Added support for the NVMe-over-TCP protocol in YadroTatlinUnifiedStorageConnection (requires Tatlin Unified Gen2 with firmware 3.2.0 or later and a pre-created access group of type
nvme) - Update base images and lib-helm to 1.72.0
v0.2.20
- Labels from YadroTatlinUnifiedStorageClass are now forwarded to the managed StorageClass Kubernetes
- Update base images, Go 1.25.10 and lib-helm 1.71.12
v0.2.19
- Internal changes in the structure and assembly of the module
v0.2.18
- Update base images, Go 1.25.10 and lib-helm 1.71.11
- Internal changes to the module assembly
v0.2.17
- Changes in CI: DistroPackagesProxy and env proxy in werf, improvements to CVE scans (role_name, checkout)
- Added user-authz cluster roles in templates
v0.2.16
- Installing packages in NodeGroupConfiguration no longer causes the script to crash on errors
- Replacement of yum with bb-dnf, separation of NGC for Debian and Altlinux, unification of naming
v0.2.15
- Added missing mount points in the csi-yadro-tatlin-unified distroless image
- Update base images, Go and lib-helm
v0.2.14
- CVE fixes
- Documentation edits
v0.2.13
- Update base images and golang version
- Updated hooks that work when a module is removed
v0.2.12
- Reworking module manifests
- Update CSI version to 25.12
v0.2.11
- Fix CVE
- Fix manifests
v0.2.10
- Updated base images versions
- Updated Go to 1.24.11
- Updated lib-helm to deckhouse_lib_helm-1.64.10
- Added volumesnapshotclass annotation to StorageClass for compatibility
- Fixed build of CSI
- Updated CSI
v0.2.9
- Updated base images versions
v0.2.8
- Updated Go version to 1.24.9
- Updated lib-helm to deckhouse_lib_helm-1.64.1
v0.2.7
- Updated sources for CVE fix
v0.2.6
- Updated Go version to 1.24.8
- Updated lib-helm to deckhouse_lib_helm-1.63.6
v0.2.5
- Added release notes
- Module refactoring
- Switched to csi service account
- Added support for containerd v2
- Switch to distroless image
v0.2.4
- Added postStop hook for socket file cleanup when stopping csi-node
- Added HA mode support for CSI controller
v0.2.3
- Added nodeSelector parameter to specify nodes with workload
v0.2.0
- CSI update to version 25.04
- Several bug fixes
v0.1.1
- Multiple fixes to comply with style guides
- Migration of hooks to Golang
v0.1.0
- Module rollout after renaming (old one left with deprecated mark)