argoproj / argo-cd

Declarative Continuous Deployment for Kubernetes
https://argo-cd.readthedocs.io
Apache License 2.0
17.55k stars 5.35k forks source link

Investigate Offering OSS alternatives to Redis in Argo CD installations #17970

Open todaywasawesome opened 5 months ago

todaywasawesome commented 5 months ago

Summary

The Redis License is changing from BSD-3-Clause to RSALv2 and SSPLv1 which are not open source under the OSI definition. We should consider open-source alternatives as a default replacement for Redis.

Motivation

First off, let's recognize @hairmare for bringing the suggestion to switch to ValKey in #17892. There are several reasons we should consider a replacement:

Proposal

There are at least two potential drop-in replacements for Redis that would still maintain compatibility with the Redis API.

Valkey is a CNCF fork of existing Redis BSD-3-Clause meant to be a drop in replacement that will maintain compatibility.

KeyDB is a performance-focused fork with several years of commits. It's primarily based on Redis 6 and does anticipate some impact from the Redis License change.

We should evaluate all potential options, including changing the way we leverage Redis today. We need a spike to review the implications of using these alternatives and measure performance impacts. In the meantime, we should keep in mind:

joebowbeer commented 5 months ago

Affected manifests:

todaywasawesome commented 5 months ago

Worth adding that the result may not be replacing redis at all. We're not required to by the license.

rumstead commented 5 months ago

Worth adding that the result may not be replacing redis at all. We're not required to by the license.

Sharing the discussion where it was brought up

https://github.com/argoproj/argo-cd/discussions/17599#discussioncomment-8901948

madolson commented 5 months ago

Hey, I'm one of the maintainers of Valkey. I just wanted to drop by to add some more context. Feel free to @me with questions if you have any.

Argo CD is several versions behind on Redis as it is and security updates are going to be offered for supported BSD versions of Redis until Redis Community Edition 9.0 which should arrive sometime in 2026.

I want to highlight that most of the top contributors are no longer working on Redis Community Edition, and moved to Valkey. Yes there will be support, but we already have fixes in our 7.2.5 that weren't present in their latest 7.2 release. Also it seems you are on 7.0, which will have its support dropped sooner (Unless they changed their support policy, it'll be in 2025).

We have time to make an informed decision.

I think this is the right framing, don't rush the decision. My guidance so far has been to wait until you would normally do an upgrade and then treat the move to Valkey as a minor version bump. We are fully compatible, so it's easy to test on, but take your time.

ramanNarasimhan77 commented 1 week ago

Hello, I found following matches for "redis" in Argo-CD's go.mod from the master branch:

github.com/alicebob/miniredis/v2 v2.33.0 github.com/go-redis/cache/v9 v9.0.0 github.com/redis/go-redis/v9 v9.6.1

Will these packages work seamlessly with Valkey?

Also, I observed that Valkey has a separate go client - https://github.com/valkey-io/valkey-go?tab=readme-ov-file#features Does it mean that the move to Valkey might require changes in Argo-CD to use a different client?

madolson commented 1 week ago

As of today, the same go client that works with Redis will also work with Valkey. Both Redis and Valkey use the same RESP protocol, so as long as you aren't using any of the new features it should be a drop in replacement. I quickly checked the packages, and they should all work except miniredis. Miniredis is a "fake" redis used for testing, so it should be fine to use.