Skip to content

Commit 998f9a4

Browse files
authored
Merge pull request #93 from replicatedhq/helm-chart
Helm chart
2 parents f456792 + 4a1fc92 commit 998f9a4

22 files changed

+533
-22
lines changed

Makefile

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,11 @@ pgvector:
8181
schema: pgvector
8282
@echo "Running schema commands..."
8383
rm -rf ./db/generated-schema
84+
85+
mkdir -p ./db/generated-schema/extensions
86+
schemahero plan --driver postgres --uri $(CHARTSMITH_PG_URI) --spec-file ./db/schema/extensions --spec-type extension --out ./db/generated-schema/extensions
87+
schemahero apply --driver postgres --uri $(CHARTSMITH_PG_URI) --ddl ./db/generated-schema/extensions
88+
8489
mkdir -p ./db/generated-schema/tables
8590
schemahero plan --driver postgres --uri "$(CHARTSMITH_PG_URI)" --spec-file ./db/schema/tables --spec-type table --out ./db/generated-schema/tables
8691
schemahero apply --driver postgres --uri "$(CHARTSMITH_PG_URI)" --ddl ./db/generated-schema/tables
@@ -158,6 +163,10 @@ release:
158163
# Requires: GITHUB_TOKEN, OP_SERVICE_ACCOUNT_PRODUCTION
159164
.PHONY: replicated
160165
replicated:
166+
mkdir -p chart/chartsmith/db/schema/extensions
167+
mkdir -p chart/chartsmith/db/schema/tables
168+
cp db/schema/extensions/*.yaml chart/chartsmith/db/schema/extensions/
169+
cp db/schema/tables/*.yaml chart/chartsmith/db/schema/tables/
161170
dagger call release \
162171
--version $(version) \
163172
--build=false \

chart/chartsmith/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
db/
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
apiVersion: apps/v1
2+
kind: Deployment
3+
metadata:
4+
name: {{ include "chartsmith.fullname" . }}-centrifugo
5+
labels:
6+
{{- include "chartsmith.labels" . | nindent 4 }}
7+
app.kubernetes.io/component: centrifugo
8+
spec:
9+
replicas: 1
10+
selector:
11+
matchLabels:
12+
{{- include "chartsmith.selectorLabels" . | nindent 6 }}
13+
app.kubernetes.io/component: centrifugo
14+
template:
15+
metadata:
16+
labels:
17+
{{- include "chartsmith.selectorLabels" . | nindent 8 }}
18+
{{- include "chartsmith.labels" . | nindent 8 }}
19+
app.kubernetes.io/component: centrifugo
20+
{{- with .Values.podLabels }}
21+
{{- toYaml . | nindent 8 }}
22+
{{- end }}
23+
{{- with .Values.podAnnotations }}
24+
annotations:
25+
{{- toYaml . | nindent 8 }}
26+
{{- end }}
27+
spec:
28+
{{- if .Values.global.replicated.dockerconfigjson }}
29+
imagePullSecrets:
30+
- name: chartsmith-image-pull-secret
31+
{{- else if .Values.imagePullSecrets }}
32+
imagePullSecrets:
33+
{{- toYaml .Values.imagePullSecrets | nindent 8 }}
34+
{{- end }}
35+
serviceAccountName: {{ include "chartsmith.serviceAccountName" . }}
36+
securityContext:
37+
{{- toYaml .Values.podSecurityContext | nindent 8 }}
38+
containers:
39+
- name: centrifugo
40+
securityContext:
41+
{{- toYaml .Values.securityContext | nindent 12 }}
42+
image: "{{ .Values.images.centrifugo.registry }}/{{ .Values.images.centrifugo.repository }}:{{ .Values.images.centrifugo.tag }}"
43+
imagePullPolicy: {{ .Values.images.centrifugo.pullPolicy }}
44+
command: ["centrifugo", "--config", "/centrifugo/config.json"]
45+
volumeMounts:
46+
- name: centrifugo-config
47+
mountPath: /centrifugo/config.json
48+
subPath: config.json
49+
ports:
50+
- name: http
51+
containerPort: 8000
52+
protocol: TCP
53+
resources:
54+
{{- toYaml .Values.resources | nindent 12 }}
55+
volumes:
56+
- name: centrifugo-config
57+
secret:
58+
secretName: chartsmith-centrifugo-config
59+
{{- with .Values.nodeSelector }}
60+
nodeSelector:
61+
{{- toYaml . | nindent 8 }}
62+
{{- end }}
63+
{{- with .Values.affinity }}
64+
affinity:
65+
{{- toYaml . | nindent 8 }}
66+
{{- end }}
67+
{{- with .Values.tolerations }}
68+
tolerations:
69+
{{- toYaml . | nindent 8 }}
70+
{{- end }}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
apiVersion: v1
2+
kind: Secret
3+
metadata:
4+
name: chartsmith-centrifugo-config
5+
labels:
6+
app: chartsmith
7+
type: Opaque
8+
stringData:
9+
config.json: |
10+
{
11+
{{- $existing := (lookup "v1" "Secret" .Release.Namespace "chartsmith-centrifugo-config") }}
12+
{{- $tokenHmacDefault := (randAlphaNum 32) }}
13+
{{- $tokenHmac := .Values.centrifugo.tokenHmacSecretKey.value | default ((get (default dict $existing.data) "token_hmac_secret_key" | b64dec) | default $tokenHmacDefault) }}
14+
"token_hmac_secret_key": {{ $tokenHmac | quote }},
15+
{{- $adminPasswordDefault := (randAlphaNum 32) }}
16+
{{- $adminPassword := .Values.centrifugo.adminPassword.value | default ((get (default dict $existing.data) "admin_password" | b64dec) | default $adminPasswordDefault) }}
17+
"admin_password": {{ $adminPassword | quote }},
18+
{{- $adminSecretDefault := (randAlphaNum 32) }}
19+
{{- $adminSecret := .Values.centrifugo.adminSecret.value | default ((get (default dict $existing.data) "admin_secret" | b64dec) | default $adminSecretDefault) }}
20+
"admin_secret": {{ $adminSecret | quote }},
21+
{{- $apiKeyDefault := (randAlphaNum 32) }}
22+
{{- $apiKey := .Values.centrifugo.apiKey.value | default ((get (default dict $existing.data) "api_key" | b64dec) | default $apiKeyDefault) }}
23+
"api_key": {{ $apiKey | quote }},
24+
"allowed_origins": ["*"],
25+
"allow_user_limited_channels": true
26+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
apiVersion: v1
2+
kind: Service
3+
metadata:
4+
name: {{ include "chartsmith.fullname" . }}-centrifugo
5+
labels:
6+
{{- include "chartsmith.labels" (dict "Chart" .Chart "Values" (merge .Values (dict "component" "centrifugo")) "Release" .Release "Files" .Files) | nindent 4 }}
7+
app.kubernetes.io/component: centrifugo
8+
spec:
9+
type: ClusterIP
10+
ports:
11+
- port: 8000
12+
targetPort: http
13+
protocol: TCP
14+
name: http
15+
selector:
16+
app.kubernetes.io/name: {{ include "chartsmith.name" . }}
17+
app.kubernetes.io/instance: {{ .Release.Name }}
18+
app.kubernetes.io/component: centrifugo
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
apiVersion: apps/v1
2+
kind: Deployment
3+
metadata:
4+
name: {{ include "chartsmith.fullname" . }}-worker
5+
labels:
6+
{{- include "chartsmith.labels" (dict "Chart" .Chart "Values" (merge .Values (dict "component" "worker")) "Release" .Release "Files" .Files) | nindent 4 }}
7+
app.kubernetes.io/component: worker
8+
spec:
9+
replicas: 1
10+
selector:
11+
matchLabels:
12+
{{- include "chartsmith.selectorLabels" (dict "Chart" .Chart "Values" (merge .Values (dict "component" "worker")) "Release" .Release "Files" .Files) | nindent 6 }}
13+
app.kubernetes.io/component: worker
14+
template:
15+
metadata:
16+
labels:
17+
{{- include "chartsmith.selectorLabels" (dict "Chart" .Chart "Values" (merge .Values (dict "component" "worker")) "Release" .Release "Files" .Files) | nindent 8 }}
18+
{{- include "chartsmith.labels" (dict "Chart" .Chart "Values" (merge .Values (dict "component" "worker")) "Release" .Release "Files" .Files) | nindent 8 }}
19+
app.kubernetes.io/component: worker
20+
{{- with .Values.podLabels }}
21+
{{- toYaml . | nindent 8 }}
22+
{{- end }}
23+
{{- with .Values.podAnnotations }}
24+
annotations:
25+
{{- toYaml . | nindent 8 }}
26+
{{- end }}
27+
spec:
28+
{{- if .Values.global.replicated.dockerconfigjson }}
29+
imagePullSecrets:
30+
- name: chartsmith-image-pull-secret
31+
{{- else if .Values.imagePullSecrets }}
32+
imagePullSecrets:
33+
{{- toYaml .Values.imagePullSecrets | nindent 8 }}
34+
{{- end }}
35+
serviceAccountName: {{ include "chartsmith.serviceAccountName" . }}
36+
securityContext:
37+
{{- toYaml .Values.podSecurityContext | nindent 8 }}
38+
containers:
39+
- name: worker
40+
securityContext:
41+
{{- toYaml .Values.securityContext | nindent 12 }}
42+
image: "{{ .Values.images.worker.registry }}/{{ .Values.images.worker.repository }}:{{ .Values.images.worker.tag }}"
43+
imagePullPolicy: {{ .Values.images.worker.pullPolicy }}
44+
args: ["run"]
45+
env:
46+
- name: CHARTSMITH_PG_URI
47+
value: "{{ if .Values.postgresql.enabled }}postgres://{{ .Values.postgresql.credentials.username }}:{{ .Values.postgresql.credentials.password }}@postgresql:5432/{{ .Values.postgresql.credentials.database }}{{ else }}{{ .Values.postgresql.externalUri }}{{ end }}"
48+
- name: CHARTSMITH_CENTRIFUGO_ADDRESS
49+
value: "http://{{ include "chartsmith.fullname" . }}-centrifugo:8000/api"
50+
- name: CHARTSMITH_CENTRIFUGO_API_KEY
51+
value: {{ .Values.centrifugo.apiKey.value | quote }}
52+
ports:
53+
- name: http
54+
containerPort: {{ .Values.service.port }}
55+
protocol: TCP
56+
livenessProbe:
57+
{{- toYaml .Values.livenessProbe | nindent 12 }}
58+
readinessProbe:
59+
{{- toYaml .Values.readinessProbe | nindent 12 }}
60+
resources:
61+
{{- toYaml .Values.resources | nindent 12 }}
62+
{{- with .Values.volumeMounts }}
63+
volumeMounts:
64+
{{- toYaml . | nindent 12 }}
65+
{{- end }}
66+
{{- with .Values.volumes }}
67+
volumes:
68+
{{- toYaml . | nindent 8 }}
69+
{{- end }}
70+
{{- with .Values.nodeSelector }}
71+
nodeSelector:
72+
{{- toYaml . | nindent 8 }}
73+
{{- end }}
74+
{{- with .Values.affinity }}
75+
affinity:
76+
{{- toYaml . | nindent 8 }}
77+
{{- end }}
78+
{{- with .Values.tolerations }}
79+
tolerations:
80+
{{- toYaml . | nindent 8 }}
81+
{{- end }}
Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
apiVersion: apps/v1
2+
kind: Deployment
3+
metadata:
4+
name: migrations-deployment
5+
labels:
6+
app.kubernetes.io/name: chartsmith
7+
spec:
8+
replicas: 1
9+
selector:
10+
matchLabels:
11+
app.kubernetes.io/name: chartsmith
12+
app.kubernetes.io/component: migrations
13+
template:
14+
metadata:
15+
labels:
16+
app.kubernetes.io/name: chartsmith
17+
app.kubernetes.io/component: migrations
18+
spec:
19+
restartPolicy: Always
20+
volumes:
21+
- name: plan
22+
emptyDir: {}
23+
- name: extensions
24+
emptyDir: {}
25+
- name: tables
26+
emptyDir: {}
27+
{{- $extensions := .Files.Glob "db/schema/extensions/*.yaml" }}
28+
{{- $tables := .Files.Glob "db/schema/tables/*.yaml" }}
29+
{{- range $path, $file := $extensions }}
30+
- name: ext-{{ base $path | replace ".yaml" "" | replace "." "-" }}
31+
configMap:
32+
name: schema-extension-{{ base $path | replace ".yaml" "" | replace "." "-" }}
33+
{{- end }}
34+
{{- range $path, $file := $tables }}
35+
- name: tbl-{{ base $path | replace ".yaml" "" | replace "." "-" }}
36+
configMap:
37+
name: schema-table-{{ base $path | replace ".yaml" "" | replace "." "-" }}
38+
{{- end }}
39+
initContainers:
40+
- name: plan
41+
image: schemahero/schemahero:0.19.0
42+
command: ["sh", "-c"]
43+
args:
44+
- |
45+
mkdir -p /plan/extensions
46+
/schemahero plan --driver postgres --uri $CHARTSMITH_PG_URI --spec-file /schema/extensions --spec-type extension --out /plan/extensions;
47+
mkdir -p /plan/tables
48+
/schemahero plan --driver postgres --uri $CHARTSMITH_PG_URI --spec-file /schema/tables --spec-type table --out /plan/tables;
49+
env:
50+
- name: CHARTSMITH_PG_URI
51+
value: "{{ if .Values.postgresql.enabled }}postgres://{{ .Values.postgresql.credentials.username }}:{{ .Values.postgresql.credentials.password }}@postgresql:5432/{{ .Values.postgresql.credentials.database }}{{ else }}{{ .Values.postgresql.externalUri }}{{ end }}"
52+
volumeMounts:
53+
- name: plan
54+
mountPath: /plan
55+
- name: extensions
56+
mountPath: /schema/extensions
57+
- name: tables
58+
mountPath: /schema/tables
59+
{{- range $path, $file := $extensions }}
60+
- name: ext-{{ base $path | replace ".yaml" "" | replace "." "-" }}
61+
mountPath: /schema/extensions/{{ base $path }}
62+
subPath: {{ base $path }}
63+
{{- end }}
64+
{{- range $path, $file := $tables }}
65+
- name: tbl-{{ base $path | replace ".yaml" "" | replace "." "-" }}
66+
mountPath: /schema/tables/{{ base $path }}
67+
subPath: {{ base $path }}
68+
{{- end }}
69+
- name: apply
70+
image: schemahero/schemahero:0.19.0
71+
command: ["sh", "-c"]
72+
args:
73+
- |
74+
/schemahero apply --driver postgres --uri $CHARTSMITH_PG_URI --ddl /plan/extensions;
75+
/schemahero apply --driver postgres --uri $CHARTSMITH_PG_URI --ddl /plan/tables;
76+
env:
77+
- name: CHARTSMITH_PG_URI
78+
value: "{{ if .Values.postgresql.enabled }}postgres://{{ .Values.postgresql.credentials.username }}:{{ .Values.postgresql.credentials.password }}@postgresql:5432/{{ .Values.postgresql.credentials.database }}{{ else }}{{ .Values.postgresql.externalUri }}{{ end }}"
79+
volumeMounts:
80+
- name: plan
81+
mountPath: /plan
82+
containers:
83+
- name: sleep
84+
image: schemahero/schemahero:0.19.0
85+
command: ["sh", "-c", "sleep infinity"]
86+
volumeMounts:
87+
- name: plan
88+
mountPath: /plan
89+
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{{- if .Values.postgresql.enabled }}
2+
apiVersion: v1
3+
kind: Secret
4+
metadata:
5+
name: postgresql-secret
6+
labels:
7+
app: chartsmith
8+
component: postgresql
9+
type: Opaque
10+
stringData:
11+
username: {{ .Values.postgresql.credentials.username | quote }}
12+
password: {{ .Values.postgresql.credentials.password | quote }}
13+
database: {{ .Values.postgresql.credentials.database | quote }}
14+
{{- end }}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
{{- if .Values.postgresql.enabled }}
2+
apiVersion: v1
3+
kind: Service
4+
metadata:
5+
name: postgresql
6+
labels:
7+
app: chartsmith
8+
component: postgresql
9+
spec:
10+
type: ClusterIP
11+
ports:
12+
- port: 5432
13+
targetPort: 5432
14+
name: postgres
15+
selector:
16+
app: chartsmith
17+
component: postgresql
18+
{{- end }}

0 commit comments

Comments
 (0)