All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Also check this project's releases for official release notes.
Action required:
If your application is using the rfrs-haproxy-[redisfailvover-name]
service you'll need to use the rfrs-[redis-failover-name]
service which bypassess HAProxy altogether.
- Operator detects and attempts to heal excessive replication connections on the master node. This prevents excessive sentinel resets from the operator when extra-RedisFailvoer replication connnections are present on the "slave" nodes.
Update notes:
This update modifies how the operator generates network policies. In version v2.0.0, there were two separate network policies: one for Redis and another for Redis Sentinels. From version v2.0.1 onwards, the operator will only generate a network policy for Sentinels. It is crucial to be aware that following the upgrade to this version, the existing network policy for Redis instances will persist and must be deleted manually.
- [Set up a new HAProxy service for routing traffic specifically to Redis nodes set as slaves][#40]
Update notes:
This release will change the labels of the HAProxy deployment resource. It's important to note that in API version apps/v1, a Deployment's label selector cannot be changed once it's created. Therefore, any existing HAProxy deployment placed by an <v2.0.0 version of the redis-operator MUST be deleted so the new deployment with the correct labels and selectors can be recreated by redis-operator v2.0.0+
- Cleanup Sentinels when bootstrapping and sentinels are not allowed.
- Prevent connection throttling for more than 256 concurrent client connections
- Bootstrap settings - Add an
enabled
parameter to toggle the bootstrap mode on or off for a RedisFailover. (Defaults totrue
). - Use the new docker bake tooling to build the developer tools image and remove vestigial development targets from the Makefile.
- Fixed support for kubernetes <1.21
- Allow configuration of exporter resource
- Fix persistent volume claim metadata management
- Add arm64,arm,amd64 docker images
Update notes:
Ensure you update the CRD definition since CRD is no longer managed by the operator:
kubectl create -f https://raw.githubusercontent.com/spotahome/redis-operator/master/example/redisfailover/basic.yaml
v1.1.0-rc.1 - 2022-01-12
- Add bootstrap from node
- Custom Resource Definition management is removed from operator logic. It must be added to the API, helm chart manage it now or can be applied with kubectl
- Upgraded libraries to match kubernetes 1.22
- Enable customization for
terminationGracePeriod
- Fix support for redis 6.2>
- Fix ClusterRole compatible with openshift
- Improve reiliability on liveness probes
- Enable customization of nodeSelector and Tolerations
- Enable customization for command and args in exporter
- Improve auth handling
- Support priorityclassname
Thanks all contributors: @alecjacobs5401, @andriilahuta, @chusAlvarez, @Perfect-Web, Ilya Lesikov, @bit-cloner, Gregory Farnell, @technoplayer, @ThickDrinkLots, @ese, @identw, @LukeCarrier, @k3daevin, @dkulchinsky, @lucming, @cndoit18, @hoffoo, @chlins, @obsessionsys
v1.0.0 - 2020-02-24
- Custom Resource Definition moved to
databases.spotahome.com
- Rolling updates are aware of cluster topology and nodes roles to follow minimum impact strategy
- Better readiness probes for redis nodes.
- More customizable options for kubernetes objects.
- Better bootstrap times.
- Improve security with password protected redis and security pod policies.
- Redis 5 as default version
- Update dependencies
For detailed changelogs see rc relases
v1.0.0-rc.5 - 2020-02-07
- Custom annotations for services #216 @alecjacobs5401
- Update redis-exporter #222 @VerosK
- Pod security policy to run as non root #228 @logdnalf
- Custom command renames #234 @logdnalf
- Add fsGroup to security context #215 @ese
- Pod disruption budget lower than replicas #229 @tkrop
- Add password support for readiness probes #235 @teamon
v1.0.0-rc.4 - 2019-12-17
- Update kooper to v0.8.0
- Update kubernetes to v1.15.6
- Add support for
hostNetwork
anddnsPolicy
in Redis and Sentinel pods #212 @paol
v1.0.0-rc.3 - 2019-12-10
Since update logic has been moved to operator, PodManagementPolicy
has been set to Parallel
in redis statefulSet. This improve bootstrap times.
This field is immutable so to upgrade from previous rc releases you need to delete statefulSets manually.
Note: you can use --cascade=false
flag to avoid disruption, pods will be adopted by the new statefulSet created by the operator.
example: kubectl delete statefulset --cascade=false rfr-redisfailover
- Move rolling update strategy to redis-operator to be cluster-aware #203 @chusAlvarez
- Readiness probe check nodes belong to the cluster and are synced #206 @chusAlvarez
- Support label propagation filter #195 @adamhf
- Support for sentinel prometheus exporter #207 @shonge
- Documentation and examples #204 @shonge
- Add RBAC policy to access secrets #208 @hoffoo
v1.0.0-rc.2 - 2019-11-15
- Add custom annotations for pods in the CRD
podAnnotations
@alecjacobs5401 - Add redis authentication @hoffoo
- Configurable imagePullSecret @romanfurst
- Configurable imagePullPolicy @mcdiae
- Support for node selector
nodeSelector
@sergeunity
- Add RBAC policy for the CRD finalizer @mcanevet
- Examples documentation @SataQiu @marcemq
- Chart service labels @timmyers
- Memory requests and limits for sentinel @marcemq
- Execution permissions in shutdown script @glebpom
- Makefile uid passthrough @adamhf
v1.0.0-rc.1 - 2019-05-10
- Minimum Kubernetes version needed is 1.9.
- Custom Resource Definition moved to
databases.spotahome.com
. - API version moved to v1.
- Standardize labels with the Kubernetes recommended ones.
- Update Kubernetes libraries to 1.11.9.
- Update Kooper to v0.5.1.
- Update Golang used to 1.12.
- Use new versioning standard.
- Chart unused values removed.
- Remove double loops for checking Sentinels data in memory.
0.5.8 - 2019-03-26
- Now all errors makes a
redisfailover
be marked as failed on metrics, to prevent that some errors were never alerted.
0.5.7 - 2019-03-06
- Command for Redis and Sentinel containers is now configurable.
- Panic if checking the
StartTime
of a pod that was not started yet (nil pointer exception).
0.5.6 - 2019-02-27
- Add tolerations to Redis and Sentinel pods.
- Improve management of
customConfig
so they admit any type of configuration.
0.5.5 - 2019-02-19
- Create flag to disable exporter probes.
- Increase default memory.
- Improve readability of code.
0.5.4 - 2018-10-15
- Improve the checker to make it more resilient.
- Reduce startup time.
- When force one master, choose the oldest one.
0.5.3 - 2018-09-18
- Limit length of redis-failovers name to prevent errors when creating the redis statefulsets.
- Add set as failure on metrics when cannot fix the status of redis/sentinel by the operator.
- Remove the redis-failover from metrics if deleted.
0.5.2 - 2018-09-04
- Higher
InitialDelaySeconds
probes times.
- Default values for spec and validator (lost when release of 1alpha2 api version).
0.5.1 - 2018-09-03
- Persist Redis data on disk.
0.5.0 - 2018-08-24
- Add redis and sentinel custom configuration array.
- A
ConfigMap
name for the custom configuration is no longer available.
0.4.1 - 2018-08-17
- Elect a new master when the master pod is terminated.
0.4.0 - 2018-07-18
- Persistence for Redis data in persistent volumes is now available.
0.3.0 - 2018-07-03
- Make name of the Redis Operator container configurable.
- Update kooper to v0.3.0, updating the Kubernetes clients to v1.10.5.
0.2.5 - 2018-05-25
- Add the possibility to use a volumen for redis data.
- Use the RedisImage to copy the Sentinel configuration in order to use one image less.
0.2.4 - 2018-05-24
- Add the possibility to set the configMap to be used on both Redis and Sentinel.
- Add the possibility to set the redis/sentinel image.
- Add the possibility to set the redis-exporter image and version.
0.2.3 - 2018-04-06
- Add the possibility to use a
NodeAffinity
.
0.2.2 - 2018-04-06
- Add Prometheus Annotations to Redis Exporter.
0.2.1 - 2018-03-28
- Create a init-container on sentinel pods so the sentinel.conf is writable.
0.2.0 - 2018-02-19
- Use Kooper.
- New API version:
storage.spotahome.com/v1alpha2
.
- Simplified metrics.
- New client that allows interaction with the redis failovers created.
- New ensurer that checks all pieces are created.
- New checker and healer that puts the nodes into their expected state.
- There is no path for upgrade from <0.2.0. You need to create new resources and delete the deprecated CRD resource with
kubectl delete crd redisfailovers.spotahome.com
.
0.1.6 - 2018-02-01
- Add flag to disable
hardaffinity
. - Wait for CDR before running operator.
0.1.5 - 2018-01-03
- Ensure scheduling on different nodes.
- Export port for gather metrics.
- Add service to chart.
- Change waiters so not blocking multiple edits of same resources.
- Only add the redis exporter container if it does not exists.
0.1.4 - 2018-01-02
- Add timeout on waiters.
- Fix WaitForPod unlimited waiting.
0.1.3 - 2017-12-29
- Add/Delete exporter when updating.
- Refactor waiters.
- Change concurrency approach. New default limits.
0.1.2 - 2017-12-18
- Change kind of response when calling sentinel.
- Initial open-sourced release