Skip to content

Breaking change with chart v3.15.1 attempts to update StorageClass parameters #5767

@Starttoaster

Description

@Starttoaster

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 fuse or kernel. for rbd its
    krbd or rbd-nbd) :
  • Kubernetes cluster version : 1.34.1
  • Ceph cluster version : 18

Steps to reproduce

Steps to reproduce the behavior:

  1. Setup details: Install ceph-csi from 3.15.0 or earlier
  2. Update to 3.15.1
  3. 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingcomponent/deploymentHelm chart, kubernetes templates and configuration Issues/PRs

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions