feat: Add incubator valkey chart scaffolded from stable redis (#44984)

This PR introduces a new `charts/incubator/valkey` chart using
`charts/stable/redis` as the baseline, so Valkey has an incubator chart
with equivalent defaults and structure. The chart metadata and docs were
minimally adapted to Valkey while preserving Redis-compatible runtime
behavior where required by the upstream image.

- **Chart bootstrap (redis → valkey)**
- Added `charts/incubator/valkey` by copying the stable Redis chart
layout and assets (`templates`, `ci`, icons, helmignore, values).
- Set chart identity and train to incubator in `Chart.yaml` (`name:
valkey`, train annotations updated).

- **Metadata and documentation alignment**
- Updated chart URLs/sources/icon/install/docs references from Redis
paths to Valkey/incubator paths.
- Replaced inherited Redis changelog history with a fresh initial Valkey
entry.

- **Valkey-specific defaults with compatibility retained**
  - Switched image repository to `docker.io/bitnamisecure/valkey`.
  - Updated data mount path to `/bitnami/valkey`.
- Kept `REDIS_*` env variable usage (with explicit compatibility note)
to match Bitnami Valkey image conventions.
- Updated loading-status strings and health persistence key naming for
Valkey consistency.
- Updated CI override from `redisPassword` to `password` to match chart
values.

```yaml
# charts/incubator/valkey/Chart.yaml
annotations:
  truecharts.org/train: incubator
name: valkey

# charts/incubator/valkey/values.yaml
image:
  repository: docker.io/bitnamisecure/valkey
volumeClaimTemplates:
  data:
    mountPath: "/bitnami/valkey"
```

> [!WARNING]
>
> <details>
> <summary>Firewall rules blocked me from connecting to one or more
addresses (expand for details)</summary>
>
> #### I tried to connect to the following addresses, but was blocked by
firewall rules:
>
> - `oci.trueforge.org`
> - Triggering command: `/usr/local/bin/helm helm dependency build` (dns
block)
>
> If you need me to access, download, or install something from one of
these locations, you can either:
>
> - Configure [Actions setup
steps](https://gh.io/copilot/actions-setup-steps) to set up my
environment, which run before the firewall is enabled
> - Add the appropriate URLs or hosts to the custom allowlist in this
repository's [Copilot coding agent
settings](https://github.com/trueforge-org/truecharts/settings/copilot/coding_agent)
(admins only)
>
> </details>

<!-- START COPILOT CODING AGENT TIPS -->
---

 Let Copilot coding agent [set things up for
you](https://github.com/trueforge-org/truecharts/issues/new?title=+Set+up+Copilot+instructions&body=Configure%20instructions%20for%20this%20repository%20as%20documented%20in%20%5BBest%20practices%20for%20Copilot%20coding%20agent%20in%20your%20repository%5D%28https://gh.io/copilot-coding-agent-tips%29%2E%0A%0A%3COnboard%20this%20repo%3E&assignees=copilot)
— coding agent works faster and does higher quality work when set up for
your repo.

---------

Signed-off-by: Kjeld Schouten <info@kjeldschouten.nl>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: PrivatePuffin <7613738+PrivatePuffin@users.noreply.github.com>
Co-authored-by: Kjeld Schouten <info@kjeldschouten.nl>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
This commit is contained in:
Copilot
2026-02-15 12:27:25 +01:00
committed by GitHub
parent cfbcf2453e
commit b21ce0e1f5
10 changed files with 291 additions and 0 deletions
+32
View File
@@ -0,0 +1,32 @@
# Patterns to ignore when building packages.
# This supports shell glob matching, relative path matching, and
# negation (prefixed with !). Only one pattern per line.
.DS_Store
# Common VCS dirs
.git/
.gitignore
.bzr/
.bzrignore
.hg/
.hgignore
.svn/
# Common backup files
*.swp
*.bak
*.tmp
*~
# Various IDEs
.project
.idea/
*.tmproj
.vscode/
# OWNERS file for Kubernetes
OWNERS
# helm-docs templates
*.gotmpl
# docs folder
/docs
# icon
icon.png
icon.webp
icon-small.webp
+4
View File
@@ -0,0 +1,4 @@
---
title: Changelog
pagefind: false
---
+45
View File
@@ -0,0 +1,45 @@
annotations:
artifacthub.io/links: |-
- name: support
url: https://discord.com/invite/tVsPTHWTtr
truecharts.org/category: unsorted
truecharts.org/max_helm_version: "3.17"
truecharts.org/max_kubernetes_version: 1.32.0
truecharts.org/min_helm_version: "3.14"
truecharts.org/min_kubernetes_version: 1.24.0
truecharts.org/train: incubator
trueforge.org/category: database
trueforge.org/max_helm_version: "4.1"
trueforge.org/max_kubernetes_version: 1.35.0
trueforge.org/min_helm_version: "3.14"
trueforge.org/train: incubator
apiVersion: v2
appVersion: latest
dependencies:
- name: common
version: 28.29.59
repository: oci://oci.trueforge.org/truecharts
condition: ""
alias: ""
tags: []
import-values: []
deprecated: false
description: Open source, advanced key-value store.
home: https://trueforge.org/truetech/truecharts/charts/incubator/valkey
icon: https://trueforge.org/img/hotlink-ok/chart-icons/valkey.webp
keywords:
- valkey
- keyvalue
- database
kubeVersion: '>=1.27.0-0'
maintainers:
- name: TrueCharts
email: info@trueforge.org
url: https://trueforge.org
name: valkey
sources:
- https://github.com/bitnami/containers/tree/main/bitnami/valkey
- https://github.com/trueforge-org/truecharts/tree/master/charts/incubator/valkey
- https://hub.docker.com/r/bitnamisecure/valkey
type: application
version: 17.15.22
+50
View File
@@ -0,0 +1,50 @@
---
title: README
---
## General Info
For more information about this Chart, please check the docs on the TrueCharts [website](https://trueforge.org/truecharts/charts/incubator/valkey)
**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/trueforge-org/truecharts/issues/new/choose)**
## Installation
### Helm-Chart installation
To install TrueCharts Helm charts using Helm, you can use our OCI Repository.
`helm install mychart oci://oci.trueforge.org/truecharts/valkey`
For more information on how to install TrueCharts Helm charts, checkout the [instructions on the website](https://trueforge.org/truecharts/guides/)
## Chart Specific Guides and information
All our charts have dedicated documentation pages.
The documentation for this chart can be found here:
https://trueforge.org/truecharts/incubator/valkey
## Configuration Options
To view the chart specific options, please view Values.yaml included in the chart.
The most recent version of which, is available here: https://github.com/trueforge-org/truecharts/blob/master/charts/incubator/valkey/values.yaml
All our Charts use a shared "common" library chart that contains most of the templating and options.
For the complete overview of all available options, please checkout the documentation for them on the [common docs on our website](https://trueforge.org/truecharts-common/)
For information about the common chart and all defaults included with it, please review its values.yaml file available here: https://github.com/trueforge-org/truecharts/blob/master/charts/library/common/values.yaml
## Support
- See the [Website](https://trueforge.org)
- Check our [Discord](https://discord.gg/tVsPTHWTtr)
- Open a [issue](https://github.com/trueforge-org/truecharts/issues/new/choose)
---
## Sponsor TrueCharts
TrueCharts can only exist due to the incredible effort of our staff.
Please consider making a [donation](https://trueforge.org/general/sponsor/) or contributing back to the project any way you can!
_All Rights Reserved - The TrueCharts Project_
@@ -0,0 +1 @@
password: "testpassword"
Binary file not shown.

After

Width:  |  Height:  |  Size: 694 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

@@ -0,0 +1 @@
{{- include "tc.v1.common.lib.chart.notes" $ -}}
@@ -0,0 +1,2 @@
{{ include "tc.v1.common.loader.all" . }}
+156
View File
@@ -0,0 +1,156 @@
# yaml-language-server: $schema=./values.schema.json
image:
repository: docker.io/bitnamisecure/valkey
pullPolicy: IfNotPresent
tag: latest@sha256:1c41e7028ac48d7a9d79d855a432eef368aa440f37c8073ae1651879b02c72f4
workload:
main:
replicas: 1
type: StatefulSet
strategy: RollingUpdate
podSpec:
containers:
main:
env:
# DEVNOTE: Bitnami Valkey keeps REDIS_* env variable names for compatibility.
REDIS_REPLICATION_MODE: master
ALLOW_EMPTY_PASSWORD: "yes"
REDIS_PORT: "{{ .Values.service.main.ports.main.targetPort }}"
REDIS_PASSWORD: "{{ .Values.password }}"
probes:
liveness:
enabled: true
type: exec
command:
- sh
- -c
- /health/ping_liveness_local.sh 2
readiness:
enabled: true
type: exec
command:
- sh
- -c
- /health/ping_readiness_local.sh 2
# -- Startup probe configuration
# @default -- See below
startup:
# -- Enable the startup probe
enabled: true
type: exec
command:
- sh
- -c
- /health/ping_readiness_local.sh 2
securityContext:
container:
readOnlyRootFilesystem: false
runAsGroup: 0
configmap:
health:
enabled: true
data:
ping_readiness_local.sh: |-
#!/bin/bash
[[ -n "$REDIS_PASSWORD" ]] && export REDISCLI_AUTH="$REDIS_PASSWORD"
response=$(
timeout -s 3 $1 \
redis-cli \
-h localhost \
-p $REDIS_PORT \
ping
)
if [ "$response" != "PONG" ]; then
echo "failed to connect using password: $REDIS_PASSWORD response: $response"
exit 1
fi
ping_liveness_local.sh: |-
#!/bin/bash
[[ -n "$REDIS_PASSWORD" ]] && export REDISCLI_AUTH="$REDIS_PASSWORD"
response=$(
timeout -s 3 $1 \
redis-cli \
-h localhost \
-p $REDIS_PORT \
ping
)
if [ "$response" != "PONG" ] && [ "$response" != "LOADING Valkey is loading the dataset in memory" ]; then
echo "$response"
exit 1
fi
ping_readiness_master.sh: |-
#!/bin/bash
[[ -n "$REDIS_MASTER_PASSWORD" ]] && export REDISCLI_AUTH="$REDIS_MASTER_PASSWORD"
response=$(
timeout -s 3 $1 \
redis-cli \
-h $REDIS_MASTER_HOST \
-p $REDIS_MASTER_PORT_NUMBER \
ping
)
if [ "$response" != "PONG" ]; then
echo "$response"
exit 1
fi
ping_liveness_master.sh: |-
#!/bin/bash
[[ -n "$REDIS_MASTER_PASSWORD" ]] && export REDISCLI_AUTH="$REDIS_MASTER_PASSWORD"
response=$(
timeout -s 3 $1 \
redis-cli \
-h $REDIS_MASTER_HOST \
-p $REDIS_MASTER_PORT_NUMBER \
ping
)
if [ "$response" != "PONG" ] && [ "$response" != "LOADING Valkey is loading the dataset in memory" ]; then
echo "$response"
exit 1
fi
ping_readiness_local_and_master.sh: |-
script_dir="$(dirname "$0")"
exit_status=0
"$script_dir/ping_readiness_local.sh" $1 || exit_status=$?
"$script_dir/ping_readiness_master.sh" $1 || exit_status=$?
exit $exit_status
ping_liveness_local_and_master.sh: |-
script_dir="$(dirname "$0")"
exit_status=0
"$script_dir/ping_liveness_local.sh" $1 || exit_status=$?
"$script_dir/ping_liveness_master.sh" $1 || exit_status=$?
exit $exit_status
## DEVNOTE: This password needs to match the one set in Common if ever changing defaults
password: "PLACEHOLDERPASSWORD"
service:
main:
ports:
main:
port: 6379
targetPort: 6379
volumeClaimTemplates:
data:
enabled: true
accessModes:
- ReadWriteOnce
mountPath: "/bitnami/valkey"
persistence:
valkey-health:
enabled: true
type: configmap
objectName: health
mountPath: "/health"
defaultMode: "0755"
items:
- key: ping_readiness_local.sh
path: ping_readiness_local.sh
- key: ping_liveness_local.sh
path: ping_liveness_local.sh
- key: ping_readiness_master.sh
path: ping_readiness_master.sh
- key: ping_liveness_master.sh
path: ping_liveness_master.sh
- key: ping_liveness_local_and_master.sh
path: ping_liveness_local_and_master.sh
- key: ping_readiness_local_and_master.sh
path: ping_readiness_local_and_master.sh