From 22add081f295a220a43a30a835922b6fdd017a2e Mon Sep 17 00:00:00 2001 From: Kieren Evans Date: Sun, 30 Oct 2022 07:46:08 +0200 Subject: [PATCH 1/5] Allow configuring redis options --- .../service/redis-session.yml.twig | 7 ++-- .../docker-compose.yml/service/redis.yml.twig | 7 ++-- src/_base/harness/attributes/docker-base.yml | 36 ++++++++++++------- 3 files changed, 34 insertions(+), 16 deletions(-) diff --git a/src/_base/_twig/docker-compose.yml/service/redis-session.yml.twig b/src/_base/_twig/docker-compose.yml/service/redis-session.yml.twig index 7f037d33b..0ba5aca1d 100644 --- a/src/_base/_twig/docker-compose.yml/service/redis-session.yml.twig +++ b/src/_base/_twig/docker-compose.yml/service/redis-session.yml.twig @@ -1,7 +1,10 @@ +{% set command = @('services.redis-session.options') + | filter(v => v is not empty) + | map((value, var) => '--' ~ var ~ ' ' ~ value|join(' --' ~ var ~ ' ')) + | reduce((carry, v) => carry|merge([v]), []) %} redis-session: image: {{ @('services.redis-session.image') }} - # 1GB; evict key that would expire soonest - command: redis-server --maxmemory 1073742000 --maxmemory-policy volatile-ttl --save 3600 1 --save 300 100 --save 60 10000 + command: {{ to_nice_yaml(command, 2, 6) }} labels: # deprecated, a later workspace release will disable by default - traefik.enable=false diff --git a/src/_base/_twig/docker-compose.yml/service/redis.yml.twig b/src/_base/_twig/docker-compose.yml/service/redis.yml.twig index de561be92..cd6bd9f0e 100644 --- a/src/_base/_twig/docker-compose.yml/service/redis.yml.twig +++ b/src/_base/_twig/docker-compose.yml/service/redis.yml.twig @@ -1,7 +1,10 @@ +{% set command = @('services.redis.options') + | filter(v => v is not empty) + | map((value, var) => '--' ~ var ~ ' ' ~ value|join(' --' ~ var ~ ' ')) + | reduce((carry, v) => carry|merge([v]), []) %} redis: image: {{ @('services.redis.image') }} - # 1GB; evict any least recently used key even if they don't have a TTL - command: redis-server --maxmemory 1073742000 --maxmemory-policy allkeys-lru --save 3600 1 --save 300 100 --save 60 10000 + command: {{ to_nice_yaml(command, 2, 6) }} labels: # deprecated, a later workspace release will disable by default - traefik.enable=false diff --git a/src/_base/harness/attributes/docker-base.yml b/src/_base/harness/attributes/docker-base.yml index d277661d5..9f036561d 100644 --- a/src/_base/harness/attributes/docker-base.yml +++ b/src/_base/harness/attributes/docker-base.yml @@ -150,15 +150,33 @@ attributes: resources: memory: "1024Mi" redis: - enabled: "= 'redis' in @('app.services')" - image: redis:5-alpine + image: redis:6-alpine + options: + activedefrag: 'yes' + # 1Gi - 1024*1024*1024 bytes; evict any least recently used key even if they don't have a TTL + maxmemory: '1073741824' + maxmemory-policy: allkeys-lru + save: + - 3600 1 + - 300 100 + - 60 10000 resources: - memory: "256Mi" + # 1.5 * maxmemory to allow copy on write snapshots + memory: "1.5Gi" redis-session: - enabled: "= 'redis-session' in @('app.services')" - image: redis:5-alpine + image: redis:6-alpine + options: + activedefrag: 'yes' + # 1Gi - 1024*1024*1024 bytes; evict key that would expire soonest + maxmemory: '1073741824' + maxmemory-policy: volatile-ttl + save: + - 3600 1 + - 300 100 + - 60 10000 resources: - memory: "1024Mi" + # 1.5 * maxmemory to allow copy on write snapshots + memory: "1.5Gi" relay: enabled: true publish: false @@ -293,9 +311,3 @@ attributes: php-fpm-exporter: resources: memory: "32Mi" - redis: - resources: - memory: "64Mi" - redis-session: - resources: - memory: "64Mi" From 74df03ca1433de2b01c5f08f37d17c68d9ed1fc3 Mon Sep 17 00:00:00 2001 From: Kieren Evans Date: Sun, 30 Oct 2022 07:48:04 +0200 Subject: [PATCH 2/5] Also in helm --- .../service/redis-session/deployment.yaml | 23 +++++++------------ .../templates/service/redis/deployment.yaml | 23 +++++++------------ 2 files changed, 16 insertions(+), 30 deletions(-) diff --git a/src/_base/helm/app/templates/service/redis-session/deployment.yaml b/src/_base/helm/app/templates/service/redis-session/deployment.yaml index 1a86bef57..9aa417373 100644 --- a/src/_base/helm/app/templates/service/redis-session/deployment.yaml +++ b/src/_base/helm/app/templates/service/redis-session/deployment.yaml @@ -27,21 +27,14 @@ spec: app.service: {{ $.Values.resourcePrefix }}redis-session spec: containers: - - args: - - redis-server - - --maxmemory - - "1073742000" - - --maxmemory-policy - - volatile-ttl - - --save - - "3600" - - "1" - - --save - - "300" - - "100" - - --save - - "60" - - "10000" + - {{- if .options }} + args: + {{- range $var, $value := .options }} + {{- if $value }} + - {{ print "--" $var " " $value | quote }} + {{- end }} + {{- end }} + {{- end }} image: {{ .image | quote }} imagePullPolicy: Always name: redis-session diff --git a/src/_base/helm/app/templates/service/redis/deployment.yaml b/src/_base/helm/app/templates/service/redis/deployment.yaml index 267ba30b5..261e635c0 100644 --- a/src/_base/helm/app/templates/service/redis/deployment.yaml +++ b/src/_base/helm/app/templates/service/redis/deployment.yaml @@ -28,21 +28,14 @@ spec: app.service: {{ $.Values.resourcePrefix }}redis spec: containers: - - args: - - redis-server - - --maxmemory - - "1073742000" - - --maxmemory-policy - - allkeys-lru - - --save - - "3600" - - "1" - - --save - - "300" - - "100" - - --save - - "60" - - "10000" + - {{- if .options }} + args: + {{- range $var, $value := .options }} + {{- if $value }} + - {{ print "--" $var " " $value | quote }} + {{- end }} + {{- end }} + {{- end }} image: {{ .image | quote }} imagePullPolicy: Always name: redis From a7b124894871e2afef263eabc35cdbd01412fb6a Mon Sep 17 00:00:00 2001 From: Kieren Evans Date: Sun, 30 Oct 2022 07:53:02 +0200 Subject: [PATCH 3/5] Better comments --- src/_base/harness/attributes/docker-base.yml | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/_base/harness/attributes/docker-base.yml b/src/_base/harness/attributes/docker-base.yml index 9f036561d..57e286c71 100644 --- a/src/_base/harness/attributes/docker-base.yml +++ b/src/_base/harness/attributes/docker-base.yml @@ -152,10 +152,13 @@ attributes: redis: image: redis:6-alpine options: + # Handle many smaller keys activedefrag: 'yes' - # 1Gi - 1024*1024*1024 bytes; evict any least recently used key even if they don't have a TTL + # 1Gi - 1024*1024*1024 bytes maxmemory: '1073741824' + # Evict any least recently used key even if they don't have a TTL maxmemory-policy: allkeys-lru + # Save snapshots every X changes have happened within Y seconds (these are the defaults in redis.conf) save: - 3600 1 - 300 100 @@ -166,10 +169,13 @@ attributes: redis-session: image: redis:6-alpine options: + # Handle many smaller keys activedefrag: 'yes' - # 1Gi - 1024*1024*1024 bytes; evict key that would expire soonest + # 1Gi - 1024*1024*1024 bytes maxmemory: '1073741824' + # Evict key that would expire soonest maxmemory-policy: volatile-ttl + # Save snapshots every X changes have happened within Y seconds (these are the defaults in redis.conf) save: - 3600 1 - 300 100 From c2b3ed9cceab1505606c4fe8beff65f8271b091d Mon Sep 17 00:00:00 2001 From: Kieren Evans Date: Sun, 30 Oct 2022 08:02:17 +0200 Subject: [PATCH 4/5] Handle the multiple save array --- .../helm/app/templates/service/redis-session/deployment.yaml | 5 ++++- src/_base/helm/app/templates/service/redis/deployment.yaml | 5 +++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/_base/helm/app/templates/service/redis-session/deployment.yaml b/src/_base/helm/app/templates/service/redis-session/deployment.yaml index 9aa417373..10b808207 100644 --- a/src/_base/helm/app/templates/service/redis-session/deployment.yaml +++ b/src/_base/helm/app/templates/service/redis-session/deployment.yaml @@ -30,7 +30,10 @@ spec: - {{- if .options }} args: {{- range $var, $value := .options }} - {{- if $value }} + {{- if kindIs "slice" $value }} + {{- range $arrayValue := $value }} + - {{ print "--" $var " " $arrayValue | quote }} + {{- else }} - {{ print "--" $var " " $value | quote }} {{- end }} {{- end }} diff --git a/src/_base/helm/app/templates/service/redis/deployment.yaml b/src/_base/helm/app/templates/service/redis/deployment.yaml index 261e635c0..408adac2f 100644 --- a/src/_base/helm/app/templates/service/redis/deployment.yaml +++ b/src/_base/helm/app/templates/service/redis/deployment.yaml @@ -32,10 +32,15 @@ spec: args: {{- range $var, $value := .options }} {{- if $value }} + {{- if kindIs "slice" $value }} + {{- range $arrayValue := $value }} + - {{ print "--" $var " " $arrayValue | quote }} + {{- else }} - {{ print "--" $var " " $value | quote }} {{- end }} {{- end }} {{- end }} + {{- end }} image: {{ .image | quote }} imagePullPolicy: Always name: redis From 9bd4ce551bee06c1d02a0a1d4941fa31c5b2675f Mon Sep 17 00:00:00 2001 From: Kieren Evans Date: Sun, 30 Oct 2022 08:15:42 +0200 Subject: [PATCH 5/5] Send through options to helm, remove nested if statement --- src/_base/harness/attributes/docker-base.yml | 4 ++++ .../app/templates/service/redis-session/deployment.yaml | 5 +++-- src/_base/helm/app/templates/service/redis/deployment.yaml | 7 +++---- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/_base/harness/attributes/docker-base.yml b/src/_base/harness/attributes/docker-base.yml index 57e286c71..403cf1346 100644 --- a/src/_base/harness/attributes/docker-base.yml +++ b/src/_base/harness/attributes/docker-base.yml @@ -245,6 +245,10 @@ attributes: VARNISH_HOSTNAME_TEMPLATE: "{{ .Values.resourcePrefix }}varnish-%d.{{ .Values.resourcePrefix }}varnish-headless" mysql: options: = @('services.mysql.options') + redis: + options: = @('services.redis.options') + redis-session: + options: = @('services.redis-session.options') console: environment: TIDEWAYS_ENABLED: "= @('php.ext-tideways.cli.enable') ? '{{ .Values.services.tideways.enabled }}' : 'false'" diff --git a/src/_base/helm/app/templates/service/redis-session/deployment.yaml b/src/_base/helm/app/templates/service/redis-session/deployment.yaml index 10b808207..000092af2 100644 --- a/src/_base/helm/app/templates/service/redis-session/deployment.yaml +++ b/src/_base/helm/app/templates/service/redis-session/deployment.yaml @@ -30,10 +30,11 @@ spec: - {{- if .options }} args: {{- range $var, $value := .options }} - {{- if kindIs "slice" $value }} + {{- if and $value (kindIs "slice" $value) }} {{- range $arrayValue := $value }} - {{ print "--" $var " " $arrayValue | quote }} - {{- else }} + {{- end }} + {{- else if $value }} - {{ print "--" $var " " $value | quote }} {{- end }} {{- end }} diff --git a/src/_base/helm/app/templates/service/redis/deployment.yaml b/src/_base/helm/app/templates/service/redis/deployment.yaml index 408adac2f..016d4a2a5 100644 --- a/src/_base/helm/app/templates/service/redis/deployment.yaml +++ b/src/_base/helm/app/templates/service/redis/deployment.yaml @@ -31,13 +31,12 @@ spec: - {{- if .options }} args: {{- range $var, $value := .options }} - {{- if $value }} - {{- if kindIs "slice" $value }} + {{- if and $value (kindIs "slice" $value) }} {{- range $arrayValue := $value }} - {{ print "--" $var " " $arrayValue | quote }} - {{- else }} - - {{ print "--" $var " " $value | quote }} {{- end }} + {{- else if $value }} + - {{ print "--" $var " " $value | quote }} {{- end }} {{- end }} {{- end }}