This repository was archived by the owner on Aug 20, 2025. It is now read-only.
File tree Expand file tree Collapse file tree 10 files changed +240
-48
lines changed
Expand file tree Collapse file tree 10 files changed +240
-48
lines changed Original file line number Diff line number Diff line change @@ -2,7 +2,7 @@ apiVersion: v2
22name : django-app
33description : " Helm Chart to deploy the Django application"
44type : application
5- version : 0.1.0
5+ version : 0.1.1
66sources :
77 - https://github.com/toggle-corp/charts
88
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
5252 {{- printf " %s -env-name" (include " django-app.fullname" . ) -}}
5353{{- end -}}
5454{{- 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 2626 spec :
2727 containers :
2828 - 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+ }}
3133 command :
3234 {{- toYaml .Values.api.command | nindent 12 }}
3335 ports :
@@ -37,13 +39,12 @@ spec:
3739 # TODO: livenessProbe
3840 resources :
3941 {{- toYaml .Values.api.resources | nindent 12 }}
40- env :
41- - name : DJANGO_APP_TYPE
42- value : web
4342 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+ }}
4849
4950{{- end }}
Original file line number Diff line number Diff line change @@ -21,22 +21,26 @@ spec:
2121 restartPolicy : " Never"
2222 containers :
2323 - 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+ }}
2628 command : {{ toYaml $hook.command | trim | nindent 12 }}
2729 {{- if $hook.args }}
2830 args : {{ toYaml $hook.args | trim | nindent 12 }}
2931 {{- end }}
3032 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+ }}
3537 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+ }}
4044
4145{{- end }}
4246
Original file line number Diff line number Diff line change @@ -27,21 +27,22 @@ spec:
2727 spec :
2828 containers :
2929 - 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+ }}
3234 command :
3335 {{- toYaml .Values.worker.flower.command | nindent 12 }}
3436 # TODO: livenessProbe
3537 resources :
3638 {{- toYaml .Values.worker.flower.resources | nindent 12 }}
37- env :
38- - name : DJANGO_APP_TYPE
39- value : worker
4039 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+ }}
4546
4647{{- end }}
4748{{- 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:
2626 spec :
2727 containers :
2828 - 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+ }}
3133 command :
3234 {{- toYaml .Values.worker.beat.command | nindent 12 }}
3335 # TODO: livenessProbe
3436 resources :
3537 {{- toYaml .Values.worker.beat.resources | nindent 12 }}
36- env :
37- - name : DJANGO_APP_TYPE
38- value : worker
3938 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+ }}
4445
4546{{- end }}
Original file line number Diff line number Diff line change @@ -32,22 +32,26 @@ spec:
3232 spec :
3333 containers :
3434 - 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 }}
3735 command :
3836 {{- toYaml $.Values.worker.queueCommandPrefix | nindent 12 }}
3937 {{- toYaml $config.celeryArgs | nindent 12 }}
38+ {{- include "django-app.imageConfig"
39+ (dict "Default" $.Values.image "Override" $.Values.worker.image)
40+ | nindent 10
41+ }}
4042 # TODO: livenessProbe
4143 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+ }}
4648 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+ }}
5155
5256{{- end }}
5357
Original file line number Diff line number Diff line change @@ -3,6 +3,7 @@ environment: ALPHA
33image :
44 name : ghcr.io/example/example
55 tag : v1.0.1
6+ imagePullPolicy : IfNotPresent
67
78ingress :
89 enabled : true
@@ -77,9 +78,44 @@ argoHook:
7778 args :
7879 - " date --iso-8601 && ls"
7980
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"
80115env :
81116 ENV_1 : VALUE_1
82117
118+ extraSecretsName : " my-custom-secrets"
83119secrets :
84120 # Postgres
85121 POSTGRES_DB : " {{ $.Values.postgresql.auth.database }}"
You can’t perform that action at this time.
0 commit comments