Releases: xphyr/synology-csi
v1.5.1-alpha
THIS IS AN ALPHA RELEASE
- Made change to how we handle nfsClientAccess lists. Previously we would set up a static entry as part of the client-config.yaml file. We are now settings this as a part of the storageclass definition. This allows for better control over the nfsClientAccess list and allows for the use of CIDR notation and wildcard notation.
- NOTE: This is a "breaking change". You will need to update your storageclass definition file to include the nfsClientAccess list, if you need this feature. If you do not include the nfsClientAccess list, the default value is "node" which reverts to the upstream behavior of only allowing the node to access the share.
v1.5.0
v1.5.0
- Merged PR 3 from @ressu brining code up to sync with the upstream Synology driver
- Added new function to synocli to get list of targets
- NOTE: The following changes have been made by Antigravity and the Gemini 3 Pro AI agent in an attempt to improve the code quality and fix some issues.
- Critical Concurrency Fix: Added mutex locking to
DsmServiceto prevent race conditions during concurrent volume operations. - Refactoring: Removed global variables in
main.go. Configuration is now properly encapsulated in aConfigstruct and passed to the driver. - Code Quality:
- Introduced
DSMClientinterface for better modularity and testing support. - Updated
.golangci.ymlwith a comprehensive set of linters. - Addressed numerous linting issues including whitespace cleanup and variable naming.
- Introduced
- Release Process:
- Enhanced CI: Added
go testandgolangci-lintto the GitHub Actions CI workflow to ensure code quality on every push. - Security:
- Enabled Container Image Signing using
cosign(Keyless signing). - Added SBOM (Software Bill of Materials) generation for all release artifacts.
- Enabled Container Image Signing using
- Build Hygiene: Removed mutating hooks (e.g.,
go mod tidy) from the release pipeline to ensure immutable builds.
- Enhanced CI: Added
- Critical Concurrency Fix: Added mutex locking to
v1.5.0-alpha
This is a PRE-RELEASE I would suggest not using it just yet. I am testing a large number of things to try and make this a more sustainable project for me to keep running, including a lot of code cleanup and adding in linters and formatters to clean up the code. This will make this code base diverge from the upstream a fair amount. Hopefully, it will result in a more stable project.
v1.5.0
Merged PR 3 from @ressu brining code up to sync with the upstream Synology driver
NOTE: The following changes have been made by Antigravity and the Gemini 3 Pro AI agent in an attempt to improve the code quality and fix some issues.
Critical Concurrency Fix: Added mutex locking to DsmService to prevent race conditions during concurrent volume operations.
Refactoring: Removed global variables in main.go. Configuration is now properly encapsulated in a Config struct and passed to the driver.
Code Quality:
Introduced DSMClient interface for better modularity and testing support.
Updated .golangci.yml with a comprehensive set of linters.
Addressed numerous linting issues including whitespace cleanup and variable naming.
Release Process:
Enhanced CI: Added go test and golangci-lint to the GitHub Actions CI workflow to ensure code quality on every push.
Security:
Enabled Container Image Signing using cosign (Keyless signing).
Added SBOM (Software Bill of Materials) generation for all release artifacts.
Build Hygiene: Removed mutating hooks (e.g., go mod tidy) from the release pipeline to ensure immutable builds.
v1.4.5
v1.4.4
v1.4.3
Updated description to include the kubernetes cluster name to help in resolving where a lun is in use if you have multiple clusters. This will update the description to have the following <clusterName>/<namespace>/<pvcname> This will help in identifying what cluster a LUN or share belongs to if you have multiple clusters. If you do not supply a clusterName the original description of <namespace>/<pvcname> will be used
v1.4.2
Added support for using a dedicated subnet for storage access. In prior releases if you were connecting to a Synology array over a dedicated subnet, NFS would not work due to NFS ACLs. There is now a "clientsubnetoverride" as part of the client-info.yaml file which will allow you to override the NFS client permissions to a subnet as defined in CIDR notation.
Changelog
v1.4.1
v1.4.0
v1.4.0
This release introduces potentially BREAKING CHANGES If you are converting from the Upstream synology/synology-csi driver or a prior version of xphyr/synology-csi driver please read the following.
- All go pkg imports are now pointed to xphyr/synology-csi
- Support for Kubernetes prior to v1.25 has been dropped. Kubernetes 1.20 is over 5.5 years old, and its EoL was February of 2022
- removed deployment files for kubernetes 1.19 and kubernetes 1.20
- In order to start code cleanup, I have removed code that is duplicated by go built in packages such as
strconv.ParseBool(). This means that use of the term "yes" in any configuration file is NO LONGER SUPPORTED. If your storageClass definition contains the word "yes" or "no" for settings, you need to update to "true" or "false". This also aligns with kubernetes defaults for boolean values - By default the Synology RecycleBin is DISABLED for NFS and SMB shares.
- NOTE: This is a "breaking change". Previous releases enabled the recyclebin by default. This causes issues with many apps in K8s, so going forward all NEW shares will have the recyclebin disabled by default. You can enable the recyclebin by setting
recycleBin: truein the storageClass definition file. - NOTE: This is also "breaking change". Previous releases with the recyclebin enabled an option that only allowed "Administrator" access to the files in the recycleBin. This causes issues with many apps in K8s, so going forward all NEW shares that have the recyclebin enabled will allow anyone access to the recycleBin. You can change this recyclebin by setting
recycleBinAdminOnly: truein the storageClass definition file.
- NOTE: This is a "breaking change". Previous releases enabled the recyclebin by default. This causes issues with many apps in K8s, so going forward all NEW shares will have the recyclebin disabled by default. You can enable the recyclebin by setting
- removed the final deprecated function calls from k8s.io/mount-utils from code base
v1.4.0-alpha2
Fixed issues with test file imports