fleet
fleet copied to clipboard
Bundle containing PersistentVolumeClaim that uses dynamic provisioning is broken due to changing volumeName
Is there an existing issue for this?
- [X] I have searched the existing issues
Current Behavior
After the volume is dynamically provisioned, any future changes to the bundle will throw result in an error because fleet keeps trying to replace the generated volumeName
with empty string:
failed to replace object: PersistentVolumeClaim "<pvc-name>" is invalid: spec: Forbidden: spec is immutable after creation except resources.requests for bound claims
core.PersistentVolumeClaimSpec{
AccessModes: {"ReadWriteOnce"},
Selector: nil,
Resources: {Requests: {s"storage": {i: {...}, s: "50Mi", Format: "BinarySI"}}},
- VolumeName: "pvc-e05dd9ef-af4e-4959-9b07-7ed903d9fc75",
+ VolumeName: "",
StorageClassName: &"harvester",
VolumeMode: &"Filesystem",
... // 2 identical fields
}
I tried following this guide and added this diff entry (under bundle spec
) but it did nothing:
diff:
comparePatches:
- apiVersion: v1
kind: PersistentVolumeClaim
name: <pvc-name>
operations:
- op: remove
path: /spec/volumeName
Expected Behavior
Fleet supports dynamically provisioned volumes, maybe with a diff workaround. But I've searched everywhere and can't find any mention of anyone using fleet with dynamic volumes. Even the force
option does not help.
Steps To Reproduce
- Create a bundle with a dynamically provisioned PersistentVolumeClaim
- Wait until claim is fulfilled with a volume
- Try updating the bundle
- See that error is thrown and bundle never updates again
Environment
- Architecture: amd64
- Fleet Version: 0.5.0
- Cluster:
- Provider: RKE2 on Rancher/Harvester stack
- Options: 3 etcd+control nodes, 2 workers, using Harvester's storage provider
- Kubernetes Version: 1.24.7+rke2r1
Logs
No response
Anything else?
The only workaround I've found is to copy the generated PV name into the bundle git, but I don't think that's a sufficient long-term solution.