From 4de995c10e14cfdd073cc25e1edc303ef802aaa8 Mon Sep 17 00:00:00 2001 From: Ben Hardill Date: Mon, 13 Oct 2025 13:57:01 +0100 Subject: [PATCH 1/6] Add Valkey cache for scaling --- helm/flowfuse/Chart.lock | 7 +++++-- helm/flowfuse/Chart.yaml | 4 ++++ helm/flowfuse/charts/valkey-0.4.1.tgz | Bin 0 -> 23354 bytes helm/flowfuse/templates/_helpers.tpl | 23 ++++++++++++++++++++ helm/flowfuse/templates/configmap.yaml | 6 ++++++ helm/flowfuse/values.yaml | 28 +++++++++++++++++++++++++ 6 files changed, 66 insertions(+), 2 deletions(-) create mode 100644 helm/flowfuse/charts/valkey-0.4.1.tgz diff --git a/helm/flowfuse/Chart.lock b/helm/flowfuse/Chart.lock index 4a972786..89a034fc 100644 --- a/helm/flowfuse/Chart.lock +++ b/helm/flowfuse/Chart.lock @@ -2,5 +2,8 @@ dependencies: - name: postgresql repository: https://charts.bitnami.com/bitnami version: 11.9.13 -digest: sha256:1423e37aa789fccab1a4b5db593ccda3887032de2a4814b928df938f6db1de3a -generated: "2024-02-13T12:15:48.820039+01:00" +- name: valkey + repository: oci://registry-1.docker.io/cloudpirates + version: 0.4.1 +digest: sha256:18914f01a3fbac576b655e1eca8cae8303dc16ce33df9532c1f9c800ec932289 +generated: "2025-10-10T17:09:58.788141744+01:00" diff --git a/helm/flowfuse/Chart.yaml b/helm/flowfuse/Chart.yaml index 30f050b2..b961bca8 100644 --- a/helm/flowfuse/Chart.yaml +++ b/helm/flowfuse/Chart.yaml @@ -16,6 +16,10 @@ dependencies: import-values: - child: image parent: postgresql.image + - name: valkey + version: 0.4.1 + repository: oci://registry-1.docker.io/cloudpirates + condition: forge.localValey maintainers: - name: "FlowFuse Inc" url: "https://flowfuse.com" diff --git a/helm/flowfuse/charts/valkey-0.4.1.tgz b/helm/flowfuse/charts/valkey-0.4.1.tgz new file mode 100644 index 0000000000000000000000000000000000000000..c099c51d0442d9533fbbc99667aae8def83c359f GIT binary patch literal 23354 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 F`44JRft>&V literal 0 HcmV?d00001 diff --git a/helm/flowfuse/templates/_helpers.tpl b/helm/flowfuse/templates/_helpers.tpl index 21541c44..58ff50a6 100644 --- a/helm/flowfuse/templates/_helpers.tpl +++ b/helm/flowfuse/templates/_helpers.tpl @@ -222,3 +222,26 @@ Generate NPM registry admin password if not provided {{- sha256sum $seed | trunc 25 }} {{- end }} {{- end -}} + + +{{/* +Get the valkey host name. +*/}} +{{- define "forge.valkeyHost" -}} +{{- if not .Values.valkey.host -}} + {{- printf "%s-%s" .Release.Name "valkey" }} +{{- else -}} + {{- .Values.valkey.host }} +{{- end -}} +{{- end -}} + +{{/* +Get the valkey port number. +*/}} +{{- define "forge.valkeyPort" -}} +{{- if not .Values.valkey.host -}} + 6379 +{{- else -}} + {{- .Values.valkey.port }} +{{- end -}} +{{- end -}} \ No newline at end of file diff --git a/helm/flowfuse/templates/configmap.yaml b/helm/flowfuse/templates/configmap.yaml index 49e6f613..25d9253c 100644 --- a/helm/flowfuse/templates/configmap.yaml +++ b/helm/flowfuse/templates/configmap.yaml @@ -317,3 +317,9 @@ data: {{ toYaml .Values.forge.tables.driver | indent 8 }} {{- end -}} {{- end -}} + {{- if gt (int .Values.forge.replicas) 1 }} + cache: + driver: 'redis' + options: + url: redis://{{ include "forge.valkeyHost" . }}:{{ include "forge.valkeyPort" . }} + {{- end -}} diff --git a/helm/flowfuse/values.yaml b/helm/flowfuse/values.yaml index 33d869ba..6bc6281c 100644 --- a/helm/flowfuse/values.yaml +++ b/helm/flowfuse/values.yaml @@ -344,3 +344,31 @@ npmRegistry: repository: "flowfuse/npm-registry" tag: "latest" podSecurityContext: {} + +valkey: + replicaCount: 1 + + persistence: + enabled: false + size: 20Gi + + resources: + requests: + memory: 512Mi + cpu: 250m + limits: + memory: 1Gi + cpu: 500m + + auth: + enabled: false + + metrics: + enabled: true + serviceMonitor: + enabled: true + + config: + maxMemory: 800mb + maxMemoryPolicy: allkeys-lru + save: 3600 1 300 100 60 10000 \ No newline at end of file From dbaec82df02abeeca4b42efbb4794982ab381f49 Mon Sep 17 00:00:00 2001 From: Ben Hardill Date: Mon, 13 Oct 2025 14:11:41 +0100 Subject: [PATCH 2/6] Add docs and fix values.yaml lint --- helm/flowfuse/README.md | 9 +++++++++ helm/flowfuse/values.yaml | 4 ++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/helm/flowfuse/README.md b/helm/flowfuse/README.md index 8e979089..8c4192a4 100644 --- a/helm/flowfuse/README.md +++ b/helm/flowfuse/README.md @@ -333,6 +333,15 @@ Note: External secret must contain following keys: - `postgress-password` - the password to use for the postgres user (equivalent to `postgresql.auth.postgresPassword` key) +### Valkey Shared Cache +- `valkey.replicaCount` Number of Redis instances (default `1`) +- `valkey.persistence.enabled` Should Valkey persist to disk (default `false`) +- `valkey.persistence.size` How large a storage volume should be created if enabled (default `20Gi`) +- `valkey.auth.enabled` Should Valkey require authentication (default `false`) +- `valkey.auth.password` Set a password (default not set, will generate if enabled) +- `valkey.metrics.enabled` Enabled metrics endpoint (default `true`) +- `valkey.config` allows to overwrite the default Valkey configuration + ### Liveness, readiness and startup probes Following values can be used to configure the liveness, readiness and startup probes for all pods: diff --git a/helm/flowfuse/values.yaml b/helm/flowfuse/values.yaml index 6bc6281c..d11a4bce 100644 --- a/helm/flowfuse/values.yaml +++ b/helm/flowfuse/values.yaml @@ -362,7 +362,7 @@ valkey: auth: enabled: false - + metrics: enabled: true serviceMonitor: @@ -371,4 +371,4 @@ valkey: config: maxMemory: 800mb maxMemoryPolicy: allkeys-lru - save: 3600 1 300 100 60 10000 \ No newline at end of file + save: 3600 1 300 100 60 10000 From 999112703444d932e7d8acdfe44c8a34aa44430f Mon Sep 17 00:00:00 2001 From: Ben Hardill Date: Tue, 14 Oct 2025 09:25:01 +0100 Subject: [PATCH 3/6] Make metrics off by default --- helm/flowfuse/values.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/helm/flowfuse/values.yaml b/helm/flowfuse/values.yaml index d11a4bce..33c6d944 100644 --- a/helm/flowfuse/values.yaml +++ b/helm/flowfuse/values.yaml @@ -364,7 +364,7 @@ valkey: enabled: false metrics: - enabled: true + enabled: false serviceMonitor: enabled: true From 56e24275c03c87587abebf0198a173b190deb154 Mon Sep 17 00:00:00 2001 From: Ben Hardill Date: Tue, 14 Oct 2025 17:29:53 +0100 Subject: [PATCH 4/6] Allow external REDIS URL and always use Valkey --- helm/flowfuse/Chart.yaml | 2 +- helm/flowfuse/README.md | 6 +++++- helm/flowfuse/templates/configmap.yaml | 8 +++++--- helm/flowfuse/values.yaml | 1 + 4 files changed, 12 insertions(+), 5 deletions(-) diff --git a/helm/flowfuse/Chart.yaml b/helm/flowfuse/Chart.yaml index b961bca8..36482f27 100644 --- a/helm/flowfuse/Chart.yaml +++ b/helm/flowfuse/Chart.yaml @@ -19,7 +19,7 @@ dependencies: - name: valkey version: 0.4.1 repository: oci://registry-1.docker.io/cloudpirates - condition: forge.localValey + condition: forge.localValkey maintainers: - name: "FlowFuse Inc" url: "https://flowfuse.com" diff --git a/helm/flowfuse/README.md b/helm/flowfuse/README.md index 8c4192a4..742ace96 100644 --- a/helm/flowfuse/README.md +++ b/helm/flowfuse/README.md @@ -28,6 +28,7 @@ For other values please refer to the documentation below. - `forge.https` is the Forge App accessed via HTTPS (default `true`) - `forge.registry` the hostname for the container registry used for FlowFuse images and as a fallback for init containers and other images in this chart (default: empty, meaning Docker Hub) - `forge.localPostgresql` Deploy a PostgreSQL v14 Database into Kubernetes cluster (default `true`) + - `forge.localValkey` Deploy a Valkey Cache instacne (default `true`) - `forge.initContainers.config.image.registry` optional registry override used only for the "config" init container image; falls back to `forge.registry` when unset - `forge.initContainers.waitForLocalDb.image.registry` optional registry override used only for the "wait-for-local-db" init container image; falls back to `forge.registry` when unset - `forge.cloudProvider` can be `aws` or `openshift` but will include more as needed (default not set) @@ -334,7 +335,10 @@ Note: External secret must contain following keys: ### Valkey Shared Cache -- `valkey.replicaCount` Number of Redis instances (default `1`) +- `valkey.host` Hostname for external Valkey/Redis instance (default empty) +- `valkey.port` Port for external Valkey/Redis instance (default empty) +- `valkey.url` Full URL for an external Valkey/Redis instance (default empty) +- `valkey.replicaCount` Number of Valkey instances (default `1`) - `valkey.persistence.enabled` Should Valkey persist to disk (default `false`) - `valkey.persistence.size` How large a storage volume should be created if enabled (default `20Gi`) - `valkey.auth.enabled` Should Valkey require authentication (default `false`) diff --git a/helm/flowfuse/templates/configmap.yaml b/helm/flowfuse/templates/configmap.yaml index 25d9253c..4608de71 100644 --- a/helm/flowfuse/templates/configmap.yaml +++ b/helm/flowfuse/templates/configmap.yaml @@ -316,10 +316,12 @@ data: driver: {{ toYaml .Values.forge.tables.driver | indent 8 }} {{- end -}} - {{- end -}} - {{- if gt (int .Values.forge.replicas) 1 }} + {{- end }} cache: driver: 'redis' options: + {{- if .Values.valkey.url }} + url: {{ .Values.valkey.url }} + {{ else }} url: redis://{{ include "forge.valkeyHost" . }}:{{ include "forge.valkeyPort" . }} - {{- end -}} + {{- end -}} diff --git a/helm/flowfuse/values.yaml b/helm/flowfuse/values.yaml index 33c6d944..37099fab 100644 --- a/helm/flowfuse/values.yaml +++ b/helm/flowfuse/values.yaml @@ -1,6 +1,7 @@ forge: replicas: 1 localPostgresql: true + localValkey: true https: true projectNamespace: flowforge projectSelector: From 84d0f0610bdd7b66898c430a57b31d364704edb5 Mon Sep 17 00:00:00 2001 From: Ben Hardill Date: Tue, 14 Oct 2025 17:37:56 +0100 Subject: [PATCH 5/6] Update lock file --- helm/flowfuse/Chart.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/helm/flowfuse/Chart.lock b/helm/flowfuse/Chart.lock index 89a034fc..e0a81fd2 100644 --- a/helm/flowfuse/Chart.lock +++ b/helm/flowfuse/Chart.lock @@ -5,5 +5,5 @@ dependencies: - name: valkey repository: oci://registry-1.docker.io/cloudpirates version: 0.4.1 -digest: sha256:18914f01a3fbac576b655e1eca8cae8303dc16ce33df9532c1f9c800ec932289 -generated: "2025-10-10T17:09:58.788141744+01:00" +digest: sha256:1e13c34b13da4af2417772e3e16a58cc121a626c6b876cb8a6d58d398abb291b +generated: "2025-10-14T17:37:27.179684443+01:00" From d6a95766ba47efd53313b505bb2c3e644524bc9e Mon Sep 17 00:00:00 2001 From: Ben Hardill Date: Wed, 15 Oct 2025 10:26:15 +0100 Subject: [PATCH 6/6] Update helm/flowfuse/README.md Co-authored-by: PPawlowski --- helm/flowfuse/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/helm/flowfuse/README.md b/helm/flowfuse/README.md index 742ace96..fa92bac1 100644 --- a/helm/flowfuse/README.md +++ b/helm/flowfuse/README.md @@ -343,7 +343,7 @@ Note: External secret must contain following keys: - `valkey.persistence.size` How large a storage volume should be created if enabled (default `20Gi`) - `valkey.auth.enabled` Should Valkey require authentication (default `false`) - `valkey.auth.password` Set a password (default not set, will generate if enabled) -- `valkey.metrics.enabled` Enabled metrics endpoint (default `true`) +- `valkey.metrics.enabled` Enabled metrics endpoint (default `false`) - `valkey.config` allows to overwrite the default Valkey configuration ### Liveness, readiness and startup probes