Breaking change: This release requires Kubernetes VolumeSnapshot CRDs and the external snapshot controller to be installed before installing or upgrading this driver. Clusters without these components must install them first. Otherwise, snapshot-related operations and the snapshot resource in the Helm chart will fail to work.
- Add CSI snapshot support, including create, delete, list, and creating volumes from snapshots.
- Add
VolumeSnapshotClassand other snapshot-related resources to the Helm chart and examples. When using Helm, snapshot classes are now created from thecsi.snapshotClassesconfiguration. - Cleaned up RBAC rules in Helm chart.
- Prevent silent volume migration in ControllerPublishVolume.
- Update
github.com/cloudscale-ch/cloudscale-go-sdkfronv6.0.1tov7.0.0. - Bump
github.com/sirupsen/logrusfromv1.9.3tov1.9.4. - Bump
google.golang.org/grpcfromv1.77.0tov1.79.3. - Bump
golang.org/x/sysfromv0.39.0tov0.42.0. - Bump
golang.org/x/oauth2fromv0.35.0tov0.36.0.
- Backport for 3.6.x: Prevent silent volume migration in ControllerPublishVolume.
We regret to inform you that this release includes a refactoring that drops support for
cluster nodes using virtio-blk. Unfortunately, this effect was missed during our review
and only discovered post-release.
If your cluster contains nodes provisioned before October 1st, 2020, or in some
customer-specific setups before mid-2021, we recommend checking the output of
lsblk to ensure that your nodes are not affected. If the output of lsblk
contains volume names in the form vdX, you are still using virtio-blk and
should not update to this release. In this case, we recommend to either
provision new nodes (that will automatically use virtio-scsi) or pin to v3.5.6.
- The minimum supported Kubernetes version is now 1.28.
- Upgrade all sidecars to latest version
- Please note the RBAC changes as a result of this upgrade
- Fix race conditions on stage/unstage/publish/unpublish volume
- Add volume locks to avoid concurrent operations on the same volume
- Add detection if symlinks don't add up to the right volume
- Adjust udevadm calls & reorder them and put them behind a mutex to avoid a potential race condition
- Add
--log-level=(trace|debug|info|warn|error)flag to customize log level
Add support for Kubernetes 1.30- No changes in the release
- Take into account
ControllerUnpublishVolumeRequest.NodeIdinControllerUnpublishVolumeto prevent undesired detach operations during overlapping CSI calls. - Update base image to newer alpine minor version.
- Update base image to newer alpine minor version.
- Update go version used during build.
- Update cloudscale-go-sdk to 4.0.0.
- Bump google.golang.org/grpc from 1.53.0 to 1.56.3.
- Update base image to newer alpine minor version.
- Bump google.golang.org/grpc
- Bump golang.org/x/net
- Update base image to latest alpine version.
- Update CSI spec to 1.6.0
- Use
registry.k8s.ioinstead ofk8s.gcr.io.
- Update all side-cars.
- Package as Helm chart.
- Always set
CLOUDSCALE_MAX_CSI_VOLUMES_PER_NODEin manifest. - Explicitly set
reclaimPolicyandvolumeBindingModefor storage classes to Kubernetes default values.
- Ensure that the device has the expected size in NodeExpandVolume to avoid a race-condition that appeared in testing.
- Minor changes to the integration test suite.
- Update cloudscale-go-sdk to 1.11.0.
- Use k8s mount library.
- Update the alpine base image to 3.15.
- Improve metrics test to accept results within a delta.
- Update the alpine base image to 3.11.
- Use quay.io instead of Docker Hub.
- Run unit tests from Github Actions instead of Travis.
- Ensure go.mod and modules.txt are up to date. Revendor github.com/googleapis.
- Support raw block volume mode (not in conjunction with LUKS for now)
- Update go libraries.
- Add support for Kubernetes 1.22
- Use
csi.cloudscale.ch/zoneinstead ofregionlabel.
- Set default fsType for external provisioner.
- Implement NodeGetVolumeStats
- Update side-cars to support Kubernetes >=1.20.
- Update Makefile and related scripts.
- Update go libraries.
- Update go version used.
- Support all formats of files in
/dev/disk/by-idthat were observed across different Linux distributions.
- Increase the default value of CLOUDSCALE_MAX_CSI_VOLUMES_PER_NODE to 125.
- Add support for nodes that use dev/sdX devices.
- Make the driver zone aware. The driver reads the zone the server is running in from the metadata server
at
http://169.254.169.254.
- Fix: Handle max. volumes per node limit correctly.
- Introduce new option
CLOUDSCALE_MAX_CSI_VOLUMES_PER_NODE.
- Fix a problem with resizing luks-encrypted volumes while they are attached and mounted.
-
Update to CSI spec v1.1.0
-
Add support for Volume Expansion.
- Fix: Volume Attaching sometimes didn't work, please see #9
-
Add support for luks-encrypted volumes
-
Add support for
bulkvolumes -
Read cloudscale.ch access token from environment variable
-
Disable reserved blocks for privileged processes for
ext3andext4volumes -
Update to CSI spec v1.0.0
-
Forked this repository from csi-digitalocean. They have a similar API. Thanks a lot to DigitalOcean - mostly Fatih Arslan - for his work.
This release contains breaking changes, because of the update to the CSI
spec v1.0.0 and the introduction of the csi.cloudscale.ch/volume-type parameter.
Your kubernetes version must be at least v1.13.0 to support CSI spec v1.0.0.
If you have deployed previous versions of the CSI plugin, you cannot update the existing
cloudscale-volume-ssd storage class, because parameters of a storage class cannot be changed.
However, the default behaviour of the CSI plugin is to use volumes of type ssd unless specified
otherwise, so you can just leave the cloudscale-volume-ssd storage class as it is.
Make sure you have the following feature gates activated:
CSINodeInfo=trueCSIDriverRegistry=true
The following features are required but are GA in kubernetes v1.13.0. No explicit feature gate activation is needed:
CSIPersistentVolume=trueMountPropagation=trueKubeletPluginsWatcher=true
- Add support to CSI Spec
v0.3.0. This includes many new changes, make sure to read the Github PR for more information [GH-72] - Check volume limits before provisioning calls [GH-73]
- Rename resource (DaemonSet, StatefulSet, containers, etc..) names and combine the attacher and provisioner into a single Statefulset. [GH-74]
IMPORTANT:This release contains breaking changes, mainly about how thing
are deployed. The minimum Kubernetes version needs to be now v1.10.5.
To upgrade from a prior v0.1.x versions please remove the old CSI plugin
completely and re-install the new one:
# delete old version, i.e: v0.1.5
kubectl delete -f https://raw.githubusercontent.com/cloudscale-ch/csi-cloudscale/master/deploy/kubernetes/releases/csi-cloudscale-v0.1.5.yaml
# install v0.2.0
kubectl apply -f https://raw.githubusercontent.com/cloudscale-ch/csi-cloudscale/master/deploy/kubernetes/releases/csi-cloudscale-v0.2.0.yaml- Makefile improvements. Please check the GH link for more information. [GH-66]
- Validate volume capabilities during volume creation. [GH-68]
- Add version information to logs [GH-65]
- Add logs to mount operations [GH-55]
- Remove description to allow users to reuse volumes that were created by the UI/API [GH-59]
- Handle edge cases from external action, such as Volume deletion via UI more gracefully. We're not very strict anymore in cases we don't need to be, but we're also returning a better error in cases we need to be. [GH-60]
- Fix attaching multiple volumes to a single pod [GH-61]
- Fix passing an empty source to
IsMounted()function duringNodeUnpublish. This would prevent a pod to be deleted successfully in case of a dettached volume, becauseNodeUnpublishwould never return success asIsMounted()was failing. [GH-50]
- Check if mounts are propagated (
MountPropagationis enabled on the host) in Node plugin to prevent silent failing. [GH-46] - Fix
IsMounted()for bind mounts where it was returning false positives. [GH-46] - Log 422 errors for visibility in Controller publish/unpublish methods. [GH-38]
- Fix panicking on errors for nil response objects [GH-34]
- Add method names to each log entry [GH-22]
- Kubernetes deployment uses the
kube-systemnamespace instead of the priordefaultnamespace. Please make sure to delete and re-deploy the plugin. [GH-21] - Change secret name from
dotokentodigitalocean. Please make sure to update your keys (delete old secret and create new secret with namedigitalocean). Checkout the README for instructions if needed. [GH-21] - Make DigitalOcean API configurable via the new
--urlflag [GH-27]
- First release with all important methods of the CSI spec implemented