Skip to content

Commit a678290

Browse files
committed
add distributed option to helm-chart
1 parent bb849d1 commit a678290

11 files changed

+947
-11
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 for ingestor statefulset
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: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
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+
labels:
21+
{{- include "parseable.ingestorLabels" . | nindent 4 }}
22+
spec:
23+
selector:
24+
matchLabels:
25+
{{- include "parseable.ingestorLabelsSelector" . | nindent 6 }}
26+
serviceName: {{ include "parseable.fullname" . }}-headless
27+
replicas: {{ .Values.parseable.highAvailability.ingestor.count }}
28+
minReadySeconds: 10
29+
template:
30+
metadata:
31+
labels:
32+
{{- include "parseable.ingestorLabelsSelector" . | nindent 8 }}
33+
spec:
34+
terminationGracePeriodSeconds: 10
35+
containers:
36+
- name: {{ .Chart.Name }}
37+
securityContext:
38+
{{- toYaml .Values.parseable.securityContext | nindent 8 }}
39+
image: {{ .Values.parseable.image.repository }}:{{ .Values.parseable.image.tag | default .Chart.AppVersion }}
40+
imagePullPolicy: {{ .Values.parseable.image.pullPolicy }}
41+
# Uncomment to debug
42+
# command: [ "/bin/sh", "-c", "sleep 1000000" ]
43+
args: ["parseable", "s3-store"]
44+
env:
45+
{{- range $key, $value := .Values.parseable.highAvailability.ingestor.env }}
46+
- name: {{ $key }}
47+
value: {{ tpl $value $ | quote }}
48+
{{- end }}
49+
{{- range $secret := .Values.parseable.s3ModeSecret }}
50+
{{- range $key := $secret.keys }}
51+
{{- $envPrefix := $secret.prefix | default "" | upper }}
52+
{{- $envKey := $key | upper | replace "." "_" | replace "-" "_" }}
53+
- name: {{ $envPrefix }}{{ $envKey }}
54+
valueFrom:
55+
secretKeyRef:
56+
name: {{ $secret.name }}
57+
key: {{ $key }}
58+
{{- end }}
59+
{{- end }}
60+
- name: P_MODE
61+
value: "ingest"
62+
- name: P_INGESTOR_URL
63+
value: "$HOSTNAME:$PORT"
64+
ports:
65+
- containerPort: 8000
66+
resources:
67+
{{- toYaml .Values.parseable.highAvailability.ingestor.resources | nindent 12 }}
68+
volumeMounts:
69+
## No data volume for ingestor
70+
- mountPath: "/parseable/staging"
71+
name: stage-volume
72+
volumeClaimTemplates:
73+
- metadata:
74+
name: stage-volume
75+
spec:
76+
accessModes: [ "ReadWriteOnce" ]
77+
storageClassName: "do-block-storage"
78+
resources:
79+
requests:
80+
storage: 10Gi
81+
{{- end }}
File renamed without changes.

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:
Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
{{- if eq .Values.parseable.highAvailability.enabled true }}
2+
apiVersion: apps/v1
3+
kind: Deployment
4+
metadata:
5+
name: {{ include "parseable.fullname" . }}
6+
namespace: {{ .Release.Namespace }}
7+
labels:
8+
{{- include "parseable.labels" . | nindent 4 }}
9+
spec:
10+
replicas: 1
11+
selector:
12+
matchLabels:
13+
{{- include "parseable.labelsSelector" . | nindent 6 }}
14+
template:
15+
metadata:
16+
{{- with .Values.parseable.podAnnotations }}
17+
annotations:
18+
{{- toYaml . | nindent 8 }}
19+
{{- end }}
20+
labels:
21+
{{- include "parseable.labelsSelector" . | nindent 8 }}
22+
spec:
23+
{{- with .Values.parseable.imagePullSecrets }}
24+
imagePullSecrets:
25+
{{- toYaml . | nindent 8 }}
26+
{{- end }}
27+
serviceAccountName: {{ include "parseable.serviceAccountName" . }}
28+
securityContext:
29+
{{- toYaml .Values.parseable.podSecurityContext | nindent 8 }}
30+
containers:
31+
- name: {{ .Chart.Name }}
32+
securityContext:
33+
{{- toYaml .Values.parseable.securityContext | nindent 12 }}
34+
image: "{{ .Values.parseable.image.repository }}:{{ .Values.parseable.image.tag | default .Chart.AppVersion }}"
35+
imagePullPolicy: {{ .Values.parseable.image.pullPolicy }}
36+
# Uncomment to debug
37+
# command: [ "/bin/sh", "-c", "sleep 1000000" ]
38+
args: ["parseable", "s3-store"]
39+
env:
40+
- name: P_MODE
41+
value: "query"
42+
{{- range $key, $value := .Values.parseable.env }}
43+
- name: {{ $key }}
44+
value: {{ tpl $value $ | quote }}
45+
{{- end }}
46+
{{- range $secret := .Values.parseable.s3ModeSecret }}
47+
{{- range $key := $secret.keys }}
48+
{{- $envPrefix := $secret.prefix | default "" | upper }}
49+
{{- $envKey := $key | upper | replace "." "_" | replace "-" "_" }}
50+
- name: {{ $envPrefix }}{{ $envKey }}
51+
valueFrom:
52+
secretKeyRef:
53+
name: {{ $secret.name }}
54+
key: {{ $key }}
55+
{{- end }}
56+
{{- end }}
57+
ports:
58+
- containerPort: 8000
59+
resources:
60+
{{- toYaml .Values.parseable.resources | nindent 12 }}
61+
volumeMounts:
62+
- mountPath: "/parseable/staging"
63+
name: stage-volume
64+
volumes:
65+
{{- if .Values.parseable.persistence.staging.enabled }}
66+
- name: stage-volume
67+
persistentVolumeClaim:
68+
claimName: {{ include "parseable.fullname" . }}-staging-pvc
69+
{{- else }}
70+
- name: stage-volume
71+
emptyDir: {}
72+
{{- end }}
73+
{{- with .Values.parseable.nodeSelector }}
74+
nodeSelector:
75+
{{- toYaml . | nindent 8 }}
76+
{{- end }}
77+
{{- with .Values.parseable.affinity }}
78+
affinity:
79+
{{- toYaml . | nindent 8 }}
80+
{{- end }}
81+
{{- with .Values.parseable.tolerations }}
82+
tolerations:
83+
{{- toYaml . | nindent 8 }}
84+
{{- end }}
85+
{{- end }}

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: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,29 @@
11
parseable:
22
image:
33
repository: parseable/parseable
4-
tag: v0.9.0
4+
tag: edge-debug
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)