Notably updates below. A big thank you to the contributors in this release! 🎉
Breaking
New spec.scheduling API
We have moved these fields from the spec:
spec:
affinity:
tolerations:
topologySpreadConstraints:
nodeSelector:
priorityClassName:They are now located under the spec.scheduling field:
spec:
scheduling:
affinity:
tolerations:
topologySpreadConstraints:
nodeSelector:
priorityClassName:We have also introduced first-class support for node spread topologies:
spec:
scheduling:
node:
spread:
shard:
mode: Disabled
primaries:
mode: Disabled
pods:
mode: DisabledIf you were previously using this configuration to prevent pods in a shard colocating on the same node:
spec:
topologySpreadConstraints:
- maxSkew: 1
topologyKey: kubernetes.io/hostname
whenUnsatisfiable: DoNotScheduleThen you will want to use this instead:
spec:
scheduling:
node:
spread:
shard:
mode: RequiredThis now uses a pod anti affinity under the hood instead of a topology spread constraint. Switching to this prevents a conflict in constraints should another be defined against the topology key used for spreading on hosts, against a whenUnsatisfiable condition.
See the Scheduling docs for more info:
podDisruptionBudget refactor
spec.podDisruptionBudget is no longer a string but now a struct.
spec.podDisruptionBudget: Managed is now the equivalent of:
spec:
podDisruptionBudget:
mode: Clusterspec.podDisruptionBudget: Disabled is now the equivalent of:
spec:
podDisruptionBudget:
mode: DisabledAdded
priorityClassNametoValkeyCluster.specterminationGracePeriodSecondstoValkeyCluster.spec- You can now pull in valkey-operator as a go module via
go get github.com/valkey-io/valkey-operator
Fixed
- Resharding via atomic slot migration now works again
What's Changed
- chore(deps): bump docker/build-push-action from 7.2.0 to 7.3.0 by @dependabot[bot] in #291
- test: add default user password for e2e cluster test by @tkarger in #292
- feat: add priorityClassName to ValkeyCluster and ValkeyNode specs by @Sagar2366 in #294
- feat: configurable terminationGracePeriodSeconds for graceful failover by @melancholictheory in #271
- chore: Permit operator user to execute ROLE cmd by @jdheyburn in #298
- refactor(api)!: move scheduling fields under spec.scheduling by @jdheyburn in #301
- refactor!: convert podDisruptionBudget to struct with mode field by @jdheyburn in #308
- fix: allow _replication user to apply atomic slot migration by @sandeepkunusoth in #306
- Updated issue templates [bug_report and feature_request] by @sandeepkunusoth in #179
- docs: rewrite dev.guide for local runs using kind and add macOS support by @bjosv in #193
- feat: implement scheduling against node axis by @jdheyburn in #310
- fix!: Rename go module to github.com/valkey-io/valkey-operator by @deepakpunjabi in #316
- fix: scheduling correct internal imports by @jdheyburn in #322
- fix: stop updating workloads on every reconcile by owning API-server defaults by @matka12 in #317
New Contributors
- @tkarger made their first contribution in #292
- @Sagar2366 made their first contribution in #294
- @matka12 made their first contribution in #317
Full Changelog: v0.3.0...v0.4.0