-
Notifications
You must be signed in to change notification settings - Fork 70
Add blog post: Introduction to Valkey helm chart #408
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,141 @@ | ||
| +++ | ||
| 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." | ||
| author = ["maheshcherukumilli"] | ||
| [extra] | ||
| featured = true | ||
| featured_image = "/assets/media/featured/valkey-helm.webp" | ||
| +++ | ||
|
|
||
| ## Bitnami changes and why it matters | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This doesn't follow proper heading/content hierarchy. Each heading needs to have content immediately following it, not another heading. I would just remove the h2 here and go directly into the next paragraph. |
||
|
|
||
| Bitnami is changing how it publishes and supports many container images and Helm charts (**see [charts issue #35164](https://github.com/bitnami/charts/issues/35164), [charts issue #36215](https://github.com/bitnami/charts/issues/36215), and the [Bitnami Secure Images announcement](https://news.broadcom.com/app-dev/broadcom-introduces-bitnami-secure-images-for-production-ready-containerized-applications)**). Some images move behind new terms, and older tags may not be available as before. If your pipelines pull Bitnami charts or images during deploys, you can see rollouts fail (ImagePullBackOff, auth/404), clusters drift (staging keeps old cached bits while prod can’t pull or resolves a different tag), and “invisible” upgrades when a moved tag points to a new digest. During incidents, rollbacks slow down or fail because the old image isn’t fetchable. Compliance can break, security patches can stall behind limits or paywalls, and you may face surprise licensing or mirroring costs. Net effect: slower releases, harder debugging, inconsistent environments, and higher operational and business risk. | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. unbold the parenthetical starting with "see"
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. put ImagePullBackOff in backticks e.g. |
||
|
|
||
| To reduce the impact on Valkey deployments, the community created an official, project-owned Helm chart (**request: [issue #2371](https://github.com/valkey-io/valkey/issues/2371)**, **chart: [valkey-helm](https://github.com/valkey-io/valkey-helm)**). With the official chart, you can pin chart and image versions, keep `values.yaml` in code, and upgrade on your schedule without depending on vendor policy changes. | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. unbold the parenthetical starting with "request"
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. "owned" is a weird word in open source. Maybe 'project-maintained' ? |
||
|
|
||
| ### Why a Valkey maintained chart helps | ||
|
|
||
| With the official chart, you run what you intend, not what a third party changes. Pin a chart release from the Valkey repo (for example `--version 0.7.7` from [https://github.com/valkey-io/valkey-helm](https://github.com/valkey-io/valkey-helm)) and lock the Valkey image tag in your `values.yaml`. Because the chart follows Valkey releases and docs, you can bump versions in a pull request, test in staging, then promote the same versions to production. If something breaks, use Helm history to roll back with `helm rollback <release> <revision>`. Keep your values in source control, often per environment (`values.staging.yaml`, `values.prod.yaml`), and you get a clean GitOps flow. For details and examples, see the README: https://github.com/valkey-io/valkey-helm#readme. | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Avoid using a raw URLs and link the README Although I think the raw URL makes sense for the 0.7.7 example. |
||
|
|
||
|
|
||
| ### Essential capabilities in the Valkey Helm Chart. | ||
|
|
||
| This chart focuses on the basics. It gives you a clean default and a few knobs you actually need. | ||
|
|
||
| * **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](https://github.com/valkey-io/valkey-helm). | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. link the 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. | ||
| * **Safe deploys.** Pin your chart version and Valkey image tag in `values.yaml`. Use `helm diff` in CI. If probes fail after an upgrade, roll back immediately with Helm. | ||
|
|
||
| ## How to migrate from Bitnami to the Valkey Helm chart (in-place). | ||
|
|
||
| **This path has downtime.** Plan a short **maintenance window** and pause writers during the swap. | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. You use (Readers tend to just copy/paste stuff and you either need to be explicit that you're using a made up name. Alternately, you make it really work by using an environment variable so it becomes very copy/paste friendly) |
||
|
|
||
| ### 1) Find your release and namespace | ||
|
|
||
| ``` | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Split this in two code blocks - one for |
||
| helm list --all-namespaces# Example: NAME=valkey-prod NAMESPACE=acme-valkey | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The example comment isn't evident. What I would do is just have Then a sentence explanation (not in a code block) with something like
|
||
| kubectl get pods,svc,sts,pvc -n acme-valkey | ||
|
|
||
| ``` | ||
|
|
||
| ### 1) Back up and capture current values | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. you have 2 |
||
|
|
||
| ``` | ||
| helm get values valkey-prod -n acme-valkey -o yaml > current-values.yaml# Also take an AOF/RDB or storage snapshot | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Add a note about swapping in your real namespace. I also don't understand the comment. Maybe that need more explanation? |
||
|
|
||
| ``` | ||
|
|
||
| ### 2) Add the Valkey-helm repo | ||
|
|
||
| ``` | ||
| helm repo add valkey https://valkey.io/valkey-helm/ | ||
| helm repo update | ||
| ``` | ||
|
|
||
| ### 3) Prepare migration overrides | ||
|
|
||
| Match names so the new chart **reuses the same PVCs and Services**. Create `migrate-values.yaml`: | ||
|
|
||
| ``` | ||
| # Set to the names your Bitnami release created | ||
| nameOverride: "<bitnami-short-name>" # e.g., "valkey" | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. where do they get information in the angle brackets? |
||
| fullnameOverride: "<bitnami-full-name>" # e.g., "valkey-master" | ||
| service: | ||
| name: "<existing-service-name>" # e.g., "valkey" | ||
| port: 6379 | ||
| persistence: | ||
| enabled: true | ||
| size: "<existing-pvc-size>" # e.g., "8Gi" | ||
| storageClass: "<existing-class-or-null>" | ||
|
|
||
| ``` | ||
|
|
||
| Tip: confirm with | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Love the confirmation but what should a reader expect to get back out of this? |
||
|
|
||
| ``` | ||
| kubectl get sts,svc,pvc -n acme-valkey -o wide | ||
| ``` | ||
|
|
||
| ### 4) Dry run (recommended) | ||
|
|
||
| ``` | ||
| helm upgrade valkey-prod valkey/valkey \ | ||
| -n acme-valkey \ | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. remind ther user about |
||
| -f current-values.yaml \ | ||
| -f migrate-values.yaml \ | ||
| --dry-run | ||
| ``` | ||
|
|
||
| ### 5) Enter maintenance window (pause writes) | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. What does a user do here? You need something under this heading or integrate the maintenance window under a different heading. |
||
|
|
||
| ### 6) Perform the in-place swap | ||
|
|
||
| ``` | ||
| helm upgrade valkey-prod valkey/valkey \ | ||
| -n acme-valkey \ | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. remind users to replace |
||
| -f current-values.yaml \ | ||
| -f migrate-values.yaml \ | ||
| --atomic --wait --timeout 10m | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. what |
||
| ``` | ||
|
|
||
| `--atomic` will auto-rollback if health checks fail. | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Move this above the code block |
||
|
|
||
| ### 7) Verify and reopen traffic | ||
|
|
||
| ``` | ||
| helm status valkey-prod -n acme-valkey | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. remind the user to replace |
||
| kubectl get pods,svc,sts,pvc -n acme-valkey | ||
| ``` | ||
|
|
||
| ### Rollback (if needed) | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Explain this further - when do you roll back? When is it needed? what should they look for? (and remind the user!) |
||
|
|
||
| ``` | ||
| helm history valkey-prod -n acme-valkey | ||
| helm rollback valkey-prod <REVISION> -n acme-valkey --wait | ||
|
|
||
| ``` | ||
|
|
||
| **Notes** | ||
|
|
||
| * PVC reuse depends on matching names; `fullnameOverride` is key. | ||
| * Keep ports and Service names the same to avoid app changes. | ||
| * Copy auth/TLS settings into the new chart before the swap. | ||
|
|
||
| If you run into issues use the chart repo issues at https://github.com/valkey-io/valkey-helm/issues. | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. link the repo instead of having a URL |
||
|
|
||
| ## Next steps | ||
|
|
||
| This is the rough plan. We will keep the work visible in the repo at [https://github.com/valkey-io/valkey-helm](https://github.com/valkey-io/valkey-helm). | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Why is this a rough plan? What does that mean? Shorten the link to text to
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Change 'We will keep the work visible in the repo' to something like 'All development on this Helm chart occurs in the open'. (The future tense isn't correct in the original and I like to avoid conusing 'we' statements). |
||
|
|
||
| * **Cluster mode.** Make it easy to run primaries and replicas across slots with sane defaults. | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Do any of these have links to issues? |
||
| * **Security.** Expose TLS, auth, and Secrets cleanly in values, with copy-paste examples. | ||
| * **Observability.** Add a metrics toggle (Prometheus exporter and sample dashboards). | ||
| * **Backups.** Provide a simple path to schedule snapshots and store them in S3 or GCS. | ||
| * **Upgrades.** Publish notes tied to Valkey releases. Add hooks and checks so failures are obvious and quick to revert. | ||
| * **Docs.** Keep them short. Add clear examples. Link to deeper guides only when needed. | ||
|
|
||
| If you currently rely on Bitnami, test this chart in a dev cluster and try your normal workflows. If something is missing, open an issue at [https://github.com/valkey-io/valkey-helm/issues](https://github.com/valkey-io/valkey-helm/issues). Once you try out the official Valkey helm chart please share feedback so the chart grows in the right direction. | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. change the link text to 'valkey-io/valkey-helm' |
||
|
|
||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. ditch the extra lines at the end please |
||
|
|
||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. something is wonky with the horizontal spacing. The plus sign is centred perfectly but the helm logo is far closer to the right side of the plus than the valkey logo is to the left side of the plus. Also each blue is every so slightly different. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Your bio isn't showing so change 'author' to 'authors'