Skip to content

Commit c1eb646

Browse files
authored
Feat/presets (#25)
* feat: add graylog version top-level value * refactor presets helper (fka quicksetup helper)
1 parent c8beec3 commit c1eb646

File tree

5 files changed

+97
-55
lines changed

5 files changed

+97
-55
lines changed

CONTRIBUTING.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ multipass exec microk8s-vm -- sudo sysctl -w vm.max_map_count=262144
106106
helm template graylog . --debug | less
107107

108108
# do a dry run with a small configuration
109-
helm install graylog . --dry-run --debug --create-namespace -n graylog --set quicksetup="small"
109+
helm install graylog . --dry-run --debug --create-namespace -n graylog --set size="xs"
110110

111111
# do a dry run with the default configuration
112112
helm install graylog . --dry-run --debug --create-namespace -n graylog
@@ -116,7 +116,7 @@ helm install graylog . --dry-run --debug --create-namespace -n graylog
116116
### Installing chart
117117

118118
```bash
119-
helm install graylog . -n graylog --create-namespace -n graylog --set quicksetup="small" --set graylog.custom.service.type="LoadBalancer"
119+
helm install graylog . -n graylog --create-namespace -n graylog --set size="xs" --set graylog.custom.service.type="LoadBalancer"
120120
```
121121

122122
### Upgrading chart

graylog/files/presets.yaml

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
size:
2+
# <key>:
3+
# {graylog|datanode}: [ <number of node replicas>, <vCPU/node>, <memory/node> ]
4+
poc:
5+
graylog: [ 1, 1, 1 ]
6+
datanode: [ 1, 0.5, 3.5 ]
7+
xs:
8+
graylog: [ 1, 2, 4 ]
9+
datanode: [ 1, 1, 4 ]
10+
small:
11+
graylog: [ 1, 2, 4 ]
12+
datanode: [ 2, 2, 8 ]
13+
medium:
14+
graylog: [ 2, 4, 8 ]
15+
datanode: [ 2, 4, 16 ]
16+
large:
17+
graylog: [ 2, 4, 8 ]
18+
datanode: [ 3, 4, 16 ]
19+
xl:
20+
graylog: [ 3, 4, 8 ]
21+
datanode: [ 4, 4, 16 ]
22+
xxl:
23+
graylog: [ 4, 4, 8 ]
24+
datanode: [ 6, 4, 16 ]
25+
default:
26+
graylog: [ 2, 1, 1 ]
27+
datanode: [ 3, 0.5, 3.5 ]

graylog/templates/_helpers.tpl

Lines changed: 58 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -65,76 +65,67 @@ Service account name
6565
{{- end }}
6666

6767
{{/*
68-
Quick setup values
69-
*/}}
70-
{{- define "graylog.quicksetup" }}
71-
{{- $retval := "" -}}
72-
{{/* get args: dot-separated key path, caller context */}}
73-
{{- $keypath := index . 0 | splitList "." }}
74-
{{- $hint := index . 1 }}
75-
{{- if $hint -}}
76-
{{/*
77-
# define quicksetup dicts
78-
hints:
79-
small:
80-
size:
81-
replicas:
82-
graylog: 1
83-
datanode: 1
84-
large:
85-
size:
86-
replicas:
87-
graylog: 3
88-
datanode: 5
89-
*/}}
90-
{{- $hints := dict -}}
91-
{{/* "small" hint */}}
92-
{{- $small := dict "size" }}
93-
{{- $ssize := dict "replicas" }}
94-
{{- $sreplicas := dict }}
95-
{{- $_ := set $sreplicas "graylog" 1 }}
96-
{{- $_ = set $sreplicas "datanode" 1 }}
97-
{{- $_ = set $ssize "replicas" $sreplicas }}
98-
{{- $_ = set $small "size" $ssize }}
99-
{{- $_ = set $hints "small" $small -}}
100-
{{/* "large" hint */}}
101-
{{- $large := dict "size" }}
102-
{{- $lsize := dict "replicas" }}
103-
{{- $lreplicas := dict }}
104-
{{- $_ = set $lreplicas "graylog" 3 }}
105-
{{- $_ = set $lreplicas "datanode" 5 }}
106-
{{- $_ = set $lsize "replicas" $lreplicas }}
107-
{{- $_ = set $large "size" $lsize }}
108-
{{- $_ = set $hints "large" $large -}}
109-
{{/* traverse path, if hint is supported */}}
110-
{{- $nested := get $hints $hint }}
111-
{{- range $_, $key := $keypath }}
112-
{{- $nested = get $nested $key }}
113-
{{- end }}
114-
{{- $retval = $nested }}
115-
{{- end }}
116-
{{- print $retval }}
68+
Size presets
69+
usage: (list <size preset key> <size field to index> . | list "graylog" | include "presets.size")
70+
*/}}
71+
{{- define "presets.size" }}
72+
{{- $indices := dict "replicas" 0 "cpu" 1 "memory" 2 -}}
73+
{{- $defaults := dict }}
74+
{{- $_ := list 2 1 1 | set $defaults "graylog" }}
75+
{{- $_ = list 3 0.5 3.5 | set $defaults "datanode" }}
76+
{{- $dictName := index . 0 }}
77+
{{- $args := index . 1 | initial }}
78+
{{- $ctx := index . 1 | last }}
79+
{{- $sizeKey := index $args 0 | default "default" }}
80+
{{- $fieldToIndex := index $args 1 | required "please request a valid size field: replicas, cpu, memory" }}
81+
{{- if hasKey $defaults $dictName | not }}
82+
{{- fail "presets are only available for 'graylog' and 'datanode'" }}
83+
{{- end }}
84+
{{- $default := index $defaults $dictName }}
85+
{{- $presets := $ctx.Files.Get "files/presets.yaml" | fromYaml | default dict }}
86+
{{- $values := dig "size" $sizeKey $dictName $default $presets }}
87+
{{- index $indices $fieldToIndex | index $values }}
88+
{{- end }}
89+
90+
{{/*
91+
Graylog size presets
92+
Returns {replicas|cpu|memory} values for a given preset
93+
usage: (list $key <field> . | include "graylog.presets.size")
94+
e.g. (list "small" "replicas" . | include "graylog.presets.size")
95+
*/}}
96+
{{- define "graylog.presets.size" }}
97+
{{- list "graylog" . | include "presets.size" }}
98+
{{- end }}
99+
100+
{{/*
101+
Datanode size presets
102+
Returns {replicas|cpu|memory} values for a given preset
103+
usage: (list $key <field> . | include "datanode.presets.size")
104+
e.g. (list "small" "replicas" . | include "datanode.presets.size")
105+
*/}}
106+
{{- define "datanode.presets.size" }}
107+
{{- list "datanode" . | include "presets.size" }}
117108
{{- end }}
118109

119110
{{/*
120111
Graylog replicas
121112
*/}}
122113
{{- define "graylog.replicas" }}
123-
{{- .Values.graylog.replicas | default (list "size.replicas.graylog" .Values.quicksetup | include "graylog.quicksetup") | default 2 }}
114+
{{- .Values.graylog.replicas | default (list .Values.size "replicas" . | include "graylog.presets.size") | default 2 }}
124115
{{- end }}
125116

126117
{{/*
127118
Datanode replicas
128119
*/}}
129120
{{- define "datanode.replicas" }}
130-
{{- .Values.datanode.replicas | default (list "size.replicas.datanode" .Values.quicksetup | include "graylog.quicksetup") | default 3 }}
121+
{{- .Values.datanode.replicas | default (list .Values.size "replicas" . | include "datanode.presets.size") | default 3 }}
131122
{{- end }}
132123

133124
{{/*
134125
Graylog image tag
135126
*/}}
136127
{{- define "graylog.imageTag" }}
137-
{{- .Values.graylog.custom.image.tag | default .Chart.AppVersion }}
128+
{{- coalesce .Values.graylog.custom.image.tag .Values.version | default .Chart.AppVersion }}
138129
{{- end }}
139130

140131
{{/*
@@ -145,6 +136,21 @@ Graylog image
145136
{{- include "graylog.imageTag" . | printf "%s:%s" $name }}
146137
{{- end }}
147138

139+
{{/*
140+
Graylog Datanode image tag
141+
*/}}
142+
{{- define "datanode.imageTag" }}
143+
{{- coalesce .Values.datanode.custom.image.tag .Values.version | default .Chart.AppVersion }}
144+
{{- end }}
145+
146+
{{/*
147+
Graylog Datanode image
148+
*/}}
149+
{{- define "datanode.image" }}
150+
{{- $name := .Values.datanode.custom.image.repository | default "graylog/graylog-datanode" }}
151+
{{- include "datanode.imageTag" . | printf "%s:%s" $name }}
152+
{{- end }}
153+
148154
{{/*
149155
Graylog root password
150156
*/}}

graylog/templates/workload/statefulsets/datanode.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ spec:
5353
{{- end }}
5454
containers:
5555
- name: graylog-datanode
56-
image: "{{ .Values.datanode.custom.image.repository | default "graylog/graylog-datanode" }}:{{ .Values.datanode.custom.image.tag | default .Chart.AppVersion }}"
56+
image: {{ include "datanode.image" . }}
5757
imagePullPolicy: {{ .Values.datanode.custom.image.imagePullPolicy }}
5858
envFrom:
5959
- configMapRef:

graylog/values.yaml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,14 @@
11
# Default values for Graylog.
22

3+
# Preset cluster size (optional)
4+
size:
5+
6+
# Kubernetes provider (optional)
7+
provider:
8+
9+
# Override Graylog and Graylog Data Node version (optional)
10+
version: ""
11+
312
# Override the chart name (optional)
413
nameOverride: ""
514

0 commit comments

Comments
 (0)