Skip to content
This repository was archived by the owner on Aug 20, 2025. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/workflows/helm-publish.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ jobs:
matrix:
include:
- chart: react-serve
- chart: django-app

steps:
- name: Checkout code
Expand Down
3 changes: 3 additions & 0 deletions toggle/django-app/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
charts
values-local.yaml
.helm-charts/
1 change: 1 addition & 0 deletions toggle/django-app/.helmignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
values-local.yaml
12 changes: 12 additions & 0 deletions toggle/django-app/Chart.lock
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
dependencies:
- name: redis
repository: https://charts.bitnami.com/bitnami
version: 20.6.3
- name: postgresql
repository: https://charts.bitnami.com/bitnami
version: 16.4.5
- name: minio
repository: https://charts.bitnami.com/bitnami
version: 14.10.5
digest: sha256:bb671bae5b6453f7da356f8482f2ccf7eb182b7d38c28fea28e39841c8bb41b5
generated: "2025-02-11T14:41:21.280715684+05:45"
21 changes: 21 additions & 0 deletions toggle/django-app/Chart.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
apiVersion: v2
name: django-app
description: "Helm Chart to deploy the Django application"
type: application
version: 0.0.1
sources:
- https://github.com/toggle-corp/charts

dependencies:
- name: redis
version: 20.6.3
repository: https://charts.bitnami.com/bitnami
condition: redis.enabled
- name: postgresql
version: 16.4.5
condition: postgresql.enabled
repository: https://charts.bitnami.com/bitnami
- name: minio
version: 14.10.5
condition: minio.enabled
repository: https://charts.bitnami.com/bitnami
54 changes: 54 additions & 0 deletions toggle/django-app/templates/_helpers.tpl
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
{{/*
Expand the name of the chart.
*/}}
{{- define "django-app.name" -}}
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
{{- end -}}

{{/*
Create a default fully qualified app name.
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
If release name contains chart name it will be used as a full name.
https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#dns-label-names
*/}}
{{- define "django-app.fullname" -}}
{{- if .Values.fullnameOverride -}}
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
{{- else -}}
{{- $name := default .Chart.Name .Values.nameOverride -}}
{{- if contains $name .Release.Name -}}
{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
{{- else -}}
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{- end -}}
{{- end -}}

{{/*
Create chart name and version as used by the chart label.
*/}}
{{- define "django-app.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
{{- end -}}

{{/*
Create the name of the secret to be used by the django-app
*/}}
{{- define "django-app.secretname" -}}
{{- if .Values.secretsName }}
{{- .Values.secretsName -}}
{{- else }}
{{- printf "%s-secret" (include "django-app.fullname" .) -}}
{{- end -}}
{{- end -}}

{{/*
Create the name of the configmap to be used by the django-app
*/}}
{{- define "django-app.envConfigMapName" -}}
{{- if .Values.envConfigMapName }}
{{- .Values.envConfigMapName -}}
{{- else }}
{{- printf "%s-env-name" (include "django-app.fullname" .) -}}
{{- end -}}
{{- end -}}
49 changes: 49 additions & 0 deletions toggle/django-app/templates/api/deployment.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
{{- if .Values.api.enabled }}

apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ template "django-app.fullname" . }}-api
labels:
app: {{ include "django-app.fullname" . }}
component: api
environment: {{ .Values.environment }}
release: {{ .Release.Name }}
spec:
replicas: {{ .Values.api.replicaCount }}
selector:
matchLabels:
app: {{ include "django-app.fullname" . }}
component: api
template:
metadata:
annotations:
checksum/secret: {{ include (print .Template.BasePath "/config/secret.yaml") . | sha256sum }}
checksum/configmap: {{ include (print .Template.BasePath "/config/configmap.yaml") . | sha256sum }}
labels:
app: {{ include "django-app.fullname" . }}
component: api
spec:
containers:
- name: api
image: "{{ default .Values.api.image.name .Values.image.name }}:{{ default .Values.api.image.tag .Values.image.tag }}"
imagePullPolicy: {{ default .Values.api.image.imagePullPolicy .Values.image.imagePullPolicy }}
command:
{{- toYaml .Values.api.command | nindent 12 }}
ports:
- name: http
containerPort: {{ .Values.api.containerPort }}
protocol: TCP
# TODO: livenessProbe
resources:
{{- toYaml .Values.api.resources | nindent 12 }}
env:
- name: DJANGO_APP_TYPE
value: web
envFrom:
- secretRef:
name: {{ template "django-app.secretname" . }}
- configMapRef:
name: {{ template "django-app.envConfigMapName" . }}

{{- end }}
25 changes: 25 additions & 0 deletions toggle/django-app/templates/api/ingress.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
{{- if .Values.ingress.enabled }}

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: {{ template "django-app.fullname" . }}-api
labels:
app: {{ include "django-app.fullname" . }}
component: api
environment: {{ .Values.environment }}
release: {{ .Release.Name }}
spec:
ingressClassName: {{ required "ingress.className" .Values.ingress.className | quote }}
rules:
- host: {{ required "ingress.host" .Values.ingress.host | quote }}
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: {{ template "django-app.fullname" . }}-api
port:
number: 80
{{- end }}
22 changes: 22 additions & 0 deletions toggle/django-app/templates/api/service.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
{{- if .Values.api.enabled -}}

apiVersion: v1
kind: Service
metadata:
name: {{ template "django-app.fullname" . }}-api
labels:
app: {{ include "django-app.fullname" . }}
component: api
environment: {{ .Values.environment }}
release: {{ .Release.Name }}
spec:
type: ClusterIP
selector:
app: {{ include "django-app.fullname" . }}
component: api
ports:
- protocol: TCP
port: 80
targetPort: {{ .Values.api.containerPort }}

{{- end }}
42 changes: 42 additions & 0 deletions toggle/django-app/templates/argo-hooks/hook-job.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
{{- if .Values.argoHook.enabled }}

{{- range $hookName, $hook := .Values.argoHook.hooks }}

{{- if $hook.enabled }}

---
apiVersion: batch/v1
kind: Job
metadata:
{{- if $hook.preserveHistory }}
generateName: {{ template "django-app.fullname" $ }}-{{ $hookName }}-
{{- else }}
name: {{ template "django-app.fullname" $ }}-{{ $hookName }}
{{- end }}
annotations:
argocd.argoproj.io/hook: {{ $hook.hook }}
spec:
template:
spec:
restartPolicy: "Never"
containers:
- name: {{ $hookName }}
image: "{{ default $.Values.argoHook.image.name $.Values.image.name }}:{{ default $.Values.argoHook.image.tag $.Values.image.tag }}"
imagePullPolicy: {{ default $.Values.argoHook.image.imagePullPolicy $.Values.image.imagePullPolicy }}
command: {{ toYaml $hook.command | trim | nindent 12 }}
resources:
{{- toYaml (default $hook.resources $.Values.argoHook.resources) | nindent 12 }}
env:
- name: DJANGO_APP_TYPE
value: hook
envFrom:
- secretRef:
name: {{ template "django-app.secretname" $ }}
- configMapRef:
name: {{ template "django-app.envConfigMapName" $ }}

{{- end }}

{{- end }}

{{- end }}
47 changes: 47 additions & 0 deletions toggle/django-app/templates/celery-flower/deployment.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
{{- if .Values.worker.enabled }}
{{- if .Values.worker.flower.enabled }}

apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ template "django-app.fullname" . }}-celery-flower
labels:
app: {{ include "django-app.fullname" . }}
component: worker-flower
environment: {{ .Values.environment }}
release: {{ .Release.Name }}
spec:
replicas: 1
selector:
matchLabels:
app: {{ include "django-app.fullname" . }}
component: worker-flower
template:
metadata:
annotations:
checksum/secret: {{ include (print .Template.BasePath "/config/secret.yaml") . | sha256sum }}
checksum/configmap: {{ include (print .Template.BasePath "/config/configmap.yaml") . | sha256sum }}
labels:
app: {{ include "django-app.fullname" . }}
component: worker-flower
spec:
containers:
- name: worker
image: "{{ default .Values.worker.flower.image.name .Values.image.name }}:{{ default .Values.worker.flower.image.tag .Values.image.tag }}"
imagePullPolicy: {{ default .Values.worker.flower.image.imagePullPolicy .Values.image.imagePullPolicy }}
command:
{{- toYaml .Values.worker.flower.command | nindent 12 }}
# TODO: livenessProbe
resources:
{{- toYaml .Values.worker.flower.resources | nindent 12 }}
env:
- name: DJANGO_APP_TYPE
value: worker
envFrom:
- secretRef:
name: {{ template "django-app.secretname" . }}
- configMapRef:
name: {{ template "django-app.envConfigMapName" . }}

{{- end }}
{{- end }}
24 changes: 24 additions & 0 deletions toggle/django-app/templates/celery-flower/service.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
{{- if .Values.worker.enabled }}
{{- if .Values.worker.flower.enabled }}

apiVersion: v1
kind: Service
metadata:
name: {{ template "django-app.fullname" . }}-celery-flower
labels:
app: {{ include "django-app.fullname" . }}
component: celery-flower
environment: {{ .Values.environment }}
release: {{ .Release.Name }}
spec:
type: ClusterIP
selector:
app: {{ include "django-app.fullname" . }}
component: worker-flower
ports:
- protocol: TCP
port: 80
targetPort: 8000

{{- end }}
{{- end }}
13 changes: 13 additions & 0 deletions toggle/django-app/templates/config/configmap.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
kind: ConfigMap
apiVersion: v1
metadata:
name: {{ template "django-app.envConfigMapName" . }}
labels:
app: {{ include "django-app.fullname" . }}
environment: {{ .Values.environment }}
release: {{ .Release.Name }}
data:
# Configs
{{- range $name, $value := .Values.env }}
{{ $name }}: {{ tpl $value $ | quote }}
{{- end }}
14 changes: 14 additions & 0 deletions toggle/django-app/templates/config/secret.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
kind: Secret
apiVersion: v1
metadata:
name: {{ template "django-app.secretname" . }}
labels:
app: {{ include "django-app.fullname" . }}
environment: {{ .Values.environment }}
release: {{ .Release.Name }}
type: Opaque
stringData:
# secrets
{{- range $name, $value := .Values.secrets }}
{{ $name }}: {{ tpl $value $ | quote }}
{{- end }}
45 changes: 45 additions & 0 deletions toggle/django-app/templates/worker-beat/deployment.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
{{- if .Values.worker.enabled }}

apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ template "django-app.fullname" . }}-worker-beat
labels:
app: {{ include "django-app.fullname" . }}
component: worker-beat
environment: {{ .Values.environment }}
release: {{ .Release.Name }}
spec:
replicas: 1 # This should only 1
selector:
matchLabels:
app: {{ include "django-app.fullname" . }}
component: worker-beat
template:
metadata:
annotations:
checksum/secret: {{ include (print .Template.BasePath "/config/secret.yaml") . | sha256sum }}
checksum/configmap: {{ include (print .Template.BasePath "/config/configmap.yaml") . | sha256sum }}
labels:
app: {{ include "django-app.fullname" . }}
component: worker-beat
spec:
containers:
- name: worker-beat
image: "{{ default .Values.worker.beat.image.name .Values.image.name }}:{{ default .Values.worker.beat.image.tag .Values.image.tag }}"
imagePullPolicy: {{ default .Values.worker.beat.image.imagePullPolicy .Values.image.imagePullPolicy }}
command:
{{- toYaml .Values.worker.beat.command | nindent 12 }}
# TODO: livenessProbe
resources:
{{- toYaml .Values.worker.beat.resources | nindent 12 }}
env:
- name: DJANGO_APP_TYPE
value: worker
envFrom:
- secretRef:
name: {{ template "django-app.secretname" . }}
- configMapRef:
name: {{ template "django-app.envConfigMapName" . }}

{{- end }}
Loading
Loading