Skip to content

Commit 9cfd164

Browse files
committed
add distributed option to helm-chart
1 parent be469a3 commit 9cfd164

File tree

9 files changed

+805
-10
lines changed

9 files changed

+805
-10
lines changed

helm/templates/_helpers.tpl

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,19 @@ Common labels
3535
*/}}
3636
{{- define "parseable.labels" -}}
3737
helm.sh/chart: {{ include "parseable.chart" . }}
38-
{{ include "parseable.selectorLabels" . }}
38+
{{ include "parseable.labelsSelector" . }}
39+
{{- if .Chart.AppVersion }}
40+
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
41+
{{- end }}
42+
app.kubernetes.io/managed-by: {{ .Release.Service }}
43+
{{- end }}
44+
45+
{{/*
46+
Ingestor Labels
47+
*/}}
48+
{{- define "parseable.ingestorLabels" -}}
49+
helm.sh/chart: {{ include "parseable.chart" . }}
50+
{{ include "parseable.ingestorLabelsSelector" . }}
3951
{{- if .Chart.AppVersion }}
4052
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
4153
{{- end }}
@@ -45,9 +57,18 @@ app.kubernetes.io/managed-by: {{ .Release.Service }}
4557
{{/*
4658
Selector labels
4759
*/}}
48-
{{- define "parseable.selectorLabels" -}}
60+
{{- define "parseable.labelsSelector" -}}
61+
app.kubernetes.io/name: {{ include "parseable.name" . }}
62+
app.kubernetes.io/instance: {{ .Release.Name }}
63+
{{- end }}
64+
65+
{{/*
66+
Ingestor Labels Selector
67+
*/}}
68+
{{- define "parseable.ingestorLabelsSelector" -}}
4969
app.kubernetes.io/name: {{ include "parseable.name" . }}
5070
app.kubernetes.io/instance: {{ .Release.Name }}
71+
app.parseable.com/type: ingestor
5172
{{- end }}
5273

5374
{{/*
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
{{- if eq .Values.parseable.highAvailability.enabled true }}
2+
apiVersion: v1
3+
kind: Service
4+
metadata:
5+
name: {{ include "parseable.fullname" . }}
6+
namespace: {{ .Release.Namespace }}
7+
spec:
8+
type: {{ $.Values.parseable.service.type }}
9+
ports:
10+
- port: {{ $.Values.parseable.service.port }}
11+
targetPort: 8000
12+
protocol: TCP
13+
selector:
14+
{{- include "parseable.ingestorLabelsSelector" . | nindent 4 }}
15+
{{- end }}
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
{{- if eq .Values.parseable.highAvailability.enabled true }}
2+
apiVersion: v1
3+
kind: Service
4+
metadata:
5+
name: {{ include "parseable.fullname" . }}-headless
6+
namespace: {{ .Release.Namespace }}
7+
spec:
8+
ports:
9+
- port: 8000
10+
name: "parseable-port"
11+
clusterIP: None
12+
selector:
13+
{{- include "parseable.ingestorLabelsSelector" . | nindent 4 }}
14+
---
15+
apiVersion: apps/v1
16+
kind: StatefulSet
17+
metadata:
18+
name: {{ include "parseable.fullname" . }}-ingestor
19+
namespace: {{ .Release.Namespace }}
20+
spec:
21+
selector:
22+
matchLabels:
23+
{{- include "parseable.ingestorLabelsSelector" . | nindent 6 }}
24+
serviceName: {{ include "parseable.fullname" . }}-headless
25+
replicas: {{ .Values.parseable.highAvailability.ingestor.count }}
26+
minReadySeconds: 10
27+
template:
28+
metadata:
29+
labels:
30+
{{- include "parseable.ingestorLabelsSelector" . | nindent 6 }}
31+
spec:
32+
terminationGracePeriodSeconds: 10
33+
containers:
34+
- name: {{ .Chart.Name }}
35+
securityContext:
36+
{{- toYaml .Values.parseable.securityContext | nindent 8 }}
37+
image: {{ .Values.parseable.image.repository }}:{{ .Values.parseable.image.tag | default .Chart.AppVersion }}
38+
imagePullPolicy: {{ .Values.parseable.image.pullPolicy }}
39+
# Uncomment to debug
40+
# command: [ "/bin/sh", "-c", "sleep 1000000" ]
41+
args: ["parseable", "s3-store"]
42+
env:
43+
{{- range $key, $value := .Values.parseable.highAvailability.ingestor.env }}
44+
- name: {{ $key }}
45+
value: {{ tpl $value $ | quote }}
46+
{{- end }}
47+
{{- range $secret := .Values.parseable.s3ModeSecret }}
48+
{{- range $key := $secret.keys }}
49+
{{- $envPrefix := $secret.prefix | default "" | upper }}
50+
{{- $envKey := $key | upper | replace "." "_" | replace "-" "_" }}
51+
- name: {{ $envPrefix }}{{ $envKey }}
52+
valueFrom:
53+
secretKeyRef:
54+
name: {{ $secret.name }}
55+
key: {{ $key }}
56+
{{- end }}
57+
{{- end }}
58+
ports:
59+
- containerPort: 8000
60+
resources:
61+
{{- toYaml .Values.parseable.highAvailability.ingestor.resources | nindent 12 }}
62+
volumeMounts:
63+
## No data volume for ingestor
64+
- mountPath: "/parseable/staging"
65+
name: stage-volume
66+
volumeClaimTemplates:
67+
- metadata:
68+
name: stage-volume
69+
spec:
70+
accessModes: [ "ReadWriteOnce" ]
71+
storageClassName: "my-storage-class"
72+
resources:
73+
requests:
74+
storage: 10Gi
75+
{{- end }}

helm/templates/logstream-job.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ spec:
1515
{{- toYaml . | nindent 8 }}
1616
{{- end }}
1717
labels:
18-
{{- include "parseable.selectorLabels" . | nindent 8 }}
18+
{{- include "parseable.labelsSelector" . | nindent 8 }}
1919
spec:
2020
restartPolicy: OnFailure
2121
securityContext:

helm/templates/service-monitor.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ kind: ServiceMonitor
44
metadata:
55
name: {{ include "parseable.fullname" . }}
66
namespace: {{ default .Release.Namespace .Values.parseable.metrics.serviceMonitor.namespace | quote }}
7-
labels: {{- include "parseable.selectorLabels" . | nindent 4 }}
7+
labels: {{- include "parseable.labelsSelector" . | nindent 4 }}
88
{{- if .Values.parseable.metrics.serviceMonitor.additionalLabels }}
99
{{- include (dict "value" .Values.parseable.metrics.serviceMonitor.additionalLabels "context" $) | nindent 4 }}
1010
{{- end }}
@@ -33,5 +33,5 @@ spec:
3333
matchNames:
3434
- {{ .Release.Namespace }}
3535
selector:
36-
matchLabels: {{- include "parseable.selectorLabels" . | nindent 6 }}
36+
matchLabels: {{- include "parseable.labelsSelector" . | nindent 6 }}
3737
{{- end }}

helm/templates/deployment.yaml renamed to helm/templates/standalone-deployment.yaml

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
{{- if eq .Values.parseable.highAvailability.enabled false }}
12
apiVersion: apps/v1
23
kind: Deployment
34
metadata:
@@ -6,18 +7,18 @@ metadata:
67
labels:
78
{{- include "parseable.labels" . | nindent 4 }}
89
spec:
9-
replicas: {{ .Values.parseable.replicaCount }}
10+
replicas: 1
1011
selector:
1112
matchLabels:
12-
{{- include "parseable.selectorLabels" . | nindent 6 }}
13+
{{- include "parseable.labelsSelector" . | nindent 6 }}
1314
template:
1415
metadata:
1516
{{- with .Values.parseable.podAnnotations }}
1617
annotations:
1718
{{- toYaml . | nindent 8 }}
1819
{{- end }}
1920
labels:
20-
{{- include "parseable.selectorLabels" . | nindent 8 }}
21+
{{- include "parseable.labelsSelector" . | nindent 8 }}
2122
spec:
2223
{{- with .Values.parseable.imagePullSecrets }}
2324
imagePullSecrets:
@@ -107,3 +108,4 @@ spec:
107108
tolerations:
108109
{{- toYaml . | nindent 8 }}
109110
{{- end }}
111+
{{- end }}

helm/templates/service.yaml renamed to helm/templates/standalone-service.yaml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
{{- if eq .Values.parseable.highAvailability.enabled false }}
12
apiVersion: v1
23
kind: Service
34
metadata:
@@ -10,4 +11,5 @@ spec:
1011
targetPort: 8000
1112
protocol: TCP
1213
selector:
13-
{{- include "parseable.selectorLabels" . | nindent 4 }}
14+
{{- include "parseable.labelsSelector" . | nindent 4 }}
15+
{{- end }}

helm/values.yaml

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,27 @@ parseable:
33
repository: parseable/parseable
44
tag: v0.9.0
55
pullPolicy: Always
6-
replicaCount: 1
76
## Set to true if you want to deploy Parseable in local mode (store logs
87
## on local mount point instead of S3 bucket)
98
local: false
9+
## Set to true if you want to deploy Parseable in a HA mode (multiple ingestors)
10+
## Please note that highAvailability is not supported in local mode
11+
highAvailability:
12+
enabled: true
13+
ingestor:
14+
count: 3
15+
env:
16+
RUST_LOG: warn
17+
service:
18+
type: ClusterIP
19+
port: 80
20+
resources:
21+
limits:
22+
cpu: 500m
23+
memory: 4Gi
24+
requests:
25+
cpu: 250m
26+
memory: 1Gi
1027
## Add environment variables to the Parseable Deployment
1128
env:
1229
RUST_LOG: warn

0 commit comments

Comments
 (0)