Skip to content

[chore] Remove serverConfigRollHash from public ValkeyNode CRD spec #264

Description

@jdheyburn

Problem

spec.serverConfigRollHash on ValkeyNode is an internal implementation detail used to trigger pod rolls when the server config changes. It is set by the ValkeyCluster controller and was never intended to be part of the public CRD API.

Exposing it in the spec means it appears in kubectl describe, helm templates, and any tooling that introspects the CRD schema. This leaks implementation detail, confuses users, and creates an accidental API contract.

This was noted as a limitation in PR #209.

Proposed fix

Move the config hash into an annotation on the ValkeyNode (or on the managed StatefulSet's pod template) rather than a spec field. The ValkeyCluster controller writes the annotation; the ValkeyNode controller reads it to determine whether a roll is needed.

This removes serverConfigRollHash from the CRD spec entirely. The change must be backwards-compatible (existing clusters must not trigger spurious rolls on upgrade).

Acceptance criteria

  • serverConfigRollHash removed from ValkeyNode spec
  • Config hash stored as an annotation on the ValkeyNode or StatefulSet pod template
  • Existing clusters do not trigger spurious pod rolls after upgrading the operator
  • ValkeyNode CRD schema updated; migration note added to release notes

References

Related GitHub issues (live configuration)

Roll triggers and “what must go through CONFIG SET vs a pod restart” are the same product surface. These issues are the open live config workstream:

Sequencing note: Moving serverConfigRollHash off the public spec (e.g. to an annotation) can stay a small API cleanup if roll semantics stay unchanged. If you instead want one coherent “config propagation” design (live apply + roll fallback + no leaked internals), treat this as part of the same design pass as #210#212 and coordinate there.

Metadata

Metadata

Assignees

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions