Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ multipass exec microk8s-vm -- sudo sysctl -w vm.max_map_count=262144
helm template graylog . --debug | less

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

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

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

### Upgrading chart
Expand Down
27 changes: 27 additions & 0 deletions graylog/files/presets.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
size:
# <key>:
# {graylog|datanode}: [ <number of node replicas>, <vCPU/node>, <memory/node> ]
poc:
graylog: [ 1, 1, 1 ]
datanode: [ 1, 0.5, 3.5 ]
xs:
graylog: [ 1, 2, 4 ]
datanode: [ 1, 1, 4 ]
small:
graylog: [ 1, 2, 4 ]
datanode: [ 2, 2, 8 ]
medium:
graylog: [ 2, 4, 8 ]
datanode: [ 2, 4, 16 ]
large:
graylog: [ 2, 4, 8 ]
datanode: [ 3, 4, 16 ]
xl:
graylog: [ 3, 4, 8 ]
datanode: [ 4, 4, 16 ]
xxl:
graylog: [ 4, 4, 8 ]
datanode: [ 6, 4, 16 ]
default:
graylog: [ 2, 1, 1 ]
datanode: [ 3, 0.5, 3.5 ]
110 changes: 58 additions & 52 deletions graylog/templates/_helpers.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -65,76 +65,67 @@ Service account name
{{- end }}

{{/*
Quick setup values
*/}}
{{- define "graylog.quicksetup" }}
{{- $retval := "" -}}
{{/* get args: dot-separated key path, caller context */}}
{{- $keypath := index . 0 | splitList "." }}
{{- $hint := index . 1 }}
{{- if $hint -}}
{{/*
# define quicksetup dicts
hints:
small:
size:
replicas:
graylog: 1
datanode: 1
large:
size:
replicas:
graylog: 3
datanode: 5
*/}}
{{- $hints := dict -}}
{{/* "small" hint */}}
{{- $small := dict "size" }}
{{- $ssize := dict "replicas" }}
{{- $sreplicas := dict }}
{{- $_ := set $sreplicas "graylog" 1 }}
{{- $_ = set $sreplicas "datanode" 1 }}
{{- $_ = set $ssize "replicas" $sreplicas }}
{{- $_ = set $small "size" $ssize }}
{{- $_ = set $hints "small" $small -}}
{{/* "large" hint */}}
{{- $large := dict "size" }}
{{- $lsize := dict "replicas" }}
{{- $lreplicas := dict }}
{{- $_ = set $lreplicas "graylog" 3 }}
{{- $_ = set $lreplicas "datanode" 5 }}
{{- $_ = set $lsize "replicas" $lreplicas }}
{{- $_ = set $large "size" $lsize }}
{{- $_ = set $hints "large" $large -}}
{{/* traverse path, if hint is supported */}}
{{- $nested := get $hints $hint }}
{{- range $_, $key := $keypath }}
{{- $nested = get $nested $key }}
{{- end }}
{{- $retval = $nested }}
{{- end }}
{{- print $retval }}
Size presets
usage: (list <size preset key> <size field to index> . | list "graylog" | include "presets.size")
*/}}
{{- define "presets.size" }}
{{- $indices := dict "replicas" 0 "cpu" 1 "memory" 2 -}}
{{- $defaults := dict }}
{{- $_ := list 2 1 1 | set $defaults "graylog" }}
{{- $_ = list 3 0.5 3.5 | set $defaults "datanode" }}
{{- $dictName := index . 0 }}
{{- $args := index . 1 | initial }}
{{- $ctx := index . 1 | last }}
{{- $sizeKey := index $args 0 | default "default" }}
{{- $fieldToIndex := index $args 1 | required "please request a valid size field: replicas, cpu, memory" }}
{{- if hasKey $defaults $dictName | not }}
{{- fail "presets are only available for 'graylog' and 'datanode'" }}
{{- end }}
{{- $default := index $defaults $dictName }}
{{- $presets := $ctx.Files.Get "files/presets.yaml" | fromYaml | default dict }}
{{- $values := dig "size" $sizeKey $dictName $default $presets }}
{{- index $indices $fieldToIndex | index $values }}
{{- end }}

{{/*
Graylog size presets
Returns {replicas|cpu|memory} values for a given preset
usage: (list $key <field> . | include "graylog.presets.size")
e.g. (list "small" "replicas" . | include "graylog.presets.size")
*/}}
{{- define "graylog.presets.size" }}
{{- list "graylog" . | include "presets.size" }}
{{- end }}

{{/*
Datanode size presets
Returns {replicas|cpu|memory} values for a given preset
usage: (list $key <field> . | include "datanode.presets.size")
e.g. (list "small" "replicas" . | include "datanode.presets.size")
*/}}
{{- define "datanode.presets.size" }}
{{- list "datanode" . | include "presets.size" }}
{{- end }}

{{/*
Graylog replicas
*/}}
{{- define "graylog.replicas" }}
{{- .Values.graylog.replicas | default (list "size.replicas.graylog" .Values.quicksetup | include "graylog.quicksetup") | default 2 }}
{{- .Values.graylog.replicas | default (list .Values.size "replicas" . | include "graylog.presets.size") | default 2 }}
{{- end }}

{{/*
Datanode replicas
*/}}
{{- define "datanode.replicas" }}
{{- .Values.datanode.replicas | default (list "size.replicas.datanode" .Values.quicksetup | include "graylog.quicksetup") | default 3 }}
{{- .Values.datanode.replicas | default (list .Values.size "replicas" . | include "datanode.presets.size") | default 3 }}
{{- end }}

{{/*
Graylog image tag
*/}}
{{- define "graylog.imageTag" }}
{{- .Values.graylog.custom.image.tag | default .Chart.AppVersion }}
{{- coalesce .Values.graylog.custom.image.tag .Values.version | default .Chart.AppVersion }}
{{- end }}

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

{{/*
Graylog Datanode image tag
*/}}
{{- define "datanode.imageTag" }}
{{- coalesce .Values.datanode.custom.image.tag .Values.version | default .Chart.AppVersion }}
{{- end }}

{{/*
Graylog Datanode image
*/}}
{{- define "datanode.image" }}
{{- $name := .Values.datanode.custom.image.repository | default "graylog/graylog-datanode" }}
{{- include "datanode.imageTag" . | printf "%s:%s" $name }}
{{- end }}

{{/*
Graylog root password
*/}}
Expand Down
2 changes: 1 addition & 1 deletion graylog/templates/workload/statefulsets/datanode.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ spec:
{{- end }}
containers:
- name: graylog-datanode
image: "{{ .Values.datanode.custom.image.repository | default "graylog/graylog-datanode" }}:{{ .Values.datanode.custom.image.tag | default .Chart.AppVersion }}"
image: {{ include "datanode.image" . }}
imagePullPolicy: {{ .Values.datanode.custom.image.imagePullPolicy }}
envFrom:
- configMapRef:
Expand Down
9 changes: 9 additions & 0 deletions graylog/values.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,14 @@
# Default values for Graylog.

# Preset cluster size (optional)
size:

# Kubernetes provider (optional)
provider:

# Override Graylog and Graylog Data Node version (optional)
version: ""

# Override the chart name (optional)
nameOverride: ""

Expand Down
Loading