You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/content/en/open_source/upgrading/2.53.md
+38-4Lines changed: 38 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,31 +2,63 @@
2
2
title: 'Upgrading to DefectDojo Version 2.53.x'
3
3
toc_hide: true
4
4
weight: -20251103
5
-
description: Helm chart changes for initializer annotations.
5
+
description: "Helm chart: changes for initializer annotations + Replaced Redis with Valkey"
6
6
---
7
7
8
8
## Helm Chart Changes
9
9
10
-
This release introduces an important change to the Helm chart configuration for the initializer job.
10
+
- This release introduces an important change to the Helm chart configuration for the initializer job.
11
+
- DefectDojo `2.52.0` replaced Redis with Valkey in `docker-compose` deployment. DefectDojo `2.53.0` (chart `1.9.0`) is replacing it in HELM charts.
11
12
12
13
### Breaking changes
13
14
15
+
#### Valkey
16
+
17
+
##### Renamed values
18
+
19
+
HELM values had been changed to the following:
20
+
-`createRedisSecret` → `createValkeySecret` (`createRedisSecret` is still in place to be able to correctly show error message, but it will be removed in the future)
21
+
-`redis.enabled` → `valkey.enabled`
22
+
-`redis.auth.existingSecret` → `valkey.auth.existingSecret`, plus value is pointing to secret `defectdojo-valkey-specific` now
23
+
-`redis.auth.existingSecretPasswordKey` → `valkey.auth.existingSecretPasswordKey`, plus value is pointing to secret `valkey-password` now
The whole subchart is based on [`cloudpirates-valkey`](https://artifacthub.io/packages/helm/cloudpirates-valkey/valkey), so all additional values can be found there.
30
+
31
+
##### How to migrate to Valkey
32
+
33
+
0. As always, perform a backup of your instance
34
+
1. If you would like to be 100% sure that you do not miss any async event (triggered deduplication, email notification, ...) it is recommended to perform the following substeps (if your system is not in production and/or you are willing to miss some notifications or postpone deduplication to a later time, feel free to skip these substeps)
35
+
0. Perform the following steps with your previous version of HELM chart (not with the upgraded one - you might lose your data)
36
+
1. Downscale all producers of async tasks:
37
+
- Set `django.replicas` to 0 (if you used HPA, adjust it based on your needs)
38
+
- Set `celery.beat.replicas` to 0 (if you used HPA, adjust it based on your needs)
39
+
- Do not change `celery.worker.replicas` (they are responsible for processing your async tasks)
40
+
2. Wait until the processing queue is empty (choose one of the following methods):
41
+
-``kubectl exec statefulset/defectdojo-redis-master -c redis -- redis-cli -a `kubectl get secret defectdojo-redis-specific -o go-template='{{index .data "redis-password" | base64decode}}'` llen celery`` -- should output 0 (if your HELM chart used a different name, adjust the command based on your environment)
42
+
-`kubectl logs deployment/defectdojo-celery-worker -c celery --all-pods=true --follow` -- should stop outputting new task logs
43
+
2. Replace values based on the _Renamed values_ part, update the chart version, and set the number of replicas back. Be aware that Valkey is using a password from the new location, and if you use `createRedisSecret`/`createValkeySecret` password will be regenerated. If you stored this password somewhere else, it will not be valid anymore.
44
+
3. Enjoy DefectDojo
45
+
14
46
#### Initializer Annotation Handling
15
47
16
48
-**Renamed initializer annotations**: The `initializer.annotations` field has been renamed to `initializer.podAnnotations` for clarity and consistency with other DefectDojo resources.
17
49
-**Merged annotation support**: Global `extraAnnotations` are now automatically merged with the initializer's `podAnnotations` to ensure consistent annotation handling across all resources.
18
50
19
51
> The previous implementation did not merge global `extraAnnotations` with the initializer job's pod annotations, causing inconsistencies in annotation management.
20
52
21
-
#### Moved values
53
+
#####Moved values
22
54
23
55
The following Helm chart values have been modified in this release:
24
56
25
57
-`initializer.annotations` → `initializer.podAnnotations` (applies to Pod template metadata within the Job)
26
58
27
59
Note: `initializer.jobAnnotations` affects the Job spec metadata, while `initializer.podAnnotations` affects the Pod template metadata within the Job.
28
60
29
-
#### Migration
61
+
#####Migration
30
62
31
63
If you were using:
32
64
@@ -49,3 +81,5 @@ Both `extraAnnotations` and `initializer.podAnnotations` will now be properly ap
49
81
## Reimport updates fields fix_available and fix_version
50
82
51
83
Reimport will update existing findings `fix_available` and `fix_version` fields based on the incoming scan report.
84
+
85
+
There are other special instructions for upgrading to 2.53.x. Check the [Release Notes](https://github.com/DefectDojo/django-DefectDojo/releases/tag/2.53.0) for the contents of the release.
# For high availability deploy multiple instances of Django, Celery and Redis
286
+
# For high availability deploy multiple instances of Django, Celery and Valkey
287
287
helm install \
288
288
defectdojo \
289
289
./helm/defectdojo \
@@ -292,9 +292,10 @@ helm install \
292
292
--set django.ingress.secretName="minikube-tls" \
293
293
--set django.replicas=3 \
294
294
--set celery.worker.replicas=3 \
295
-
--set redis.replicas=3 \
295
+
--set valkey.architecture=replication \
296
+
--set valkey.replicaCount=3 \
296
297
--set createSecret=true \
297
-
--set createRedisSecret=true \
298
+
--set createValkeySecret=true \
298
299
--set createPostgresqlSecret=true
299
300
300
301
# Run highly available PostgreSQL cluster
@@ -306,13 +307,14 @@ helm install \
306
307
--set host="defectdojo.${TLS_CERT_DOMAIN}" \
307
308
--set django.replicas=3 \
308
309
--set celery.worker.replicas=3 \
309
-
--set redis.replicas=3 \
310
+
--set valkey.architecture=replication \
311
+
--set valkey.replicaCount=3 \
310
312
--set django.ingress.secretName="minikube-tls" \
311
313
--set postgresql.enabled=true \
312
314
--set postgresql.replication.enabled=true \
313
315
--set postgresql.replication.slaveReplicas=3 \
314
316
--set createSecret=true \
315
-
--set createRedisSecret=true \
317
+
--set createValkeySecret=true \
316
318
--set createPostgresqlSecret=true
317
319
318
320
# Note: If you run `helm install defectdojo before, you will get an error
@@ -359,16 +361,13 @@ You will still need to set a host value as well.
359
361
360
362
If you want to use a redis-sentinel setup as the Celery broker, you will need to set the following.
361
363
362
-
1. Set redis.scheme to "sentinel" in values.yaml
364
+
1. Set valkey.scheme to "sentinel" in values.yaml
363
365
2. Set two additional extraEnv vars specifying the sentinel master name and port in values.yaml
364
366
365
367
```yaml
366
-
celery:
367
-
broker: 'redis'
368
-
369
-
redis:
370
-
redisServer: 'PutYourRedisSentinelAddress'
368
+
valkey:
371
369
scheme: 'sentinel'
370
+
redisServer: 'PutYourRedisSentinelAddress'
372
371
373
372
extraEnv:
374
373
- name: DD_CELERY_BROKER_TRANSPORT_OPTIONS
@@ -451,10 +450,10 @@ extraEnv:
451
450
452
451
#### Step 4: Deploy DefectDojo
453
452
454
-
After modifying the `values.yaml` file as needed, deploy DefectDojo using Helm. This command also generates the required secrets for the DefectDojo admin UI and Redis:
453
+
After modifying the `values.yaml` file as needed, deploy DefectDojo using Helm. This command also generates the required secrets for the DefectDojo admin UI and Valkey:
**NOTE**: It is important to highlight that this setup can also be utilized for achieving high availability (HA) in PostgreSQL. By placing a load balancer in front of the PostgreSQL cluster, read and write requests can be efficiently routed to the appropriate primary or standby servers as needed.
@@ -526,8 +525,8 @@ A Helm chart for Kubernetes to install DefectDojo
| createValkeySecret | bool | `false` | create valkey secret in defectdojo chart, outside of valkey chart |
605
603
| dbMigrationChecker.containerSecurityContext | object | `{}` | Container security context for the DB migration checker. |
606
604
| dbMigrationChecker.enabled | bool | `true` | Enable/disable the DB migration checker. |
607
605
| dbMigrationChecker.extraEnv | list | `[]` | Additional environment variables for DB migration checker. |
@@ -744,10 +742,7 @@ A Helm chart for Kubernetes to install DefectDojo
744
742
| postgresql.primary.podSecurityContext.enabled | bool | `true` | Default is true for K8s. Enabled needs to false for OpenShift restricted SCC and true for anyuid SCC |
745
743
| postgresql.primary.podSecurityContext.fsGroup | int | `1001` | fsGroup specification below is not applied if enabled=false. enabled=false is the required setting for OpenShift "restricted SCC" to work successfully. |
746
744
| postgresql.volumePermissions.containerSecurityContext | object | `{"runAsUser":1001}` | if using restricted SCC set runAsUser: "auto" and if running under anyuid SCC - runAsUser needs to match the line above |
747
-
| redis | object | `{"architecture":"standalone","auth":{"existingSecret":"defectdojo-redis-specific","existingSecretPasswordKey":"redis-password","password":""},"enabled":true,"sentinel":{"enabled":false},"tls":{"enabled":false}}` | For more advance options check the bitnami chart documentation: https://github.com/bitnami/charts/tree/main/bitnami/redis |
748
-
| redis.enabled | bool | `true` | To use an external instance, switch enabled to `false`` and set the address in `redisServer` below |
749
-
| redis.tls.enabled | bool | `false` | If TLS is enabled, the Redis broker will use the redis:// and optionally mount the certificates from an existing secret. |
750
-
| redisParams | string | `""` | Parameters attached to the redis connection string, defaults to "ssl_cert_reqs=optional" if `redis.tls.enabled` |
745
+
| redisParams | string | `""` | Parameters attached to the redis connection string, defaults to "ssl_cert_reqs=optional" if `valkey.tls.enabled` |
751
746
| redisServer | string | `nil` | To use an external Redis instance, set `redis.enabled` to false and set the address here: |
752
747
| revisionHistoryLimit | int | `10` | Allow overriding of revisionHistoryLimit across all deployments. |
| trackConfig | string | `"disabled"` | Track configuration (trackConfig): will automatically respin application pods in case of config changes detection can be: 1. disabled (default) 2. enabled, enables tracking configuration changes based on SHA256 |
762
+
| valkey | object | `{"auth":{"existingSecret":"defectdojo-valkey-specific","existingSecretPasswordKey":"valkey-password","password":""},"enabled":true,"sentinel":{"enabled":false},"service":{"port":6379},"tls":{"enabled":false}}` | For more advance options check the bitnami chart documentation: https://artifacthub.io/packages/helm/cloudpirates-valkey/valkey |
763
+
| valkey.enabled | bool | `true` | To use an external instance, switch enabled to `false` and set the address in `redisServer` below |
764
+
| valkey.service | object | `{"port":6379}` | To use a different port for Redis (default: 6379) |
765
+
| valkey.tls.enabled | bool | `false` | If TLS is enabled, the Redis broker will use the redis:// and optionally mount the certificates from an existing secret. |
767
766
768
767
----------------------------------------------
769
768
Autogenerated from chart metadata using [helm-docs v1.14.2](https://github.com/norwoodj/helm-docs/releases/v1.14.2)
# For high availability deploy multiple instances of Django, Celery and Redis
286
+
# For high availability deploy multiple instances of Django, Celery and Valkey
287
287
helm install \
288
288
defectdojo \
289
289
./helm/defectdojo \
@@ -292,9 +292,10 @@ helm install \
292
292
--set django.ingress.secretName="minikube-tls" \
293
293
--set django.replicas=3 \
294
294
--set celery.worker.replicas=3 \
295
-
--set redis.replicas=3 \
295
+
--set valkey.architecture=replication \
296
+
--set valkey.replicaCount=3 \
296
297
--set createSecret=true \
297
-
--set createRedisSecret=true \
298
+
--set createValkeySecret=true \
298
299
--set createPostgresqlSecret=true
299
300
300
301
# Run highly available PostgreSQL cluster
@@ -306,13 +307,14 @@ helm install \
306
307
--set host="defectdojo.${TLS_CERT_DOMAIN}" \
307
308
--set django.replicas=3 \
308
309
--set celery.worker.replicas=3 \
309
-
--set redis.replicas=3 \
310
+
--set valkey.architecture=replication \
311
+
--set valkey.replicaCount=3 \
310
312
--set django.ingress.secretName="minikube-tls" \
311
313
--set postgresql.enabled=true \
312
314
--set postgresql.replication.enabled=true \
313
315
--set postgresql.replication.slaveReplicas=3 \
314
316
--set createSecret=true \
315
-
--set createRedisSecret=true \
317
+
--set createValkeySecret=true \
316
318
--set createPostgresqlSecret=true
317
319
318
320
# Note: If you run `helm install defectdojo before, you will get an error
@@ -359,16 +361,13 @@ You will still need to set a host value as well.
359
361
360
362
If you want to use a redis-sentinel setup as the Celery broker, you will need to set the following.
361
363
362
-
1. Set redis.scheme to "sentinel" in values.yaml
364
+
1. Set valkey.scheme to "sentinel" in values.yaml
363
365
2. Set two additional extraEnv vars specifying the sentinel master name and port in values.yaml
364
366
365
367
```yaml
366
-
celery:
367
-
broker: 'redis'
368
-
369
-
redis:
370
-
redisServer: 'PutYourRedisSentinelAddress'
368
+
valkey:
371
369
scheme: 'sentinel'
370
+
redisServer: 'PutYourRedisSentinelAddress'
372
371
373
372
extraEnv:
374
373
- name: DD_CELERY_BROKER_TRANSPORT_OPTIONS
@@ -451,10 +450,10 @@ extraEnv:
451
450
452
451
#### Step 4: Deploy DefectDojo
453
452
454
-
After modifying the `values.yaml` file as needed, deploy DefectDojo using Helm. This command also generates the required secrets for the DefectDojo admin UI and Redis:
453
+
After modifying the `values.yaml` file as needed, deploy DefectDojo using Helm. This command also generates the required secrets for the DefectDojo admin UI and Valkey:
0 commit comments