I just attempted to add snapshot configuration after having already deployed a Dragonfly cluster.
Ie. I added the following to my Dragonfly manifest:
snapshot:
cron: "*/5 * * * *" # every five minutes
persistentVolumeClaimSpec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
After pushing the change, nothing happened, but I found the following error in the operator logs:
ERROR Reconciler error {"controller": "Dragonfly", "controllerGroup": "dragonflydb.io", "controllerKind": "Dragonfly", "Dragonfly": {"name":"dragonfly-dragonfly","namespace":"default"}, "namespace": "default", "name": "dragonfly-dragonfly", "reconcileID": "05775989-00dd-418f-9236-f53391386ab4", "error": "failed to reconcile dragonfly resources: failed to update resource: StatefulSet.apps \"dragonfly-dragonfly\" is invalid: spec: Forbidden: updates to statefulset spec for fields other than 'replicas', 'ordinals', 'temp late', 'updateStrategy', 'persistentVolumeClaimRetentionPolicy' and 'minReadySeconds' are forbidden"}
A more sophisticated strategy for statefulset management would be necessary to allow this kind of change. Eg. have the operator create one statefulset per replica, which could then allow replacing existing statefulsets one by one.
If that sort of thing is out of scope for the operator maybe a validating webhook could be implemented to deny this illegal change instead?
I just attempted to add
snapshotconfiguration after having already deployed a Dragonfly cluster.Ie. I added the following to my
Dragonflymanifest:After pushing the change, nothing happened, but I found the following error in the operator logs:
ERROR Reconciler error {"controller": "Dragonfly", "controllerGroup": "dragonflydb.io", "controllerKind": "Dragonfly", "Dragonfly": {"name":"dragonfly-dragonfly","namespace":"default"}, "namespace": "default", "name": "dragonfly-dragonfly", "reconcileID": "05775989-00dd-418f-9236-f53391386ab4", "error": "failed to reconcile dragonfly resources: failed to update resource: StatefulSet.apps \"dragonfly-dragonfly\" is invalid: spec: Forbidden: updates to statefulset spec for fields other than 'replicas', 'ordinals', 'temp late', 'updateStrategy', 'persistentVolumeClaimRetentionPolicy' and 'minReadySeconds' are forbidden"}A more sophisticated strategy for statefulset management would be necessary to allow this kind of change. Eg. have the operator create one statefulset per replica, which could then allow replacing existing statefulsets one by one.
If that sort of thing is out of scope for the operator maybe a validating webhook could be implemented to deny this illegal change instead?