github valkey-io/valkey-operator v0.4.0

one day ago

⚠️ This contains a couple of breaking changes in how the ValkeyCluster spec is defined.

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: Disabled

If 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: DoNotSchedule

Then you will want to use this instead:

spec:
  scheduling:
    node:
      spread:
        shard:
          mode: Required

This 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: Cluster

spec.podDisruptionBudget: Disabled is now the equivalent of:

spec:
  podDisruptionBudget:
    mode: Disabled

Added

  • priorityClassName to ValkeyCluster.spec
  • terminationGracePeriodSeconds to ValkeyCluster.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

Full Changelog: v0.3.0...v0.4.0

Don't miss a new valkey-operator release

NewReleases is sending notifications on new releases.