From 6e4e414771455da2b233f1d67cc718284cde90a2 Mon Sep 17 00:00:00 2001 From: Sean Teo Date: Mon, 5 May 2025 08:12:41 +0000 Subject: [PATCH] chore(deps)!: Migrate to Valkey from Redis (#775) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ### Description of the change Migrates from Redis to Valkey. ### Benefits The Redis License is changing from BSD-3-Clause to RSALv2 and SSPLv1 which are not open source under the OSI definition. We should consider open-source alternatives as a default replacement for Redis. ### Possible drawbacks Large scale change, potentially breaking. ### Applicable issues https://github.com/go-gitea/gitea/issues/32056 ### ⚠ BREAKING Major version change, redis provider changed to valkey. ### Checklist - [X] Parameters are documented in the `values.yaml` and added to the `README.md` using [readme-generator-for-helm](https://github.com/bitnami-labs/readme-generator-for-helm) - [X] Breaking changes are documented in the `README.md` - [X] Helm templating unittests are added (required when changing anything in `templates` folder) Co-authored-by: pat-s Reviewed-on: https://gitea.com/gitea/helm-gitea/pulls/775 Reviewed-by: pat-s Co-authored-by: Sean Teo Co-committed-by: Sean Teo --- Chart.lock | 12 +- Chart.yaml | 16 +-- README.md | 108 ++++++++++-------- docs/ha-setup.md | 34 +++--- package-lock.json | 2 +- templates/_helpers.tpl | 44 +++---- templates/gitea/init.yaml | 14 +-- unittests/helm/config/cache-config.yaml | 28 ++--- unittests/helm/config/queue-config.yaml | 28 ++--- unittests/helm/config/session-config.yaml | 28 ++--- ...stomization-integrity-valkey-cluster.yaml} | 50 ++++---- ...ml => customization-integrity-valkey.yaml} | 30 ++--- .../dependency-checks/major-image-bump.yaml | 20 ++-- unittests/helm/values-conflicting-checks.yaml | 8 +- values.yaml | 44 ++++--- 15 files changed, 246 insertions(+), 220 deletions(-) rename unittests/helm/dependency-checks/{customization-integrity-redis-cluster.yaml => customization-integrity-valkey-cluster.yaml} (53%) rename unittests/helm/dependency-checks/{customization-integrity-redis.yaml => customization-integrity-valkey.yaml} (53%) diff --git a/Chart.lock b/Chart.lock index c95f0f3..bed8624 100644 --- a/Chart.lock +++ b/Chart.lock @@ -5,11 +5,11 @@ dependencies: - name: postgresql-ha repository: oci://registry-1.docker.io/bitnamicharts version: 15.3.8 -- name: redis-cluster +- name: valkey-cluster repository: oci://registry-1.docker.io/bitnamicharts - version: 11.4.6 -- name: redis + version: 3.0.3 +- name: valkey repository: oci://registry-1.docker.io/bitnamicharts - version: 20.11.4 -digest: sha256:58043080c2090cb80a434b2a88e155cece3a3418c62b7908fcaa58c9c66a192a -generated: "2025-03-29T00:06:23.258261191Z" + version: 3.0.3 +digest: sha256:f1d1b04d28fd93a00467a61ef19bdf1d02df1bccc613cc1eedde08f295e8b253 +generated: "2025-05-05T09:54:33.58745+02:00" diff --git a/Chart.yaml b/Chart.yaml index dba4244..1934e5b 100644 --- a/Chart.yaml +++ b/Chart.yaml @@ -43,13 +43,13 @@ dependencies: repository: oci://registry-1.docker.io/bitnamicharts version: 15.3.8 condition: postgresql-ha.enabled - # https://github.com/bitnami/charts/blob/main/bitnami/redis-cluster/Chart.yaml - - name: redis-cluster + # https://github.com/bitnami/charts/blob/main/bitnami/valkey-cluster/Chart.yaml + - name: valkey-cluster repository: oci://registry-1.docker.io/bitnamicharts - version: 11.4.6 - condition: redis-cluster.enabled - # https://github.com/bitnami/charts/blob/main/bitnami/redis/Chart.yaml - - name: redis + version: 3.0.3 + condition: valkey-cluster.enabled + # https://github.com/bitnami/charts/blob/main/bitnami/valkey/Chart.yaml + - name: valkey repository: oci://registry-1.docker.io/bitnamicharts - version: 20.11.4 - condition: redis.enabled + version: 3.0.3 + condition: valkey.enabled diff --git a/README.md b/README.md index fc055fa..c858f89 100644 --- a/README.md +++ b/README.md @@ -51,8 +51,8 @@ - [LivenessProbe](#livenessprobe) - [ReadinessProbe](#readinessprobe) - [StartupProbe](#startupprobe) - - [redis-cluster](#redis-cluster) - - [redis](#redis) + - [valkey-cluster](#valkey-cluster) + - [valkey](#valkey) - [PostgreSQL HA](#postgresql-ha) - [PostgreSQL](#postgresql) - [Advanced](#advanced) @@ -95,14 +95,14 @@ Users can also configure their own external providers via the configuration. These dependencies are enabled by default: - PostgreSQL HA ([Bitnami PostgreSQL-HA](https://github.com/bitnami/charts/blob/main/bitnami/postgresql-ha/Chart.yaml)) -- Redis-Cluster ([Bitnami Redis-Cluster](https://github.com/bitnami/charts/blob/main/bitnami/redis-cluster/Chart.yaml)) +- Valkey-Cluster ([Bitnami Valkey-Cluster](https://github.com/bitnami/charts/blob/main/bitnami/valkey-cluster/Chart.yaml)) ### Non-HA Dependencies Alternatively, the following non-HA replacements are available: - PostgreSQL ([Bitnami PostgreSQL]()) -- Redis ([Bitnami Redis]()) +- Valkey ([Bitnami Valkey]()) ### Dependency Versioning @@ -120,8 +120,8 @@ Please double-check the image repository and available tags in the sub-chart: - [PostgreSQL-HA](https://hub.docker.com/r/bitnami/postgresql-repmgr/tags) - [PostgreSQL](https://hub.docker.com/r/bitnami/postgresql/tags) -- [Redis Cluster](https://hub.docker.com/r/bitnami/redis-cluster/tags) -- [Redis](https://hub.docker.com/r/bitnami/redis/tags) +- [Valkey Cluster](https://hub.docker.com/r/bitnami/valkey-cluster/tags) +- [Valkey](https://hub.docker.com/r/bitnami/valkey/tags) and look up the image tag which fits your needs on Dockerhub. @@ -177,12 +177,12 @@ Further information about this topic can be found [here](https://kanishk.io/post ```yaml deployment: env: - # Will be automatically defined! - - name: GOMAXPROCS - valueFrom: - resourceFieldRef: - divisor: "1" # Is required for GitDevOps systems like ArgoCD/Flux. Otherwise throw the system a diff error. (k8s-default=1) - resource: limits.cpu + # Will be automatically defined! + - name: GOMAXPROCS + valueFrom: + resourceFieldRef: + divisor: "1" # Is required for GitDevOps systems like ArgoCD/Flux. Otherwise throw the system a diff error. (k8s-default=1) + resource: limits.cpu resources: limits: @@ -281,28 +281,28 @@ If `.Values.image.rootless: true`, then the following will occur. In case you us #### Session, Cache and Queue -The session, cache and queue settings are set to use the built-in Redis Cluster sub-chart dependency. -If Redis Cluster is disabled, the chart will fall back to the Gitea defaults which use "memory" for `session` and `cache` and "level" for `queue`. +The session, cache and queue settings are set to use the built-in Valkey Cluster sub-chart dependency. +If Valkey Cluster is disabled, the chart will fall back to the Gitea defaults which use "memory" for `session` and `cache` and "level" for `queue`. While these will work and even not cause immediate issues after startup, **they are not recommended for production use**. Reasons being that a single pod will take on all the work for `session` and `cache` tasks in its available memory. It is likely that the pod will run out of memory or will face substantial memory spikes, depending on the workload. -External tools such as `redis-cluster` or `memcached` handle these workloads much better. +External tools such as `valkey-cluster` or `memcached` handle these workloads much better. ### Single-Pod Configurations If HA is not needed/desired, the following configurations can be used to deploy a single-pod Gitea instance. -1. For a production-ready single-pod Gitea instance without external dependencies (using the chart dependency `postgresql` and `redis`): +1. For a production-ready single-pod Gitea instance without external dependencies (using the chart dependency `postgresql` and `valkey`):
values.yml ```yaml - redis-cluster: + valkey-cluster: enabled: false - redis: + valkey: enabled: true postgresql: enabled: true @@ -333,9 +333,9 @@ If HA is not needed/desired, the following configurations can be used to deploy values.yml ```yaml - redis-cluster: + valkey-cluster: enabled: false - redis: + valkey: enabled: false postgresql: enabled: false @@ -537,17 +537,17 @@ More about this issue [here](https://gitea.com/gitea/helm-gitea/issues/161). ### Cache -The cache handling is done via `redis-cluster` (via the `bitnami` chart) by default. +The cache handling is done via `valkey-cluster` (via the `bitnami` chart) by default. This deployment is HA-ready but can also be used for single-pod deployments. -By default, 6 replicas are deployed for a working `redis-cluster` deployment. -Many cloud providers offer a managed redis service, which can be used instead of the built-in `redis-cluster`. +By default, 6 replicas are deployed for a working `valkey-cluster` deployment. +Many cloud providers offer a managed valkey service, which can be used instead of the built-in `valkey-cluster`. ```yaml -redis-cluster: +valkey-cluster: enabled: true ``` -⚠️ The redis charts [do not work well with special characters in the password](https://gitea.com/gitea/helm-gitea/issues/690). +⚠️ The valkey charts [do not work well with special characters in the password](https://gitea.com/gitea/helm-chart/issues/690). Consider omitting such or open an issue in the Bitnami repo and let us know once this got fixed. ### Persistence @@ -1131,27 +1131,30 @@ To comply with the Gitea helm chart definition of the digest parameter, a "custo | `gitea.startupProbe.successThreshold` | Success threshold for startup probe | `1` | | `gitea.startupProbe.failureThreshold` | Failure threshold for startup probe | `10` | -### redis-cluster +### valkey-cluster -Redis cluster and [Redis](#redis) cannot be enabled at the same time. +Valkey cluster and [Valkey](#valkey) cannot be enabled at the same time. -| Name | Description | Value | -| -------------------------------- | -------------------------------------------- | ------- | -| `redis-cluster.enabled` | Enable redis cluster | `true` | -| `redis-cluster.usePassword` | Whether to use password authentication | `false` | -| `redis-cluster.cluster.nodes` | Number of redis cluster master nodes | `3` | -| `redis-cluster.cluster.replicas` | Number of redis cluster master node replicas | `0` | +| Name | Description | Value | +| ------------------------------------- | -------------------------------------------------------------------- | ------- | +| `valkey-cluster.enabled` | Enable valkey cluster | `true` | +| `valkey-cluster.usePassword` | Whether to use password authentication | `false` | +| `valkey-cluster.usePasswordFiles` | Whether to mount passwords as files instead of environment variables | `false` | +| `valkey-cluster.cluster.nodes` | Number of valkey cluster master nodes | `3` | +| `valkey-cluster.cluster.replicas` | Number of valkey cluster master node replicas | `0` | +| `valkey-cluster.service.ports.valkey` | Port of Valkey service | `6379` | -### redis +### valkey -Redis and [Redis cluster](#redis-cluster) cannot be enabled at the same time. +Valkey and [Valkey cluster](#valkey-cluster) cannot be enabled at the same time. -| Name | Description | Value | -| ----------------------------- | ------------------------------------------ | ------------ | -| `redis.enabled` | Enable redis standalone or replicated | `false` | -| `redis.architecture` | Whether to use standalone or replication | `standalone` | -| `redis.global.redis.password` | Required password | `changeme` | -| `redis.master.count` | Number of Redis master instances to deploy | `1` | +| Name | Description | Value | +| ------------------------------------ | ------------------------------------------- | ------------ | +| `valkey.enabled` | Enable valkey standalone or replicated | `false` | +| `valkey.architecture` | Whether to use standalone or replication | `standalone` | +| `valkey.global.valkey.password` | Required password | `changeme` | +| `valkey.master.count` | Number of Valkey master instances to deploy | `1` | +| `valkey.master.service.ports.valkey` | Port of Valkey service | `6379` | ### PostgreSQL HA @@ -1203,6 +1206,20 @@ If you miss this, blindly upgrading may delete your Postgres instance and you ma
+To 12.0.0 + + + +**Breaking changes** + + +- Migrated from Redis/Redis-cluster to Valkey/Valkey-cluster charts (#775). + While marked as breaking, there should be no need to migrate data explicity. Cache will start to refill automatically. + +
+ +
+ To 11.0.0 @@ -1220,8 +1237,7 @@ If you miss this, blindly upgrading may delete your Postgres instance and you ma Although there are no breaking changes in the Redis Chart itself, it updates Redis from `7.2` to `7.4`. We recommend checking the release notes: - [Redis Chart release notes (starting with v11.0.0)](https://github.com/bitnami/charts/blob/HEAD/bitnami/redis-cluster/CHANGELOG.md#1100-2024-08-09). - [Redis 7.4 release notes](https://raw.githubusercontent.com/redis/redis/7.4/00-RELEASENOTES). - -
+
@@ -1298,16 +1314,16 @@ gitea: config: session: PROVIDER: redis-cluster - PROVIDER_CONFIG: redis+cluster://:gitea@gitea-redis-cluster-headless..svc.cluster.local:6379/0?pool_size=100&idle_timeout=180s& + PROVIDER_CONFIG: redis+cluster://:gitea@gitea-valkey-cluster-headless..svc.cluster.local:6379/0?pool_size=100&idle_timeout=180s& cache: ENABLED: true ADAPTER: redis-cluster - HOST: redis+cluster://:gitea@gitea-redis-cluster-headless..svc.cluster.local:6379/0?pool_size=100&idle_timeout=180s& + HOST: redis+cluster://:gitea@gitea-valkey-cluster-headless..svc.cluster.local:6379/0?pool_size=100&idle_timeout=180s& queue: TYPE: redis - CONN_STR: redis+cluster://:gitea@gitea-redis-cluster-headless..svc.cluster.local:6379/0?pool_size=100&idle_timeout=180s& + CONN_STR: redis+cluster://:gitea@gitea-valkey-cluster-headless..svc.cluster.local:6379/0?pool_size=100&idle_timeout=180s& ``` diff --git a/docs/ha-setup.md b/docs/ha-setup.md index b3ed491..99b87e6 100644 --- a/docs/ha-setup.md +++ b/docs/ha-setup.md @@ -25,7 +25,7 @@ In addition, the following components are required for full HA-readiness: - A HA-ready issue (and optionally code) indexer: `elasticsearch` or `meilisearch` - A HA-ready external object/asset storage (`minio`) (optional, assets can also be stored on the RWX file-system) -- A HA-ready cache (`redis-cluster`) +- A HA-ready cache (`valkey-cluster`) - A HA-ready DB `postgres.enabled`, which default to `true`, must be set to `false` for a HA setup. @@ -72,33 +72,33 @@ persistence: ## Cache, session and queue -A `redis` instance is required for the in-memory cache. +A `valkey` instance is required for the in-memory cache. Two options exist: -- `redis` -- `redis-cluster` +- `valkey` +- `valkey-cluster` -The chart provides `redis-cluster` as a dependency as this one can be used for both HA and non-HA setups. -You're also welcome to go with `redis` if you prefer or already have a running instance. +The chart provides `valkey-cluster` as a dependency as this one can be used for both HA and non-HA setups. +You're also welcome to go with `valkey` if you prefer or already have a running instance. -It should be noted that `redis-cluster` support is only available starting with Gitea 1.19.2. -You can also configure an external (managed) `redis` instance to be used. +It should be noted that `valkey-cluster` support is only available starting with Gitea 1.19.2. +You can also configure an external (managed) `valkey` instance to be used. To do so, you need to set the following configuration values yourself: -- `gitea.config.queue.TYPE`: redis` -- `gitea.config.queue.CONN_STR`: `` +- `gitea.config.queue.TYPE`: valkey` +- `gitea.config.queue.CONN_STR`: `` -- `gitea.config.session.PROVIDER`: `redis` -- `gitea.config.session.PROVIDER_CONFIG`: `` +- `gitea.config.session.PROVIDER`: `valkey` +- `gitea.config.session.PROVIDER_CONFIG`: `` - `gitea.config.cache.ENABLED`: `true` -- `gitea.config.cache.ADAPTER`: `redis` -- `gitea.config.cache.HOST`: `` +- `gitea.config.cache.ADAPTER`: `valkey` +- `gitea.config.cache.HOST`: `` -By default, the `redis-cluster` chart provisions three standalone master nodes of which each has a single replica. +By default, the `valkey-cluster` chart provisions three standalone master nodes of which each has a single replica. To reduce the number of pods for a default Gitea deployment, we opted to omit the replicas (`replicas: 0`) by default. -Only the minimum required number of master pods for a functional `redis-cluster` deployment are provisioned. -For a "proper" `redis-cluster` setup however, we recommend to set `replicas: 1` and `nodes: 6`. +Only the minimum required number of master pods for a functional `valkey-cluster` deployment are provisioned. +For a "proper" `valkey-cluster` setup however, we recommend to set `replicas: 1` and `nodes: 6`. ## Object and asset storage diff --git a/package-lock.json b/package-lock.json index 4b3bd76..43f456b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1660,4 +1660,4 @@ } } } -} \ No newline at end of file +} diff --git a/templates/_helpers.tpl b/templates/_helpers.tpl index 5798577..01be3b9 100644 --- a/templates/_helpers.tpl +++ b/templates/_helpers.tpl @@ -133,29 +133,29 @@ app.kubernetes.io/instance: {{ .Release.Name }} {{- end -}} {{- end -}} -{{- define "redis.dns" -}} -{{- if and ((index .Values "redis-cluster").enabled) ((index .Values "redis").enabled) -}} -{{- fail "redis and redis-cluster cannot be enabled at the same time. Please only choose one." -}} -{{- else if (index .Values "redis-cluster").enabled -}} -{{- printf "redis+cluster://:%s@%s-redis-cluster-headless.%s.svc.%s:%g/0?pool_size=100&idle_timeout=180s&" (index .Values "redis-cluster").global.redis.password .Release.Name .Release.Namespace .Values.clusterDomain (index .Values "redis-cluster").service.ports.redis -}} -{{- else if (index .Values "redis").enabled -}} -{{- printf "redis://:%s@%s-redis-headless.%s.svc.%s:%g/0?pool_size=100&idle_timeout=180s&" (index .Values "redis").global.redis.password .Release.Name .Release.Namespace .Values.clusterDomain (index .Values "redis").master.service.ports.redis -}} +{{- define "valkey.dns" -}} +{{- if and ((index .Values "valkey-cluster").enabled) ((index .Values "valkey").enabled) -}} +{{- fail "valkey and valkey-cluster cannot be enabled at the same time. Please only choose one." -}} +{{- else if (index .Values "valkey-cluster").enabled -}} +{{- printf "redis+cluster://:%s@%s-valkey-cluster-headless.%s.svc.%s:%g/0?pool_size=100&idle_timeout=180s&" (index .Values "valkey-cluster").global.valkey.password .Release.Name .Release.Namespace .Values.clusterDomain (index .Values "valkey-cluster").service.ports.valkey -}} +{{- else if (index .Values "valkey").enabled -}} +{{- printf "redis://:%s@%s-valkey-headless.%s.svc.%s:%g/0?pool_size=100&idle_timeout=180s&" (index .Values "valkey").global.valkey.password .Release.Name .Release.Namespace .Values.clusterDomain (index .Values "valkey").master.service.ports.valkey -}} {{- end -}} {{- end -}} -{{- define "redis.port" -}} -{{- if (index .Values "redis-cluster").enabled -}} -{{ (index .Values "redis-cluster").service.ports.redis }} -{{- else if (index .Values "redis").enabled -}} -{{ (index .Values "redis").master.service.ports.redis }} +{{- define "valkey.port" -}} +{{- if (index .Values "valkey-cluster").enabled -}} +{{ (index .Values "valkey-cluster").service.ports.valkey }} +{{- else if (index .Values "valkey").enabled -}} +{{ (index .Values "valkey").master.service.ports.valkey }} {{- end -}} {{- end -}} -{{- define "redis.servicename" -}} -{{- if (index .Values "redis-cluster").enabled -}} -{{- printf "%s-redis-cluster-headless.%s.svc.%s" .Release.Name .Release.Namespace .Values.clusterDomain -}} -{{- else if (index .Values "redis").enabled -}} -{{- printf "%s-redis-headless.%s.svc.%s" .Release.Name .Release.Namespace .Values.clusterDomain -}} +{{- define "valkey.servicename" -}} +{{- if (index .Values "valkey-cluster").enabled -}} +{{- printf "%s-valkey-cluster-headless.%s.svc.%s" .Release.Name .Release.Namespace .Values.clusterDomain -}} +{{- else if (index .Values "valkey").enabled -}} +{{- printf "%s-valkey-headless.%s.svc.%s" .Release.Name .Release.Namespace .Values.clusterDomain -}} {{- end -}} {{- end -}} @@ -305,14 +305,14 @@ https {{- if and (not (hasKey .Values.gitea.config.metrics "TOKEN")) (.Values.gitea.metrics.token) (.Values.gitea.metrics.enabled) -}} {{- $_ := set .Values.gitea.config.metrics "TOKEN" .Values.gitea.metrics.token -}} {{- end -}} - {{- /* redis queue */ -}} - {{- if or ((index .Values "redis-cluster").enabled) ((index .Values "redis").enabled) -}} + {{- /* valkey queue */ -}} + {{- if or ((index .Values "valkey-cluster").enabled) ((index .Values "valkey").enabled) -}} {{- $_ := set .Values.gitea.config.queue "TYPE" "redis" -}} - {{- $_ := set .Values.gitea.config.queue "CONN_STR" (include "redis.dns" .) -}} + {{- $_ := set .Values.gitea.config.queue "CONN_STR" (include "valkey.dns" .) -}} {{- $_ := set .Values.gitea.config.session "PROVIDER" "redis" -}} - {{- $_ := set .Values.gitea.config.session "PROVIDER_CONFIG" (include "redis.dns" .) -}} + {{- $_ := set .Values.gitea.config.session "PROVIDER_CONFIG" (include "valkey.dns" .) -}} {{- $_ := set .Values.gitea.config.cache "ADAPTER" "redis" -}} - {{- $_ := set .Values.gitea.config.cache "HOST" (include "redis.dns" .) -}} + {{- $_ := set .Values.gitea.config.cache "HOST" (include "valkey.dns" .) -}} {{- else -}} {{- if not (get .Values.gitea.config.session "PROVIDER") -}} {{- $_ := set .Values.gitea.config.session "PROVIDER" "memory" -}} diff --git a/templates/gitea/init.yaml b/templates/gitea/init.yaml index 5542fca..2c30c9f 100644 --- a/templates/gitea/init.yaml +++ b/templates/gitea/init.yaml @@ -57,25 +57,25 @@ stringData: exit 1 } - {{- if include "redis.servicename" . }} - function test_redis_connection() { + {{- if include "valkey.servicename" . }} + function test_valkey_connection() { local RETRY=0 local MAX=30 - echo 'Wait for redis to become available...' + echo 'Wait for valkey to become avialable...' until [ "${RETRY}" -ge "${MAX}" ]; do - nc -vz -w2 {{ include "redis.servicename" . }} {{ include "redis.port" . }} && break + nc -vz -w2 {{ include "valkey.servicename" . }} {{ include "valkey.port" . }} && break RETRY=$[${RETRY}+1] echo "...not ready yet (${RETRY}/${MAX})" done if [ "${RETRY}" -ge "${MAX}" ]; then - echo "Redis not reachable after '${MAX}' attempts!" + echo "Valkey not reachable after '${MAX}' attempts!" exit 1 fi } - test_redis_connection + test_valkey_connection {{- end }} @@ -225,4 +225,4 @@ stringData: configure_oauth - echo '==== END GITEA CONFIGURATION ====' + echo '==== END GITEA CONFIGURATION ====' \ No newline at end of file diff --git a/unittests/helm/config/cache-config.yaml b/unittests/helm/config/cache-config.yaml index 8ebde62..45b2a5b 100644 --- a/unittests/helm/config/cache-config.yaml +++ b/unittests/helm/config/cache-config.yaml @@ -3,12 +3,12 @@ release: name: gitea-unittests namespace: testing tests: - - it: "cache is configured correctly for redis-cluster" + - it: "cache is configured correctly for valkey-cluster" template: templates/gitea/config.yaml set: - redis-cluster: + valkey-cluster: enabled: true - redis: + valkey: enabled: false asserts: - documentIndex: 0 @@ -16,14 +16,14 @@ tests: path: stringData.cache value: |- ADAPTER=redis - HOST=redis+cluster://:@gitea-unittests-redis-cluster-headless.testing.svc.cluster.local:6379/0?pool_size=100&idle_timeout=180s& + HOST=redis+cluster://:@gitea-unittests-valkey-cluster-headless.testing.svc.cluster.local:6379/0?pool_size=100&idle_timeout=180s& - - it: "cache is configured correctly for redis" + - it: "cache is configured correctly for valkey" template: templates/gitea/config.yaml set: - redis-cluster: + valkey-cluster: enabled: false - redis: + valkey: enabled: true asserts: - documentIndex: 0 @@ -31,14 +31,14 @@ tests: path: stringData.cache value: |- ADAPTER=redis - HOST=redis://:changeme@gitea-unittests-redis-headless.testing.svc.cluster.local:6379/0?pool_size=100&idle_timeout=180s& + HOST=redis://:changeme@gitea-unittests-valkey-headless.testing.svc.cluster.local:6379/0?pool_size=100&idle_timeout=180s& - - it: "cache is configured correctly for 'memory' when redis (or redis-cluster) is disabled" + - it: "cache is configured correctly for 'memory' when valkey (or valkey-cluster) is disabled" template: templates/gitea/config.yaml set: - redis-cluster: + valkey-cluster: enabled: false - redis: + valkey: enabled: false asserts: - documentIndex: 0 @@ -48,12 +48,12 @@ tests: ADAPTER=memory HOST= - - it: "cache can be customized when redis (or redis-cluster) is disabled" + - it: "cache can be customized when valkey (or valkey-cluster) is disabled" template: templates/gitea/config.yaml set: - redis-cluster: + valkey-cluster: enabled: false - redis: + valkey: enabled: false gitea.config.cache.ADAPTER: custom-adapter gitea.config.cache.HOST: custom-host diff --git a/unittests/helm/config/queue-config.yaml b/unittests/helm/config/queue-config.yaml index b4946c7..86793f9 100644 --- a/unittests/helm/config/queue-config.yaml +++ b/unittests/helm/config/queue-config.yaml @@ -3,42 +3,42 @@ release: name: gitea-unittests namespace: testing tests: - - it: "queue is configured correctly for redis-cluster" + - it: "queue is configured correctly for valkey-cluster" template: templates/gitea/config.yaml set: - redis-cluster: + valkey-cluster: enabled: true - redis: + valkey: enabled: false asserts: - documentIndex: 0 equal: path: stringData.queue value: |- - CONN_STR=redis+cluster://:@gitea-unittests-redis-cluster-headless.testing.svc.cluster.local:6379/0?pool_size=100&idle_timeout=180s& + CONN_STR=redis+cluster://:@gitea-unittests-valkey-cluster-headless.testing.svc.cluster.local:6379/0?pool_size=100&idle_timeout=180s& TYPE=redis - - it: "queue is configured correctly for redis" + - it: "queue is configured correctly for valkey" template: templates/gitea/config.yaml set: - redis-cluster: + valkey-cluster: enabled: false - redis: + valkey: enabled: true asserts: - documentIndex: 0 equal: path: stringData.queue value: |- - CONN_STR=redis://:changeme@gitea-unittests-redis-headless.testing.svc.cluster.local:6379/0?pool_size=100&idle_timeout=180s& + CONN_STR=redis://:changeme@gitea-unittests-valkey-headless.testing.svc.cluster.local:6379/0?pool_size=100&idle_timeout=180s& TYPE=redis - - it: "queue is configured correctly for 'levelDB' when redis (and redis-cluster) is disabled" + - it: "queue is configured correctly for 'levelDB' when valkey (and valkey-cluster) is disabled" template: templates/gitea/config.yaml set: - redis-cluster: + valkey-cluster: enabled: false - redis: + valkey: enabled: false asserts: - documentIndex: 0 @@ -48,12 +48,12 @@ tests: CONN_STR= TYPE=level - - it: "queue can be customized when redis (and redis-cluster) are disabled" + - it: "queue can be customized when valkey (and valkey-cluster) are disabled" template: templates/gitea/config.yaml set: - redis-cluster: + valkey-cluster: enabled: false - redis: + valkey: enabled: false gitea.config.queue.TYPE: custom-type gitea.config.queue.CONN_STR: custom-connection-string diff --git a/unittests/helm/config/session-config.yaml b/unittests/helm/config/session-config.yaml index 5078cf2..9c50c61 100644 --- a/unittests/helm/config/session-config.yaml +++ b/unittests/helm/config/session-config.yaml @@ -3,12 +3,12 @@ release: name: gitea-unittests namespace: testing tests: - - it: "session is configured correctly for redis-cluster" + - it: "session is configured correctly for valkey-cluster" template: templates/gitea/config.yaml set: - redis-cluster: + valkey-cluster: enabled: true - redis: + valkey: enabled: false asserts: - documentIndex: 0 @@ -16,14 +16,14 @@ tests: path: stringData.session value: |- PROVIDER=redis - PROVIDER_CONFIG=redis+cluster://:@gitea-unittests-redis-cluster-headless.testing.svc.cluster.local:6379/0?pool_size=100&idle_timeout=180s& + PROVIDER_CONFIG=redis+cluster://:@gitea-unittests-valkey-cluster-headless.testing.svc.cluster.local:6379/0?pool_size=100&idle_timeout=180s& - - it: "session is configured correctly for redis" + - it: "session is configured correctly for valkey" template: templates/gitea/config.yaml set: - redis-cluster: + valkey-cluster: enabled: false - redis: + valkey: enabled: true asserts: - documentIndex: 0 @@ -31,14 +31,14 @@ tests: path: stringData.session value: |- PROVIDER=redis - PROVIDER_CONFIG=redis://:changeme@gitea-unittests-redis-headless.testing.svc.cluster.local:6379/0?pool_size=100&idle_timeout=180s& + PROVIDER_CONFIG=redis://:changeme@gitea-unittests-valkey-headless.testing.svc.cluster.local:6379/0?pool_size=100&idle_timeout=180s& - - it: "session is configured correctly for 'memory' when redis (and redis-cluster) is disabled" + - it: "session is configured correctly for 'memory' when valkey (and valkey-cluster) is disabled" template: templates/gitea/config.yaml set: - redis-cluster: + valkey-cluster: enabled: false - redis: + valkey: enabled: false asserts: - documentIndex: 0 @@ -48,12 +48,12 @@ tests: PROVIDER=memory PROVIDER_CONFIG= - - it: "session can be customized when redis (and redis-cluster) is disabled" + - it: "session can be customized when valkey (and valkey-cluster) is disabled" template: templates/gitea/config.yaml set: - redis-cluster: + valkey-cluster: enabled: false - redis: + valkey: enabled: false gitea.config.session.PROVIDER: custom-provider gitea.config.session.PROVIDER_CONFIG: custom-provider-config diff --git a/unittests/helm/dependency-checks/customization-integrity-redis-cluster.yaml b/unittests/helm/dependency-checks/customization-integrity-valkey-cluster.yaml similarity index 53% rename from unittests/helm/dependency-checks/customization-integrity-redis-cluster.yaml rename to unittests/helm/dependency-checks/customization-integrity-valkey-cluster.yaml index 4d5b553..6243a41 100644 --- a/unittests/helm/dependency-checks/customization-integrity-redis-cluster.yaml +++ b/unittests/helm/dependency-checks/customization-integrity-valkey-cluster.yaml @@ -1,19 +1,19 @@ -suite: Dependency checks | Customization integrity | redis-cluster +suite: Dependency checks | Customization integrity | valkey-cluster release: name: gitea-unittests namespace: testing set: - redis: + valkey: enabled: false - redis-cluster: + valkey-cluster: enabled: true usePassword: false cluster: nodes: 5 replicas: 2 tests: - - it: "[redis-cluster] configures correct nodes/replicas" - template: charts/redis-cluster/templates/redis-statefulset.yaml + - it: "[valkey-cluster] configures correct nodes/replicas" + template: charts/valkey-cluster/templates/valkey-statefulset.yaml asserts: - documentIndex: 0 equal: @@ -22,31 +22,31 @@ tests: - documentIndex: 0 matchRegex: path: spec.template.spec.containers[0].args[0] - pattern: REDIS_CLUSTER_REPLICAS="2" - - it: "[redis-cluster] support auth-less connections" + pattern: VALKEY_CLUSTER_REPLICAS="2" + - it: "[valkey-cluster] support auth-less connections" asserts: - - template: charts/redis-cluster/templates/secret.yaml + - template: charts/valkey-cluster/templates/secret.yaml hasDocuments: count: 0 - - template: charts/redis-cluster/templates/redis-statefulset.yaml + - template: charts/valkey-cluster/templates/valkey-statefulset.yaml documentIndex: 0 contains: path: spec.template.spec.containers[0].env content: name: ALLOW_EMPTY_PASSWORD value: "yes" - - it: "[redis-cluster] support auth-full connections" + - it: "[valkey-cluster] support auth-full connections" set: - redis-cluster: + valkey-cluster: usePassword: true asserts: - - template: charts/redis-cluster/templates/secret.yaml + - template: charts/valkey-cluster/templates/secret.yaml containsDocument: kind: Secret apiVersion: v1 - name: gitea-unittests-redis-cluster + name: gitea-unittests-valkey-cluster namespace: testing - - template: charts/redis-cluster/templates/redis-statefulset.yaml + - template: charts/valkey-cluster/templates/valkey-statefulset.yaml documentIndex: 0 contains: path: spec.template.spec.containers[0].env @@ -54,25 +54,25 @@ tests: name: REDISCLI_AUTH valueFrom: secretKeyRef: - name: gitea-unittests-redis-cluster - key: redis-password - - template: charts/redis-cluster/templates/redis-statefulset.yaml + name: gitea-unittests-valkey-cluster + key: valkey-password + - template: charts/valkey-cluster/templates/valkey-statefulset.yaml documentIndex: 0 contains: path: spec.template.spec.containers[0].env content: - name: REDIS_PASSWORD + name: REDISCLI_AUTH valueFrom: secretKeyRef: - name: gitea-unittests-redis-cluster - key: redis-password - - it: "[redis-cluster] renders the referenced service" - template: charts/redis-cluster/templates/headless-svc.yaml + name: gitea-unittests-valkey-cluster + key: valkey-password + - it: "[valkey-cluster] renders the referenced service" + template: charts/valkey-cluster/templates/headless-svc.yaml asserts: - containsDocument: kind: Service apiVersion: v1 - name: gitea-unittests-redis-cluster-headless + name: gitea-unittests-valkey-cluster-headless namespace: testing - documentIndex: 0 contains: @@ -81,10 +81,10 @@ tests: name: tcp-redis port: 6379 targetPort: tcp-redis - - it: "[gitea] waits for redis-cluster to be up and running" + - it: "[gitea] waits for valkey-cluster to be up and running" template: templates/gitea/init.yaml asserts: - documentIndex: 0 matchRegex: path: stringData["configure_gitea.sh"] - pattern: nc -vz -w2 gitea-unittests-redis-cluster-headless.testing.svc.cluster.local 6379 + pattern: nc -vz -w2 gitea-unittests-valkey-cluster-headless.testing.svc.cluster.local 6379 diff --git a/unittests/helm/dependency-checks/customization-integrity-redis.yaml b/unittests/helm/dependency-checks/customization-integrity-valkey.yaml similarity index 53% rename from unittests/helm/dependency-checks/customization-integrity-redis.yaml rename to unittests/helm/dependency-checks/customization-integrity-valkey.yaml index 42779f3..40c0fc0 100644 --- a/unittests/helm/dependency-checks/customization-integrity-redis.yaml +++ b/unittests/helm/dependency-checks/customization-integrity-valkey.yaml @@ -1,40 +1,40 @@ -suite: Dependency checks | Customization integrity | redis +suite: Dependency checks | Customization integrity | valkey release: name: gitea-unittests namespace: testing set: - redis-cluster: + valkey-cluster: enabled: false - redis: + valkey: enabled: true architecture: standalone global: - redis: + valkey: password: gitea-password master: count: 2 tests: - - it: "[redis] configures correct 'master' nodes" - template: charts/redis/templates/master/application.yaml + - it: "[valkey] configures correct 'master' nodes" + template: charts/valkey/templates/primary/application.yaml asserts: - documentIndex: 0 equal: path: spec.replicas - value: 2 - - it: "[redis] redis.global.redis.password is applied as expected" - template: charts/redis/templates/secret.yaml + value: 1 + - it: "[valkey] valkey.global.valkey.password is applied as expected" + template: charts/valkey/templates/secret.yaml asserts: - documentIndex: 0 equal: - path: data["redis-password"] + path: data["valkey-password"] value: "Z2l0ZWEtcGFzc3dvcmQ=" - - it: "[redis] renders the referenced service" - template: charts/redis/templates/headless-svc.yaml + - it: "[valkey] renders the referenced service" + template: charts/valkey/templates/headless-svc.yaml asserts: - containsDocument: kind: Service apiVersion: v1 - name: gitea-unittests-redis-headless + name: gitea-unittests-valkey-headless namespace: testing - documentIndex: 0 contains: @@ -43,10 +43,10 @@ tests: name: tcp-redis port: 6379 targetPort: redis - - it: "[gitea] waits for redis to be up and running" + - it: "[gitea] waits for valkey to be up and running" template: templates/gitea/init.yaml asserts: - documentIndex: 0 matchRegex: path: stringData["configure_gitea.sh"] - pattern: nc -vz -w2 gitea-unittests-redis-headless.testing.svc.cluster.local 6379 + pattern: nc -vz -w2 gitea-unittests-valkey-headless.testing.svc.cluster.local 6379 diff --git a/unittests/helm/dependency-checks/major-image-bump.yaml b/unittests/helm/dependency-checks/major-image-bump.yaml index 9dd0688..ab4089f 100644 --- a/unittests/helm/dependency-checks/major-image-bump.yaml +++ b/unittests/helm/dependency-checks/major-image-bump.yaml @@ -29,29 +29,29 @@ tests: path: spec.template.spec.containers[0].image # IN CASE OF AN INTENTIONAL MAJOR BUMP, ADJUST THIS TEST pattern: bitnami/postgresql:17.+$ - - it: "[redis-cluster] ensures we detect major image version upgrades" - template: charts/redis-cluster/templates/redis-statefulset.yaml + - it: "[valkey-cluster] ensures we detect major image version upgrades" + template: charts/valkey-cluster/templates/valkey-statefulset.yaml set: - redis-cluster: + valkey-cluster: enabled: true - redis: + valkey: enabled: false asserts: - documentIndex: 0 matchRegex: path: spec.template.spec.containers[0].image # IN CASE OF AN INTENTIONAL MAJOR BUMP, ADJUST THIS TEST - pattern: bitnami/redis-cluster:7.+$ - - it: "[redis] ensures we detect major image version upgrades" - template: charts/redis/templates/master/application.yaml + pattern: bitnami/valkey-cluster:8.+$ + - it: "[valkey] ensures we detect major image version upgrades" + template: charts/valkey/templates/primary/application.yaml set: - redis-cluster: + valkey-cluster: enabled: false - redis: + valkey: enabled: true asserts: - documentIndex: 0 matchRegex: path: spec.template.spec.containers[0].image # IN CASE OF AN INTENTIONAL MAJOR BUMP, ADJUST THIS TEST - pattern: bitnami/redis:7.+$ + pattern: bitnami/valkey:8.+$ diff --git a/unittests/helm/values-conflicting-checks.yaml b/unittests/helm/values-conflicting-checks.yaml index a257690..a1ba969 100644 --- a/unittests/helm/values-conflicting-checks.yaml +++ b/unittests/helm/values-conflicting-checks.yaml @@ -3,12 +3,12 @@ release: name: gitea-unittests namespace: testing tests: - - it: fails when trying to configure redis and redis-cluster the same time + - it: fails when trying to configure valkey and valkey-cluster the same time set: - redis-cluster: + valkey-cluster: enabled: true - redis: + valkey: enabled: true asserts: - failedTemplate: - errorMessage: redis and redis-cluster cannot be enabled at the same time. Please only choose one. + errorMessage: valkey and valkey-cluster cannot be enabled at the same time. Please only choose one. diff --git a/values.yaml b/values.yaml index 6f6fe9b..0218ddb 100644 --- a/values.yaml +++ b/values.yaml @@ -509,41 +509,51 @@ gitea: successThreshold: 1 failureThreshold: 10 -## @section redis-cluster -## @param redis-cluster.enabled Enable redis cluster -# ⚠️ The redis charts do not work well with special characters in the password (). +## @section valkey-cluster +## @param valkey-cluster.enabled Enable valkey cluster +# ⚠️ The valkey charts do not work well with special characters in the password (). # Consider omitting such or open an issue in the Bitnami repo and let us know once this got fixed. -## @param redis-cluster.usePassword Whether to use password authentication -## @param redis-cluster.cluster.nodes Number of redis cluster master nodes -## @param redis-cluster.cluster.replicas Number of redis cluster master node replicas +## @param valkey-cluster.usePassword Whether to use password authentication +## @param valkey-cluster.usePasswordFiles Whether to mount passwords as files instead of environment variables +## @param valkey-cluster.cluster.nodes Number of valkey cluster master nodes +## @param valkey-cluster.cluster.replicas Number of valkey cluster master node replicas +## @param valkey-cluster.service.ports.valkey Port of Valkey service ## @descriptionStart -## Redis cluster and [Redis](#redis) cannot be enabled at the same time. +## Valkey cluster and [Valkey](#valkey) cannot be enabled at the same time. ## @descriptionEnd -redis-cluster: +valkey-cluster: enabled: true usePassword: false + usePasswordFiles: false cluster: nodes: 3 # default: 6 replicas: 0 # default: 1 + service: + ports: + valkey: 6379 -## @section redis -## @param redis.enabled Enable redis standalone or replicated -## @param redis.architecture Whether to use standalone or replication -# ⚠️ The redis charts do not work well with special characters in the password (). +## @section valkey +## @param valkey.enabled Enable valkey standalone or replicated +## @param valkey.architecture Whether to use standalone or replication +# ⚠️ The valkey charts do not work well with special characters in the password (). # Consider omitting such or open an issue in the Bitnami repo and let us know once this got fixed. -## @param redis.global.redis.password Required password -## @param redis.master.count Number of Redis master instances to deploy +## @param valkey.global.valkey.password Required password +## @param valkey.master.count Number of Valkey master instances to deploy +## @param valkey.master.service.ports.valkey Port of Valkey service ## @descriptionStart -## Redis and [Redis cluster](#redis-cluster) cannot be enabled at the same time. +## Valkey and [Valkey cluster](#valkey-cluster) cannot be enabled at the same time. ## @descriptionEnd -redis: +valkey: enabled: false architecture: standalone global: - redis: + valkey: password: changeme master: count: 1 + service: + ports: + valkey: 6379 ## @section PostgreSQL HA #