File tree 10 files changed +240
-48
lines changed
10 files changed +240
-48
lines changed Original file line number Diff line number Diff line change @@ -2,7 +2,7 @@ apiVersion: v2
2
2
name : django-app
3
3
description : " Helm Chart to deploy the Django application"
4
4
type : application
5
- version : 0.1.0
5
+ version : 0.1.1
6
6
sources :
7
7
- https://github.com/toggle-corp/charts
8
8
Original file line number Diff line number Diff line change @@ -52,3 +52,62 @@ Create the name of the configmap to be used by the django-app
52
52
{ {- printf " %s-env-name" (include " django-app.fullname" .) -} }
53
53
{ {- end -} }
54
54
{ {- end -} }
55
+
56
+ { {/*
57
+ Generate image metadata
58
+ */} }
59
+ { {- define " django-app.imageConfig" -} }
60
+ { {- $default := deepCopy .Default -} }
61
+ { {- $override := deepCopy (default dict .Override) -} }
62
+ { {- $merged := (
63
+ merge
64
+ (dict)
65
+ $override
66
+ $default
67
+ )
68
+ -} }
69
+ image: "{ { printf " %s:%s" $merged .name $merged .tag } }"
70
+ imagePullPolicy: { { default " IfNotPresent" $merged .imagePullPolicy } }
71
+ { {- end } }
72
+
73
+ { {/*
74
+ Generate resources metadata
75
+ */} }
76
+ { {- define " django-app.resourcesConfig" -} }
77
+ { {- $default := deepCopy .Default -} }
78
+ { {- $override := deepCopy (default dict .Override) -} }
79
+ { {
80
+ (
81
+ merge
82
+ (dict)
83
+ $override
84
+ $default
85
+ ) | toYaml
86
+ } }
87
+ { {- end } }
88
+
89
+ { {/*
90
+ Generate env configs for deployments
91
+ */} }
92
+ { {- define " django-app.envConfig" -} }
93
+ - secretRef:
94
+ name: { { template " django-app.secretname" . } }
95
+ { {- if .Values.extraSecretsName } }
96
+ - secretRef:
97
+ name: { { .Values.extraSecretsName } }
98
+ { {- end } }
99
+ - configMapRef:
100
+ name: { { template " django-app.envConfigMapName" . } }
101
+ { {- if .Values.extraConfigMapName } }
102
+ - configMapRef:
103
+ name: { { .Values.extraConfigMapName } }
104
+ { {- end } }
105
+ { {- end } }
106
+
107
+ { {/*
108
+ Generate env configs for app types
109
+ */} }
110
+ { {- define " django-app.appTypeConfig" -} }
111
+ - name: { { .Values.appTypeEnvName } }
112
+ value: { { .Type | quote } }
113
+ { {- end } }
Original file line number Diff line number Diff line change 26
26
spec :
27
27
containers :
28
28
- name : api
29
- image : " {{ default .Values.api.image.name .Values.image.name }}:{{ default .Values.api.image.tag .Values.image.tag }}"
30
- imagePullPolicy : {{ default .Values.api.image.imagePullPolicy .Values.image.imagePullPolicy }}
29
+ {{- include "django-app.imageConfig"
30
+ (dict "Default" $.Values.image "Override" $.Values.api.image)
31
+ | nindent 10
32
+ }}
31
33
command :
32
34
{{- toYaml .Values.api.command | nindent 12 }}
33
35
ports :
@@ -37,13 +39,12 @@ spec:
37
39
# TODO: livenessProbe
38
40
resources :
39
41
{{- toYaml .Values.api.resources | nindent 12 }}
40
- env :
41
- - name : DJANGO_APP_TYPE
42
- value : web
43
42
envFrom :
44
- - secretRef :
45
- name : {{ template "django-app.secretname" . }}
46
- - configMapRef :
47
- name : {{ template "django-app.envConfigMapName" . }}
43
+ {{- include "django-app.envConfig" $ | nindent 12 }}
44
+ env :
45
+ {{- include "django-app.appTypeConfig"
46
+ (dict "Values" $.Values "Type" "web" )
47
+ | nindent 12
48
+ }}
48
49
49
50
{{- end }}
Original file line number Diff line number Diff line change @@ -21,22 +21,26 @@ spec:
21
21
restartPolicy : " Never"
22
22
containers :
23
23
- name : {{ $hookName }}
24
- image : " {{ default $.Values.argoHook.image.name $.Values.image.name }}:{{ default $.Values.argoHook.image.tag $.Values.image.tag }}"
25
- imagePullPolicy : {{ default $.Values.argoHook.image.imagePullPolicy $.Values.image.imagePullPolicy }}
24
+ {{- include "django-app.imageConfig"
25
+ (dict "Default" $.Values.image "Override" $.Values.argoHook.image)
26
+ | nindent 10
27
+ }}
26
28
command : {{ toYaml $hook.command | trim | nindent 12 }}
27
29
{{- if $hook.args }}
28
30
args : {{ toYaml $hook.args | trim | nindent 12 }}
29
31
{{- end }}
30
32
resources :
31
- {{- toYaml (default $hook.resources $.Values.argoHook.resources) | nindent 12 }}
32
- env :
33
- - name : DJANGO_APP_TYPE
34
- value : hook
33
+ {{- include "django-app.resourcesConfig"
34
+ (dict "Default" $.Values.argoHook.resources "Override" $hook.resources)
35
+ | nindent 12
36
+ }}
35
37
envFrom :
36
- - secretRef :
37
- name : {{ template "django-app.secretname" $ }}
38
- - configMapRef :
39
- name : {{ template "django-app.envConfigMapName" $ }}
38
+ {{- include "django-app.envConfig" $ | nindent 12 }}
39
+ env :
40
+ {{- include "django-app.appTypeConfig"
41
+ (dict "Values" $.Values "Type" "hook" )
42
+ | nindent 12
43
+ }}
40
44
41
45
{{- end }}
42
46
Original file line number Diff line number Diff line change @@ -27,21 +27,22 @@ spec:
27
27
spec :
28
28
containers :
29
29
- name : worker
30
- image : " {{ default .Values.worker.flower.image.name .Values.image.name }}:{{ default .Values.worker.flower.image.tag .Values.image.tag }}"
31
- imagePullPolicy : {{ default .Values.worker.flower.image.imagePullPolicy .Values.image.imagePullPolicy }}
30
+ {{- include "django-app.imageConfig"
31
+ (dict "Default" $.Values.image "Override" $.Values.worker.flower.image)
32
+ | nindent 10
33
+ }}
32
34
command :
33
35
{{- toYaml .Values.worker.flower.command | nindent 12 }}
34
36
# TODO: livenessProbe
35
37
resources :
36
38
{{- toYaml .Values.worker.flower.resources | nindent 12 }}
37
- env :
38
- - name : DJANGO_APP_TYPE
39
- value : worker
40
39
envFrom :
41
- - secretRef :
42
- name : {{ template "django-app.secretname" . }}
43
- - configMapRef :
44
- name : {{ template "django-app.envConfigMapName" . }}
40
+ {{- include "django-app.envConfig" $ | nindent 12 }}
41
+ env :
42
+ {{- include "django-app.appTypeConfig"
43
+ (dict "Values" $.Values "Type" "worker" )
44
+ | nindent 12
45
+ }}
45
46
46
47
{{- end }}
47
48
{{- end }}
Original file line number Diff line number Diff line change
1
+ {{- if .Values.cronjobs.enabled }}
2
+
3
+ {{- range $jobName, $job := .Values.cronjobs.jobs }}
4
+
5
+ {{- if $job.enabled }}
6
+
7
+ ---
8
+ apiVersion : batch/v1
9
+ kind : CronJob
10
+ metadata :
11
+ name : {{ template "django-app.fullname" $ }}-job-{{ $jobName | nospace | lower | replace "_" "-" }}
12
+ labels :
13
+ app : {{ include "django-app.fullname" $ }}
14
+ component : cronjob
15
+ jobName : {{ $jobName }}
16
+ environment : {{ $.Values.environment }}
17
+ release : {{ $.Release.Name }}
18
+ spec :
19
+ schedule : {{ $job.schedule | quote }}
20
+ {{- if $job.timeZone }}
21
+ timeZone : {{ $job.timeZone | quote }}
22
+ {{- end }}
23
+ concurrencyPolicy : " Forbid"
24
+ jobTemplate :
25
+ spec :
26
+ activeDeadlineSeconds : {{ default 7200 $job.timeLimit }} # 2 hours default
27
+ template :
28
+ spec :
29
+ restartPolicy : " Never"
30
+ containers :
31
+ - name : cronjob
32
+ command :
33
+ {{- toYaml $job.command | nindent 16 }}
34
+ {{- include "django-app.imageConfig"
35
+ (dict "Default" $.Values.image "Override" $.Values.cronjobs.image)
36
+ | nindent 14
37
+ }}
38
+ resources :
39
+ {{- include "django-app.resourcesConfig"
40
+ (dict "Default" $.Values.cronjobs.defaultResources "Override" $job.resources)
41
+ | nindent 16
42
+ }}
43
+ envFrom :
44
+ {{- include "django-app.envConfig" $ | nindent 16 }}
45
+ env :
46
+ {{- include "django-app.appTypeConfig"
47
+ (dict "Values" $.Values "Type" "cronjob" )
48
+ | nindent 16
49
+ }}
50
+
51
+ {{- end }}
52
+
53
+ {{- end }}
54
+
55
+ {{- end }}
Original file line number Diff line number Diff line change @@ -26,20 +26,21 @@ spec:
26
26
spec :
27
27
containers :
28
28
- name : worker-beat
29
- image : " {{ default .Values.worker.beat.image.name .Values.image.name }}:{{ default .Values.worker.beat.image.tag .Values.image.tag }}"
30
- imagePullPolicy : {{ default .Values.worker.beat.image.imagePullPolicy .Values.image.imagePullPolicy }}
29
+ {{- include "django-app.imageConfig"
30
+ (dict "Default" $.Values.image "Override" $.Values.worker.beat.image)
31
+ | nindent 10
32
+ }}
31
33
command :
32
34
{{- toYaml .Values.worker.beat.command | nindent 12 }}
33
35
# TODO: livenessProbe
34
36
resources :
35
37
{{- toYaml .Values.worker.beat.resources | nindent 12 }}
36
- env :
37
- - name : DJANGO_APP_TYPE
38
- value : worker
39
38
envFrom :
40
- - secretRef :
41
- name : {{ template "django-app.secretname" . }}
42
- - configMapRef :
43
- name : {{ template "django-app.envConfigMapName" . }}
39
+ {{- include "django-app.envConfig" $ | nindent 12 }}
40
+ env :
41
+ {{- include "django-app.appTypeConfig"
42
+ (dict "Values" $.Values "Type" "worker" )
43
+ | nindent 12
44
+ }}
44
45
45
46
{{- end }}
Original file line number Diff line number Diff line change @@ -32,22 +32,26 @@ spec:
32
32
spec :
33
33
containers :
34
34
- name : worker
35
- image : " {{ default $.Values.worker.image.name $.Values.image.name }}:{{ default $.Values.worker.image.tag $.Values.image.tag }}"
36
- imagePullPolicy : {{ default $.Values.worker.image.imagePullPolicy $.Values.image.imagePullPolicy }}
37
35
command :
38
36
{{- toYaml $.Values.worker.queueCommandPrefix | nindent 12 }}
39
37
{{- toYaml $config.celeryArgs | nindent 12 }}
38
+ {{- include "django-app.imageConfig"
39
+ (dict "Default" $.Values.image "Override" $.Values.worker.image)
40
+ | nindent 10
41
+ }}
40
42
# TODO: livenessProbe
41
43
resources :
42
- {{- toYaml $config.resources | nindent 12 }}
43
- env :
44
- - name : DJANGO_APP_TYPE
45
- value : worker
44
+ {{- include "django-app.resourcesConfig"
45
+ (dict "Default" $.Values.worker.queueDefaultResources "Override" $config.resources)
46
+ | nindent 12
47
+ }}
46
48
envFrom :
47
- - secretRef :
48
- name : {{ template "django-app.secretname" $ }}
49
- - configMapRef :
50
- name : {{ template "django-app.envConfigMapName" $ }}
49
+ {{- include "django-app.envConfig" $ | nindent 12 }}
50
+ env :
51
+ {{- include "django-app.appTypeConfig"
52
+ (dict "Values" $.Values "Type" "worker" )
53
+ | nindent 12
54
+ }}
51
55
52
56
{{- end }}
53
57
Original file line number Diff line number Diff line change @@ -3,6 +3,7 @@ environment: ALPHA
3
3
image :
4
4
name : ghcr.io/example/example
5
5
tag : v1.0.1
6
+ imagePullPolicy : IfNotPresent
6
7
7
8
ingress :
8
9
enabled : true
@@ -77,9 +78,44 @@ argoHook:
77
78
args :
78
79
- " date --iso-8601 && ls"
79
80
81
+ cronjobs :
82
+ enabled : true
83
+ image :
84
+ name : ghcr.io/example/cronjob
85
+ tag : v1.cronjob
86
+ defaultResources :
87
+ requests :
88
+ cpu : " 1"
89
+ memory : 1Gi
90
+ limits :
91
+ cpu : " 1"
92
+ memory : 2Gi
93
+ # NOTE: Application level configuration
94
+ jobs :
95
+ dummy-01 :
96
+ enabled : true
97
+ schedule : " 0 0 * * *"
98
+ command : ["./manage.py", "run-dummy-command", "01"]
99
+ resources :
100
+ requests :
101
+ cpu : " 2"
102
+ memory : 4Gi
103
+ dummy-02 :
104
+ enabled : true
105
+ schedule : " 0 0 * * *"
106
+ timeZone : " Asia/Kathmandu"
107
+ command : ["./manage.py", "run-dummy-command", "02"]
108
+ dummy-03 :
109
+ enabled : false
110
+ schedule : " * * * * *"
111
+ timeZone : " Asia/Kathmandu"
112
+ command : ["./manage.py", "run-dummy-command", "03"]
113
+
114
+ extraConfigMapName : " my-custom-envs"
80
115
env :
81
116
ENV_1 : VALUE_1
82
117
118
+ extraSecretsName : " my-custom-secrets"
83
119
secrets :
84
120
# Postgres
85
121
POSTGRES_DB : " {{ $.Values.postgresql.auth.database }}"
You can’t perform that action at this time.
0 commit comments