From b21ce0e1f5056e51481b8627d3813eec0b1bb9d2 Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Sun, 15 Feb 2026 12:27:25 +0100 Subject: [PATCH] feat: Add incubator `valkey` chart scaffolded from stable `redis` (#44984) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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] > >
> Firewall rules blocked me from connecting to one or more addresses (expand for details) > > #### 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) > >
--- ✨ 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 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 Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- charts/incubator/valkey/.helmignore | 32 ++++ charts/incubator/valkey/CHANGELOG.md | 4 + charts/incubator/valkey/Chart.yaml | 45 +++++ charts/incubator/valkey/README.md | 50 ++++++ charts/incubator/valkey/ci/basic-values.yaml | 1 + charts/incubator/valkey/icon-small.webp | Bin 0 -> 694 bytes charts/incubator/valkey/icon.webp | Bin 0 -> 3844 bytes charts/incubator/valkey/templates/NOTES.txt | 1 + charts/incubator/valkey/templates/common.yaml | 2 + charts/incubator/valkey/values.yaml | 156 ++++++++++++++++++ 10 files changed, 291 insertions(+) create mode 100644 charts/incubator/valkey/.helmignore create mode 100644 charts/incubator/valkey/CHANGELOG.md create mode 100644 charts/incubator/valkey/Chart.yaml create mode 100644 charts/incubator/valkey/README.md create mode 100644 charts/incubator/valkey/ci/basic-values.yaml create mode 100644 charts/incubator/valkey/icon-small.webp create mode 100644 charts/incubator/valkey/icon.webp create mode 100644 charts/incubator/valkey/templates/NOTES.txt create mode 100644 charts/incubator/valkey/templates/common.yaml create mode 100644 charts/incubator/valkey/values.yaml diff --git a/charts/incubator/valkey/.helmignore b/charts/incubator/valkey/.helmignore new file mode 100644 index 00000000000..feb7464da6f --- /dev/null +++ b/charts/incubator/valkey/.helmignore @@ -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 diff --git a/charts/incubator/valkey/CHANGELOG.md b/charts/incubator/valkey/CHANGELOG.md new file mode 100644 index 00000000000..f3e8318aa10 --- /dev/null +++ b/charts/incubator/valkey/CHANGELOG.md @@ -0,0 +1,4 @@ +--- +title: Changelog +pagefind: false +--- diff --git a/charts/incubator/valkey/Chart.yaml b/charts/incubator/valkey/Chart.yaml new file mode 100644 index 00000000000..d2f8bfad978 --- /dev/null +++ b/charts/incubator/valkey/Chart.yaml @@ -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 diff --git a/charts/incubator/valkey/README.md b/charts/incubator/valkey/README.md new file mode 100644 index 00000000000..000c7af9249 --- /dev/null +++ b/charts/incubator/valkey/README.md @@ -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_ diff --git a/charts/incubator/valkey/ci/basic-values.yaml b/charts/incubator/valkey/ci/basic-values.yaml new file mode 100644 index 00000000000..eb4e9875c61 --- /dev/null +++ b/charts/incubator/valkey/ci/basic-values.yaml @@ -0,0 +1 @@ +password: "testpassword" diff --git a/charts/incubator/valkey/icon-small.webp b/charts/incubator/valkey/icon-small.webp new file mode 100644 index 0000000000000000000000000000000000000000..1b04e4ec49f7dfc8ac92e3633b2dad6966a19440 GIT binary patch literal 694 zcmV;n0!jT+Nk&Gl0ssJ4MM6+kP&il$0000G0000V0018V06|PpNX!5L00Dq<+qSA@ zf9~!`Vi2J*s20B;fJ=91M0agYbhqdZjb@GL?(+P-`+1Fs2|!TGvIchdM*Rw6>6`x) z_avK4^3)$C_`jAa&E5Y=iT)W&6lbV=pd`PxScPOoR}|6fG6j!fm?FNQ;nY$A>;Ry@ z4aB<#$e;q61LOs!8Yl=%O)QijuhIr8V``8clPpYYa zmw)^ftI4@w{dAh1nK;|`Ss{gAv0cj4005o#I_L1epg=Dk^l%`*v9KfnC7WJRSJWPT#K~g%o+>ymNJG z@bnAM)FD?6Q+bJ*1MRkAoRem9uhbJL>>~QEl|e(6t0(jn88%{~P0ps>2#)VRsdY~; z^X>^FXvy=Y6A0_xO>JKMo$hsXRKt})Y zQ`NV->iE1t*ZNf}TulA2$+RM0bgDW1FwOXVoJDmm7FI;@Hq)$ literal 0 HcmV?d00001 diff --git a/charts/incubator/valkey/icon.webp b/charts/incubator/valkey/icon.webp new file mode 100644 index 0000000000000000000000000000000000000000..3ac00cc815f08c8d732f91e0483059e602b1e6c2 GIT binary patch literal 3844 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 literal 0 HcmV?d00001 diff --git a/charts/incubator/valkey/templates/NOTES.txt b/charts/incubator/valkey/templates/NOTES.txt new file mode 100644 index 00000000000..efcb74cb772 --- /dev/null +++ b/charts/incubator/valkey/templates/NOTES.txt @@ -0,0 +1 @@ +{{- include "tc.v1.common.lib.chart.notes" $ -}} diff --git a/charts/incubator/valkey/templates/common.yaml b/charts/incubator/valkey/templates/common.yaml new file mode 100644 index 00000000000..992373e7501 --- /dev/null +++ b/charts/incubator/valkey/templates/common.yaml @@ -0,0 +1,2 @@ + +{{ include "tc.v1.common.loader.all" . }} diff --git a/charts/incubator/valkey/values.yaml b/charts/incubator/valkey/values.yaml new file mode 100644 index 00000000000..c2a5a79fb4e --- /dev/null +++ b/charts/incubator/valkey/values.yaml @@ -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