-
Notifications
You must be signed in to change notification settings - Fork 591
Description
Describe the bug
v3.15.1 of the RBD chart (and perhaps the CephFS chart) attempts to update the storage class parameters, adding the following:
parameters:
...
csi.storage.k8s.io/controller-publish-secret-name: csi-rbd-secret
csi.storage.k8s.io/controller-publish-secret-namespace: <helm release namespace>
...
Any existing installation of ceph-csi-rbd will be unable to update, because these storage class parameters are unset, and the parameters are immutable.
This is not called out as a breaking change in the release notes. And an update from a patch release is not usually expected to be a breaking change according to SemVer conventions.
Environment details
- Image/version of Ceph CSI driver : n/a
- Helm chart version : Upgrading from <=3.15.0 to 3.15.1
- Kernel version : n/a
- Mounter used for mounting PVC (for cephFS its
fuseorkernel. for rbd its
krbdorrbd-nbd) : - Kubernetes cluster version : 1.34.1
- Ceph cluster version : 18
Steps to reproduce
Steps to reproduce the behavior:
- Setup details: Install ceph-csi from 3.15.0 or earlier
- Update to 3.15.1
- See error
Actual results
Received this output from helm on the upgrade:
Error: UPGRADE FAILED: cannot patch "ceph-nvme" with kind StorageClass: StorageClass.storage.k8s.io "ceph-nvme" is invalid: parameters: Forbidden: updates to parameters are forbidden.
Expected behavior
I expected to be able to update to 3.15.1
Additional context
Here's our StorageClass output from helm template on the 3.15.0 version of the chart:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: ceph-nvme
labels:
app: ceph-csi-rbd
chart: ceph-csi-rbd-3.15.0
release: release-name
heritage: Helm
provisioner: rbd.csi.ceph.com
parameters:
clusterID: <cluster ID>
imageFeatures: layering
pool: k8s-nvme
csi.storage.k8s.io/provisioner-secret-name: csi-rbd-secret
csi.storage.k8s.io/provisioner-secret-namespace: ceph-csi
csi.storage.k8s.io/controller-expand-secret-name: csi-rbd-secret
csi.storage.k8s.io/controller-expand-secret-namespace: ceph-csi
csi.storage.k8s.io/node-stage-secret-name: csi-rbd-secret
csi.storage.k8s.io/node-stage-secret-namespace: ceph-csi
csi.storage.k8s.io/fstype: ext4
reclaimPolicy: Delete
allowVolumeExpansion: true
And here it is on 3.15.1:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: ceph-nvme
labels:
app: ceph-csi-rbd
chart: ceph-csi-rbd-3.15.1
release: release-name
heritage: Helm
provisioner: rbd.csi.ceph.com
parameters:
clusterID: <cluster ID>
imageFeatures: layering
pool: k8s-nvme
csi.storage.k8s.io/provisioner-secret-name: csi-rbd-secret
csi.storage.k8s.io/provisioner-secret-namespace: ceph-csi
csi.storage.k8s.io/controller-expand-secret-name: csi-rbd-secret
csi.storage.k8s.io/controller-expand-secret-namespace: ceph-csi
csi.storage.k8s.io/controller-publish-secret-name: csi-rbd-secret
csi.storage.k8s.io/controller-publish-secret-namespace: ceph-csi
csi.storage.k8s.io/node-stage-secret-name: csi-rbd-secret
csi.storage.k8s.io/node-stage-secret-namespace: ceph-csi
csi.storage.k8s.io/fstype: ext4
reclaimPolicy: Delete
allowVolumeExpansion: true
Note the addition of several new parameters. As such, we're unable to update to the latest release.