From 3126341b9ed9218d267470d00f5a17a4d4c9ee7b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Maik=20Scha=CC=88fer?= <maik.schaefer@open-xchange.com>
Date: Thu, 14 Sep 2023 17:27:09 +0200
Subject: [PATCH] Changed: Update redis values in helm chart

---
 .env.defaults                                    |  2 ++
 README.md                                        |  4 +++-
 helm/core-ui-middleware/Chart.yaml               |  2 +-
 helm/core-ui-middleware/templates/_helpers.tpl   |  8 ++++++++
 .../core-ui-middleware/templates/deployment.yaml | 16 +++++++++++++++-
 .../templates/redis-secret.yaml                  | 10 ++++++++++
 helm/core-ui-middleware/templates/updater.yaml   | 16 +++++++++++++++-
 helm/core-ui-middleware/values.yaml              |  6 +++++-
 src/redis.js                                     |  1 +
 9 files changed, 60 insertions(+), 5 deletions(-)
 create mode 100644 helm/core-ui-middleware/templates/redis-secret.yaml

diff --git a/.env.defaults b/.env.defaults
index cf8181f..b80b50c 100644
--- a/.env.defaults
+++ b/.env.defaults
@@ -14,4 +14,6 @@ REDIS_SENTINEL_MASTER_ID=mymaster
 REDIS_DB=0
 REDIS_PREFIX=ui-middleware
 REDIS_HOSTS=localhost:6379
+REDIS_USERNAME=
+REDIS_PASSWORD=
 ORIGINS=*
diff --git a/README.md b/README.md
index 5e3a084..b3fc64e 100644
--- a/README.md
+++ b/README.md
@@ -43,7 +43,9 @@ It is possible to horizontally scale the UI Middleware, as more clients are fetc
 | N/A (see above)          | `REDIS_HOSTS`              | Redis hosts as string                        | `"localhost:6379"`   |
 | `redis.db`               | `REDIS_DB`                 | Redis DB, e.g. `"1"`                         | null                 |
 | `redis.prefix`           | `REDIS_PREFIX`             | Redis prefix                                 | `"ui-middleware"`    |
-| `redis.password`         | `REDIS_PASSWORD`           | Redis password                               | null                 |
+| `redis.auth.enabled`     | N/A                        | Generate redis auth secret                   | `false`              |
+| `redis.username`         | `REDIS_USERNAME`           | Redis username                               | `""`                 |
+| `redis.password`         | `REDIS_PASSWORD`           | Redis password                               | `""`                 |
 | `redis.sidecar.image`    | N/A                        | Redis sidecar image                          | `"redis:latest"`     |
 | `compressFileSize`       | `COMPRESS_FILE_SIZE`       | Larger files will be gzipped                 | `600`                |
 | `compressFileTypes`      | `COMPRESS_FILE_TYPES`      | Set of compression mime types                | application/javascript application/json application/x-javascript application/xml application/xml+rss text/css text/html text/javascript text/plain text/xml image/svg+xml |
diff --git a/helm/core-ui-middleware/Chart.yaml b/helm/core-ui-middleware/Chart.yaml
index 51c966e..fe4cfe9 100644
--- a/helm/core-ui-middleware/Chart.yaml
+++ b/helm/core-ui-middleware/Chart.yaml
@@ -15,7 +15,7 @@ type: application
 # This is the chart version. This version number should be incremented each time you make changes
 # to the chart and its templates, including the app version.
 # Versions are expected to follow Semantic Versioning (https://semver.org/)
-version: 2.0.1
+version: 2.1.0
 
 # This is the version number of the application being deployed. This version number should be
 # incremented each time you make changes to the application. Versions are not expected to
diff --git a/helm/core-ui-middleware/templates/_helpers.tpl b/helm/core-ui-middleware/templates/_helpers.tpl
index bb0eb98..26a5e60 100644
--- a/helm/core-ui-middleware/templates/_helpers.tpl
+++ b/helm/core-ui-middleware/templates/_helpers.tpl
@@ -60,3 +60,11 @@ Create the name of the service account to use
 {{- default "default" .Values.serviceAccount.name }}
 {{- end }}
 {{- end }}
+
+{{- define "core-ui-middleware.redisSecret" -}}
+{{- if .Values.overrides.redisSecret -}}
+{{- .Values.overrides.redisSecret -}}
+{{- else -}}
+{{- printf "%s-%s" .Release.Name "core-ui-middleware-redis" | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
+{{- end -}}
diff --git a/helm/core-ui-middleware/templates/deployment.yaml b/helm/core-ui-middleware/templates/deployment.yaml
index 422818d..8b5d0b7 100644
--- a/helm/core-ui-middleware/templates/deployment.yaml
+++ b/helm/core-ui-middleware/templates/deployment.yaml
@@ -41,8 +41,22 @@ spec:
               value: "{{ .Values.redis.hosts | join "," }}"
             - name: REDIS_DB
               value: "{{ .Values.redis.db | int }}"
+            {{- if eq .Values.redis.mode "sentinel" }}
+            - name: REDIS_SENTINEL_MASTER_ID
+              value: {{ .Values.redis.sentinelMasterId | quote }}
+            {{- end }}
+            {{- if .Values.redis.auth.enabled }}
+            - name: REDIS_USERNAME
+              valueFrom:
+                secretKeyRef:
+                  name: {{ include "core-ui-middleware.redisSecret" . }}
+                  key: username
             - name: REDIS_PASSWORD
-              value: "{{ .Values.redis.password }}"
+              valueFrom:
+                secretKeyRef:
+                  name: {{ include "core-ui-middleware.redisSecret" . }}
+                  key: password
+            {{- end }}
             - name: REDIS_PREFIX
               value: "{{ .Values.redis.prefix }}"
           ports:
diff --git a/helm/core-ui-middleware/templates/redis-secret.yaml b/helm/core-ui-middleware/templates/redis-secret.yaml
new file mode 100644
index 0000000..749fdb4
--- /dev/null
+++ b/helm/core-ui-middleware/templates/redis-secret.yaml
@@ -0,0 +1,10 @@
+{{- if .Values.redis.auth.enabled -}}
+apiVersion: v1
+kind: Secret
+metadata:
+  name: {{ include "core-ui-middleware.redisSecret" . }}
+type: Opaque
+data:
+  username: {{ .Values.redis.auth.username | b64enc | quote }}
+  password: {{ .Values.redis.auth.password | b64enc | quote }}
+{{- end -}}
diff --git a/helm/core-ui-middleware/templates/updater.yaml b/helm/core-ui-middleware/templates/updater.yaml
index dab7502..3d42e62 100644
--- a/helm/core-ui-middleware/templates/updater.yaml
+++ b/helm/core-ui-middleware/templates/updater.yaml
@@ -41,8 +41,22 @@ spec:
               value: "{{ .Values.redis.hosts | join "," }}"
             - name: REDIS_DB
               value: "{{ .Values.redis.db | int }}"
+            {{- if eq .Values.redis.mode "sentinel" }}
+            - name: REDIS_SENTINEL_MASTER_ID
+              value: {{ .Values.redis.sentinelMasterId | quote }}
+            {{- end }}
+            {{- if .Values.redis.auth.enabled }}
+            - name: REDIS_USERNAME
+              valueFrom:
+                secretKeyRef:
+                  name: {{ include "core-ui-middleware.redisSecret" . }}
+                  key: username
             - name: REDIS_PASSWORD
-              value: "{{ .Values.redis.password }}"
+              valueFrom:
+                secretKeyRef:
+                  name: {{ include "core-ui-middleware.redisSecret" . }}
+                  key: password
+            {{- end }}
             - name: REDIS_PREFIX
               value: "{{ .Values.redis.prefix }}"
           ports:
diff --git a/helm/core-ui-middleware/values.yaml b/helm/core-ui-middleware/values.yaml
index e7ecf74..620cdb1 100644
--- a/helm/core-ui-middleware/values.yaml
+++ b/helm/core-ui-middleware/values.yaml
@@ -120,7 +120,11 @@ redis:
   hosts:
     - localhost:6379
   db: 0
-  password: null
+  sentinelMasterId: "mymaster"
+  auth:
+    enabled: false
+    username: ""
+    password: ""
   prefix: ui-middleware
   # This is only used for development. A sidecar container is started in the pod.
   # Note: This does not scale!
diff --git a/src/redis.js b/src/redis.js
index 66f8b46..1899d91 100644
--- a/src/redis.js
+++ b/src/redis.js
@@ -32,6 +32,7 @@ const hosts = (process.env.REDIS_HOSTS || '').split(',').map(host => {
 
 export function createClient (id, options = commonQueueOptions) {
   options = {
+    username: process.env.REDIS_USERNAME,
     db: Number(process.env.REDIS_DB),
     password: process.env.REDIS_PASSWORD,
     ...options
-- 
GitLab