Skip to content

Conversation

@sgissi
Copy link

@sgissi sgissi commented Nov 23, 2025

Description

This PR supersedes #408, to add a new blog post about the new official Valkey Helm Chart, including reasons for the chart creation and migration steps from the existing chart.

Issues Resolved

Closes #408

Check List

  • [ X ] Commits are signed per the DCO using --signoff

By submitting this pull request, I confirm that my contribution is made under the terms of the BSD-3-Clause License.

@sgissi
Copy link
Author

sgissi commented Nov 23, 2025

@cherukum-Amazon @stockholmux Can you take a look at this update please? It has a dependency on a new release of valkey-helm supporting replicas (valkey-io/valkey-helm#84) which I'm merging shortly.

If you run into issues use the chart repo issues at https://github.com/valkey-io/valkey-helm/issues.
The chart [milestones](https://github.com/valkey-io/valkey-helm/milestones) outlines the planned improvements for the official Valkey Helm chart, which is being actively developed in the open at the [valkey-io/valkey-helm](https://github.com/valkey-io/valkey-helm) repository.

## Next steps

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there an issue link we can add which is tracking these updates?.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also can we add more information on the maintenance and support model for the Valkey helm chart, such as who is responsible for maintaining it and how often updates are expected.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there an issue link we can add which is tracking these updates?

We track the roadmap via Milestones, I'll link the issues against the two main upcoming items (Sentinel and Cluster support).

Also can we add more information on the maintenance and support model for the Valkey helm chart, such as who is responsible for maintaining it and how often updates are expected.

Maintenance/support is essentially the same as the rest of Valkey: users can submit issues and PRs, the maintainers (me and @mk-raven) will merge and release once we have enough significant changes. There is no release cadence per se. Support is mostly via issues or Slack. I listed these in the last paragraph.


* **Small cache for one service.** One Valkey pod, no persistence, ClusterIP service. Fast to start. Good for stateless caches. See the install steps in the [README](https://github.com/valkey-io/valkey-helm#readme).
* **Read-heavy traffic.** One primary with two replicas. Point reads at a separate service if you prefer. Writes still go to the primary. Configure replicas in `values.yaml` and upgrade with Helm.
* **Simple durability.** Turn on PVCs. Pick a storage class your cluster supports. Back up PVCs with your platform’s snapshot tools while chart-level hooks are being designed.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we need to keep this?. - "Simple durability". Do we support turning on PVCs

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, it is mentioned that persistence can be enabled or not for Standalone deployments. For Replicated, PVC support is mandatory (otherwise primary pod being rescheduled might come up without data and wipe out the replicas).

* **TLS encryption** - Enable TLS for encrypted client-server and replica-primary communication, protecting data in transit.

### Essential capabilities in the Valkey Helm Chart.
* **Metrics** - Monitor Valkey instances using the Prometheus exporter sidecar.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does this come out of the box, do we need any configuration in the yaml file which we should call out?.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good point, it is in the chart, but needs to be enabled.

Review the [official chart documentation](https://github.com/valkey-io/valkey-helm/tree/main/valkey) to understand configuration options and match your current Bitnami settings. Bitnami's default configuration deploys one primary with three replicas, protected by a randomly-generated password and without TLS. The migration steps below will configure the official chart the same way — adjust the chart parameters to match your current deployment.

### 1) Find your release and namespace
Make sure to use Bitnami's Valkey chart version 2.0.0 or higher as service name and label have changed from `master` to `primary`.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can you check the grammar on this sentence.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Will do

```
helm history valkey-prod -n acme-valkey
helm rollback valkey-prod <REVISION> -n acme-valkey --wait
Pause all clients connecting to Valkey. Wait a few seconds to ensure all data is replicated and reconfigure the new instance as primary:

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pause all clients connecting to Valkey - i am assuming you mean the valkey-bitnami here, can we clarify?.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Correct, I'll rephrase

OK
$ $NEW_VALKEY_CLI info | grep '^\(role\|master_host\|master_link_status\)'
role:slave
master_host:valkey-bitnami-primary
Copy link

@cherukum-Amazon cherukum-Amazon Nov 25, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is this the instance name, can we map to an existing environment variable?.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also keep environment variables in one place with comments, so its easy to back track.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The shell variable here is misleading. I'll update to create a shell alias instead.


Update all clients to use the new Valkey read-write and read-only endpoints which are exposed as services (`SERVICE.NAMESPACE.svc.cluster.local`). In the example above:

* Read-Write (primary): `valkey.apps-test.svc.cluster.local`

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can we tag the endpoints to environment variables?.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How are these end points generated?. - may be add a inline comment.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated it to a shell that will output the endpoints based on env variables.

Update all clients to use the new Valkey read-write and read-only endpoints which are exposed as services (`SERVICE.NAMESPACE.svc.cluster.local`). In the example above:

* Read-Write (primary): `valkey.apps-test.svc.cluster.local`
* Read-Only (all instances): `valkey-read.apps-test.svc.cluster.local`

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can we tag the endpoints to environment variables?.


```shell
$ kubectl get pods --all-namespaces -l app.kubernetes.io/name=valkey -o custom-columns=Pod:.metadata.name,Namespace:.metadata.namespace,Instance:.metadata.labels.app\\.kubernetes\\.io\\/instance
Pod Namespace Instance
Copy link

@cherukum-Amazon cherukum-Amazon Nov 25, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is 53 to 57 sample outcome from the command?. can we call it out explicitly with a comment

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I updated all shells where output is shown with # * Sample Output *, not sure it is clearer or not. By default if a shell command is listed with a $ in front, it means to show the shell command and output.

$ $NEW_VALKEY_CLI replicaof $SVCPRIMARY 6379
OK
$ $NEW_VALKEY_CLI info | grep '^\(role\|master_host\|master_link_status\)'
role:slave

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what does this statement do?.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Adding comments might help.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

```shell
$ $NEW_VALKEY_CLI config set primaryauth $PASS
OK
$ $NEW_VALKEY_CLI replicaof $SVCPRIMARY 6379

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does this make the primary of the newly created valkey-helm cluster as replica of the valkey-bitnami primary cluster?. Adding a comment will help.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Correct, added

Copy link
Member

@stockholmux stockholmux left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fix the author bio then I can review :)

title = "Valkey Helm: The new way to deploy Valkey on Kubernetes"
date = 2025-11-05
description = "A guide on why the new Valkey Helm chart exists, how it helps, and how to migrate from Bitnami."
authors = ["sgissi","maheshcherukumilli"]
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There is a missing author for sgissi.md @sgissi please add your bio to authors/sgissi.md

This is preventing the site from rendering, so you need to resolve it before I can do a final review.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oops, good point :) Added in the next commit

Signed-off-by: Silvio Gissi <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants