Compare commits

..

No commits in common. "master" and "0.1.0" have entirely different histories.

23 changed files with 89 additions and 425 deletions

View file

@ -1,9 +0,0 @@
No release is stable. Do not use in production.
# Unreleased
# 1.0.0
- Add volume mounts
- Latest major postgres/redis versions
- Rename preInstall to migrateJob

View file

@ -1,9 +1,9 @@
dependencies: dependencies:
- name: postgresql - name: postgresql
repository: https://charts.bitnami.com/bitnami repository: https://charts.bitnami.com/bitnami
version: 15.5.16 version: 11.6.6
- name: redis - name: redis
repository: https://charts.bitnami.com/bitnami repository: https://charts.bitnami.com/bitnami
version: 19.6.1 version: 16.12.2
digest: sha256:5e21575062cdcef4e947b4f89741e95138d93207f91d5074d53397d9c414f0a1 digest: sha256:2d69e862253eac627fc5d2c2f17b3d56b22f605d2dae33cd3719faf414f98b50
generated: "2024-07-15T13:58:06.767935373-04:00" generated: "2022-06-16T16:23:19.85041101-04:00"

View file

@ -14,7 +14,7 @@ type: application
# This is the chart version. This version number should be incremented each time you make changes # This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version. # to the chart and its templates, including the app version.
version: 1.0.0 version: 0.1.0
# This is the version number of the application being deployed. This version number should be # This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application. # incremented each time you make changes to the application.
@ -22,10 +22,10 @@ appVersion: 1.0.0
dependencies: dependencies:
- name: postgresql - name: postgresql
version: ^15.5.16 version: ~11.6.6
repository: https://charts.bitnami.com/bitnami repository: https://charts.bitnami.com/bitnami
condition: postgresql.enabled condition: postgresql.enabled
- name: redis - name: redis
version: ^19.6.1 version: ~16.12.2
repository: https://charts.bitnami.com/bitnami repository: https://charts.bitnami.com/bitnami
condition: redis.enabled condition: redis.enabled

View file

@ -1,8 +1,6 @@
# Django Helm Chart # Django Helm Chart
A generic Django (plus Celery) Helm chart demonstration. Do not use directly in production. A generic Django (plus Celery) Helm chart.
Contributions may be accepted as merge requests. Be respectful of my time. I will not review if I do not have time. Fork the project instead. Please only open issues that you'd like to implement yourself or fund. Do not open support or feature requests. This chart is **not** intended to cover every use case with Django and Helm. It's a personal project that you are welcome to view and fork. Breaking changes to your workflow may happen at any time and without warning.
# Preparing your Django app # Preparing your Django app
@ -39,17 +37,17 @@ Remember that Kubernetes "args" are Docker's CMD (or command). Pretty confusing!
# Usage # Usage
Use only for demonstration purposes. Fork the repo for production.
1. Add our Helm chart repo `helm repo add django https://gitlab.com/api/v4/projects/26807467/packages/helm/stable` 1. Add our Helm chart repo `helm repo add django https://gitlab.com/api/v4/projects/26807467/packages/helm/stable`
2. Review our values.yaml. At a minimum you'll need to set env.secret.SECRET_KEY and env.secret.DATABASE_URL. 2. Review our values.yaml. At a minimum you'll need to set env.secret.SECRET_KEY and env.secret.DATABASE_URL.
3. Install the chart `helm install your-app django/django -f your-values.yml` 3. Install the chart `helm install your-app django/django -f your-values.yml`
# Tips # Tips
- Do you really need kubernetes?
- Use [helm diff](https://github.com/databus23/helm-diff). One typo will wipe your app without warning otherwise. - Use [helm diff](https://github.com/databus23/helm-diff). One typo will wipe your app without warning otherwise.
- Stateful services like PostgreSQL in kubernetes are only partially supported. There is no clean way to run major upgrades. I don't recommend using them. - While supported, I don't suggest running stateful services like PostgreSQL in kubernetes. There is no clean way to run major upgrades.
- Fork instead of using this directly. - It's fine to use this chart as a reference for your own chart instead of directly using it.
- I don't publish changelogs at this time. You may wish to fork this repo.
## Managing environment variables and secrets ## Managing environment variables and secrets
@ -58,7 +56,6 @@ I suggest either
- Keep them in a values.yml file in a private repo - Keep them in a values.yml file in a private repo
- Make use of --reuse-values and --set - Make use of --reuse-values and --set
- Keep them in a non helm chart managed service - Keep them in a non helm chart managed service
- Use the opentofu helm provider, with a secure state backend or encrypted state.
## Deploying in CI ## Deploying in CI
@ -73,4 +70,6 @@ Maintaining this chart takes time. Considering supporting it by
Commercial support is available - email info@burkesoftware.com Commercial support is available - email info@burkesoftware.com
If you want the scope of this project to include more, such as better merge request review or stable releases. You should consider forking it, talk to me about being a maintainer, or fund it. # Contributing
Contributions are welcome. Report bugs on GitLab issues. Please only open feature requests that you'd like to implement yourself or pay for.

Binary file not shown.

Binary file not shown.

BIN
charts/redis-16.12.2.tgz Normal file

Binary file not shown.

Binary file not shown.

View file

@ -72,7 +72,7 @@ We truncate at 63 chars because some Kubernetes name fields are limited to this
{{- else -}} {{- else -}}
{{- $name := default .Chart.Name .Values.postgresql.nameOverride -}} {{- $name := default .Chart.Name .Values.postgresql.nameOverride -}}
{{- if contains $name .Release.Name -}} {{- if contains $name .Release.Name -}}
{{- .Release.Name | trunc 63 | trimSuffix "-" -}}-postgresql {{- .Release.Name | trunc 63 | trimSuffix "-" -}}
{{- else -}} {{- else -}}
{{- printf "%s-%s" .Release.Name "postgresql" | trunc 63 | trimSuffix "-" -}} {{- printf "%s-%s" .Release.Name "postgresql" | trunc 63 | trimSuffix "-" -}}
{{- end -}} {{- end -}}

View file

@ -1,12 +0,0 @@
{{/*
Renders a value that contains template.
Usage:
{{ include "common.tplvalues.render" ( dict "value" .Values.path.to.the.Value "context" $) }}
*/}}
{{- define "common.tplvalues.render" -}}
{{- if typeIs "string" .value }}
{{- tpl .value .context }}
{{- else }}
{{- tpl (.value | toYaml) .context }}
{{- end }}
{{- end -}}

View file

@ -19,9 +19,6 @@ spec:
checksum/secret: {{ include (print $.Template.BasePath "/secrets.yaml") . | sha256sum }} checksum/secret: {{ include (print $.Template.BasePath "/secrets.yaml") . | sha256sum }}
checksum/configmap: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }} checksum/configmap: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }}
tag: "{{ .Values.image.tag }}" tag: "{{ .Values.image.tag }}"
{{- if .Values.beat.podAnnotations }}
{{- include "common.tplvalues.render" ( dict "value" .Values.beat.podAnnotations "context" $ ) | nindent 8 }}
{{- end }}
labels: labels:
{{- include "django.selectorLabels" . | nindent 8 }} {{- include "django.selectorLabels" . | nindent 8 }}
app.kubernetes.io/component: beat app.kubernetes.io/component: beat
@ -42,7 +39,12 @@ spec:
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: {{ .Values.image.pullPolicy }} imagePullPolicy: {{ .Values.image.pullPolicy }}
resources: resources:
{{- toYaml .Values.beat.resources | nindent 12 }} limits:
cpu: 50m
memory: 96Mi
requests:
cpu: 1m
memory: 32Mi
env: env:
- name: SERVER_ROLE - name: SERVER_ROLE
value: "beat" value: "beat"
@ -50,37 +52,13 @@ spec:
- name: DATABASE_PASSWORD - name: DATABASE_PASSWORD
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
name: {{ default (include "django.postgresql.fullname" .) .Values.postgresql.auth.existingSecret }} name: {{ include "django.postgresql.fullname" . }}
key: postgres-password key: postgres-password
{{- end }} {{- end }}
envFrom: envFrom:
- secretRef: - secretRef:
name: {{ include "django.fullname" . }} name: {{ include "django.fullname" . }}
{{- if .Values.existingSecret }}
- secretRef:
name: {{ .Values.existingSecret }}
{{- end }}
- configMapRef: - configMapRef:
name: {{ include "django.fullname" . }} name: {{ include "django.fullname" . }}
{{- with .Values.extraVolumeMounts }}
volumeMounts:
{{- toYaml . | nindent 10 }}
{{- end }}
{{- with .Values.beat.nodeSelector }}
nodeSelector:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.beat.affinity }}
affinity:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.beat.tolerations }}
tolerations:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.extraVolumes }}
volumes:
{{- toYaml . | nindent 6 }}
{{- end }}
{{- end }} {{- end }}
{{- end }} {{- end }}

View file

@ -7,12 +7,12 @@ metadata:
annotations: annotations:
"helm.sh/hook-weight": "-1" "helm.sh/hook-weight": "-1"
data: data:
{{- range $k, $v := .Values.env.normal }}
{{ $k }}: {{ $v | quote }}
{{- end }}
{{- if .Values.postgresql.enabled }} {{- if .Values.postgresql.enabled }}
DATABASE_HOST: {{ include "django.postgresql.host" . | quote }} DATABASE_HOST: {{ include "django.postgresql.host" . | quote }}
DATABASE_USER: {{ include "django.postgresql.username" . | quote }} DATABASE_USER: {{ include "django.postgresql.username" . | quote }}
DATABASE_NAME: {{ include "django.postgresql.name" . | quote }} DATABASE_NAME: {{ include "django.postgresql.name" . | quote }}
DATABASE_PORT: {{ include "django.postgresql.port" . | quote }} DATABASE_PORT: {{ include "django.postgresql.port" . | quote }}
{{- end }} {{- end }}
{{- range $k, $v := .Values.env.normal }}
{{ $k }}: {{ $v | quote }}
{{- end }}

View file

@ -1,72 +0,0 @@
{{- if .Values.flower.enabled -}}
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ include "django.fullname" . }}-flower
labels:
{{- include "django.labels" . | nindent 4 }}
app.kubernetes.io/component: flower
spec:
replicas: 1
selector:
matchLabels:
{{- include "django.selectorLabels" . | nindent 6 }}
app.kubernetes.io/component: flower
template:
metadata:
annotations:
checksum/secret: {{ include (print $.Template.BasePath "/secrets.yaml") . | sha256sum }}
checksum/configmap: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }}
{{- if .Values.flower.podAnnotations }}
{{- include "common.tplvalues.render" ( dict "value" .Values.flower.podAnnotations "context" $ ) | nindent 8 }}
{{- end }}
labels:
{{- include "django.selectorLabels" . | nindent 8 }}
app.kubernetes.io/component: flower
spec:
{{- with .Values.flower.imagePullSecrets }}
imagePullSecrets:
{{- toYaml . | nindent 8 }}
{{- end }}
securityContext:
{{- toYaml .Values.podSecurityContext | nindent 8 }}
containers:
- name: {{ .Chart.Name }}
{{- if .Values.flower.args }}
args: {{- toYaml .Values.flower.args | nindent 10}}
{{- end }}
securityContext:
{{- toYaml .Values.securityContext | nindent 12 }}
image: "{{ .Values.flower.image.repository }}:{{ .Values.flower.image.tag }}"
imagePullPolicy: {{ .Values.flower.image.pullPolicy }}
ports:
- containerPort: 5555
name: http
protocol: TCP
resources:
{{- toYaml .Values.flower.resources | nindent 12 }}
env:
- name: SERVER_ROLE
value: "flower"
envFrom:
- secretRef:
name: {{ include "django.fullname" . }}
{{- if .Values.existingSecret }}
- secretRef:
name: {{ .Values.existingSecret }}
{{- end }}
- configMapRef:
name: {{ include "django.fullname" . }}
{{- with .Values.flower.nodeSelector }}
nodeSelector:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.flower.affinity }}
affinity:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.flower.tolerations }}
tolerations:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- end }}

View file

@ -1,66 +0,0 @@
{{- if .Values.flower.ingress.enabled -}}
{{- $fullName := include "django.fullname" . -}}
{{- $svcPort := .Values.flower.service.port -}}
{{- if and .Values.flower.ingress.className (not (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion)) }}
{{- if not (hasKey .Values.flower.ingress.annotations "kubernetes.io/ingress.class") }}
{{- $_ := set .Values.flower.ingress.annotations "kubernetes.io/ingress.class" .Values.flower.ingress.className}}
{{- end }}
{{- end }}
{{- if semverCompare ">=1.19-0" .Capabilities.KubeVersion.GitVersion -}}
apiVersion: networking.k8s.io/v1
{{- else if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}}
apiVersion: networking.k8s.io/v1beta1
{{- else -}}
apiVersion: extensions/v1beta1
{{- end }}
kind: Ingress
metadata:
name: {{ $fullName }}-flower
labels:
{{- include "django.labels" . | nindent 4 }}
{{- with .Values.flower.ingress.annotations }}
annotations:
{{- toYaml . | nindent 4 }}
{{- end }}
spec:
{{- if and .Values.flower.ingress.className (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion) }}
ingressClassName: {{ .Values.flower.ingress.className }}
{{- end }}
{{- if .Values.flower.ingress.tls }}
tls:
{{- range .Values.flower.ingress.tls }}
- hosts:
{{- range .hosts }}
- {{ . | quote }}
{{- end }}
secretName: {{ .secretName }}
{{- end }}
{{- end }}
rules:
{{- range .Values.flower.ingress.hosts }}
- host: {{ .host | quote }}
http:
paths:
{{- range .paths }}
- path: {{ .path }}
{{- if and .pathType (semverCompare ">=1.18-0" $.Capabilities.KubeVersion.GitVersion) }}
pathType: {{ .pathType }}
{{- end }}
{{- if .backend }}
backend:
{{- toYaml .backend | nindent 14 }}
{{- else }}
backend:
{{- if semverCompare ">=1.19-0" $.Capabilities.KubeVersion.GitVersion }}
service:
name: {{ $fullName }}-flower
port:
number: {{ $svcPort }}
{{- else }}
serviceName: {{ $fullName }}
servicePort: {{ $svcPort }}
{{- end }}
{{- end }}
{{- end }}
{{- end }}
{{- end }}

View file

@ -1,18 +0,0 @@
{{- if .Values.flower.enabled -}}
apiVersion: v1
kind: Service
metadata:
name: {{ include "django.fullname" . }}-flower
labels:
{{- include "django.labels" . | nindent 4 }}
spec:
type: {{ .Values.flower.service.type }}
ports:
- port: {{ .Values.flower.service.port }}
targetPort: http
protocol: TCP
name: http
selector:
{{- include "django.selectorLabels" . | nindent 4 }}
app.kubernetes.io/component: flower
{{- end }}

View file

@ -1,66 +0,0 @@
{{- if .Values.migrationJob.enabled -}}
apiVersion: batch/v1
kind: Job
metadata:
name: {{ include "django.fullname" . }}-migrate
labels:
{{- include "django.labels" . | nindent 4 }}
annotations:
"helm.sh/hook": post-install,pre-upgrade
"helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded
"helm.sh/hook-weight": "0"
checksum/secret: {{ include (print $.Template.BasePath "/secrets.yaml") . | sha256sum }}
checksum/configmap: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }}
tag: "{{ .Values.image.tag }}"
spec:
activeDeadlineSeconds: {{ default 900 .Values.migrationJob.activeDeadlineSeconds }}
template:
metadata:
labels:
app.kubernetes.io/component: migrate-job
{{- include "django.selectorLabels" . | nindent 8 }}
spec:
{{- with .Values.imagePullSecrets }}
imagePullSecrets:
{{- toYaml . | nindent 8 }}
{{- end }}
serviceAccountName: {{ include "django.serviceAccountName" . }}
restartPolicy: Never
securityContext:
{{- toYaml .Values.podSecurityContext | nindent 8 }}
containers:
- name: migrate-job
securityContext:
{{- toYaml .Values.securityContext | nindent 12 }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
{{- if .Values.migrationJob.resources }}
resources: {{ toYaml .Values.migrationJob.resources | nindent 12 }}
{{- end }}
command: {{ .Values.migrationJob.command | default (list "./manage.py" "migrate") | toJson }}
env:
{{- if .Values.postgresql.enabled }}
- name: DATABASE_PASSWORD
valueFrom:
secretKeyRef:
name: {{ default (include "django.postgresql.fullname" .) .Values.postgresql.auth.existingSecret }}
key: postgres-password
{{- end }}
envFrom:
- secretRef:
name: {{ include "django.fullname" . }}
{{- if .Values.existingSecret }}
- secretRef:
name: {{ .Values.existingSecret }}
{{- end }}
- configMapRef:
name: {{ include "django.fullname" . }}
{{- with .Values.extraVolumeMounts }}
volumeMounts:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.extraVolumes }}
volumes:
{{- toYaml . | nindent 6 }}
{{- end }}
{{- end }}

View file

@ -0,0 +1,50 @@
apiVersion: batch/v1
kind: Job
metadata:
name: {{ include "django.fullname" . }}
labels:
{{- include "django.labels" . | nindent 4 }}
annotations:
"helm.sh/hook": post-install,pre-upgrade
"helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded
"helm.sh/hook-weight": "0"
checksum/secret: {{ include (print $.Template.BasePath "/secrets.yaml") . | sha256sum }}
checksum/configmap: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }}
tag: "{{ .Values.image.tag }}"
spec:
activeDeadlineSeconds: 600
template:
spec:
{{- with .Values.imagePullSecrets }}
imagePullSecrets:
{{- toYaml . | nindent 8 }}
{{- end }}
restartPolicy: Never
containers:
- name: pre-install-job
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
command: ["./manage.py","migrate"]
env:
- name: DEBUG
value: "False"
{{- if .Values.env.secret.DATABASE_URL }}
- name: DATABASE_URL
value: {{ .Values.env.secret.DATABASE_URL }}
{{- end }}
{{- if .Values.postgresql.enabled }}
- name: DATABASE_PASSWORD
valueFrom:
secretKeyRef:
name: {{ include "django.postgresql.fullname" . }}
key: postgres-password
{{- end }}
- name: SECRET_KEY
value: {{ required "env.secret.SECRET_KEY is a required value." .Values.env.secret.SECRET_KEY }}
{{- range $k, $v := .Values.env.normal }}
- name: {{ $k }}
value: {{ $v | quote }}
{{- end }}
envFrom:
- configMapRef:
name: {{ include "django.fullname" . }}

View file

@ -19,9 +19,6 @@ spec:
checksum/secret: {{ include (print $.Template.BasePath "/secrets.yaml") . | sha256sum }} checksum/secret: {{ include (print $.Template.BasePath "/secrets.yaml") . | sha256sum }}
checksum/configmap: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }} checksum/configmap: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }}
tag: "{{ .Values.image.tag }}" tag: "{{ .Values.image.tag }}"
{{- if .Values.web.podAnnotations }}
{{- include "common.tplvalues.render" ( dict "value" .Values.web.podAnnotations "context" $ ) | nindent 8 }}
{{- end }}
labels: labels:
{{- include "django.selectorLabels" . | nindent 8 }} {{- include "django.selectorLabels" . | nindent 8 }}
app.kubernetes.io/component: web app.kubernetes.io/component: web
@ -71,22 +68,14 @@ spec:
- name: DATABASE_PASSWORD - name: DATABASE_PASSWORD
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
name: {{ default (include "django.postgresql.fullname" .) .Values.postgresql.auth.existingSecret }} name: {{ include "django.postgresql.fullname" . }}
key: postgres-password key: postgres-password
{{- end }} {{- end }}
envFrom: envFrom:
- secretRef: - secretRef:
name: {{ include "django.fullname" . }} name: {{ include "django.fullname" . }}
{{- if .Values.existingSecret }}
- secretRef:
name: {{ .Values.existingSecret }}
{{- end }}
- configMapRef: - configMapRef:
name: {{ include "django.fullname" . }} name: {{ include "django.fullname" . }}
{{- with .Values.extraVolumeMounts }}
volumeMounts:
{{- toYaml . | nindent 10 }}
{{- end }}
{{- with .Values.web.nodeSelector }} {{- with .Values.web.nodeSelector }}
nodeSelector: nodeSelector:
{{- toYaml . | nindent 8 }} {{- toYaml . | nindent 8 }}
@ -99,7 +88,3 @@ spec:
tolerations: tolerations:
{{- toYaml . | nindent 8 }} {{- toYaml . | nindent 8 }}
{{- end }} {{- end }}
{{- with .Values.extraVolumes }}
volumes:
{{- toYaml . | nindent 6 }}
{{- end }}

View file

@ -1,5 +1,5 @@
{{- if .Values.web.autoscaling.enabled -}} {{- if .Values.web.autoscaling.enabled -}}
apiVersion: autoscaling/v2 apiVersion: autoscaling/v2beta1
kind: HorizontalPodAutoscaler kind: HorizontalPodAutoscaler
metadata: metadata:
name: {{ template "django.fullname" . }}-web name: {{ template "django.fullname" . }}-web
@ -13,20 +13,16 @@ spec:
minReplicas: {{ .Values.web.autoscaling.minReplicas }} minReplicas: {{ .Values.web.autoscaling.minReplicas }}
maxReplicas: {{ .Values.web.autoscaling.maxReplicas }} maxReplicas: {{ .Values.web.autoscaling.maxReplicas }}
metrics: metrics:
{{- if .Values.web.autoscaling.targetCPU }} {{- if .Values.web.autoscaling.targetCPUUtilizationPercentage }}
- type: Resource - type: Resource
resource: resource:
name: cpu name: cpu
target: targetAverageUtilization: {{ .Values.web.autoscaling.targetCPUUtilizationPercentage }}
type: "Utilization"
averageUtilization: {{ .Values.web.autoscaling.targetCPU }}
{{- end }} {{- end }}
{{- if .Values.web.autoscaling.targetMemory }} {{- if .Values.web.autoscaling.targetMemoryUtilizationPercentage }}
- type: Resource - type: Resource
resource: resource:
name: memory name: memory
target: targetAverageUtilization: {{ .Values.web.autoscaling.targetMemoryUtilizationPercentage }}
type: "Utilization"
averageUtilization: {{ .Values.web.autoscaling.targetMemory }}
{{- end }} {{- end }}
{{- end }} {{- end }}

View file

@ -46,10 +46,6 @@ spec:
{{- if and .pathType (semverCompare ">=1.18-0" $.Capabilities.KubeVersion.GitVersion) }} {{- if and .pathType (semverCompare ">=1.18-0" $.Capabilities.KubeVersion.GitVersion) }}
pathType: {{ .pathType }} pathType: {{ .pathType }}
{{- end }} {{- end }}
{{- if .backend }}
backend:
{{- toYaml .backend | nindent 14 }}
{{- else }}
backend: backend:
{{- if semverCompare ">=1.19-0" $.Capabilities.KubeVersion.GitVersion }} {{- if semverCompare ">=1.19-0" $.Capabilities.KubeVersion.GitVersion }}
service: service:
@ -62,5 +58,4 @@ spec:
{{- end }} {{- end }}
{{- end }} {{- end }}
{{- end }} {{- end }}
{{- end }}
{{- end }} {{- end }}

View file

@ -18,9 +18,6 @@ spec:
checksum/secret: {{ include (print $.Template.BasePath "/secrets.yaml") . | sha256sum }} checksum/secret: {{ include (print $.Template.BasePath "/secrets.yaml") . | sha256sum }}
checksum/configmap: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }} checksum/configmap: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }}
tag: "{{ .Values.image.tag }}" tag: "{{ .Values.image.tag }}"
{{- if .Values.worker.podAnnotations }}
{{- include "common.tplvalues.render" ( dict "value" .Values.worker.podAnnotations "context" $ ) | nindent 8 }}
{{- end }}
labels: labels:
{{- include "django.selectorLabels" . | nindent 8 }} {{- include "django.selectorLabels" . | nindent 8 }}
app.kubernetes.io/component: worker app.kubernetes.io/component: worker
@ -29,7 +26,6 @@ spec:
imagePullSecrets: imagePullSecrets:
{{- toYaml . | nindent 8 }} {{- toYaml . | nindent 8 }}
{{- end }} {{- end }}
serviceAccountName: {{ include "django.serviceAccountName" . }}
securityContext: securityContext:
{{- toYaml .Values.podSecurityContext | nindent 8 }} {{- toYaml .Values.podSecurityContext | nindent 8 }}
containers: containers:
@ -41,10 +37,6 @@ spec:
{{- toYaml .Values.securityContext | nindent 12 }} {{- toYaml .Values.securityContext | nindent 12 }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: {{ .Values.image.pullPolicy }} imagePullPolicy: {{ .Values.image.pullPolicy }}
{{- if .Values.worker.livenessProbe }}
livenessProbe:
{{- .Values.worker.livenessProbe | toYaml | nindent 12 }}
{{- end }}
resources: resources:
{{- toYaml .Values.worker.resources | nindent 12 }} {{- toYaml .Values.worker.resources | nindent 12 }}
env: env:
@ -54,22 +46,14 @@ spec:
- name: DATABASE_PASSWORD - name: DATABASE_PASSWORD
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
name: {{ default (include "django.postgresql.fullname" .) .Values.postgresql.auth.existingSecret }} name: {{ include "django.postgresql.fullname" . }}
key: postgres-password key: postgres-password
{{- end }} {{- end }}
envFrom: envFrom:
- secretRef: - secretRef:
name: {{ include "django.fullname" . }} name: {{ include "django.fullname" . }}
{{- if .Values.existingSecret }}
- secretRef:
name: {{ .Values.existingSecret }}
{{- end }}
- configMapRef: - configMapRef:
name: {{ include "django.fullname" . }} name: {{ include "django.fullname" . }}
{{- with .Values.extraVolumeMounts }}
volumeMounts:
{{- toYaml . | nindent 10 }}
{{- end }}
{{- with .Values.worker.nodeSelector }} {{- with .Values.worker.nodeSelector }}
nodeSelector: nodeSelector:
{{- toYaml . | nindent 8 }} {{- toYaml . | nindent 8 }}
@ -82,8 +66,4 @@ spec:
tolerations: tolerations:
{{- toYaml . | nindent 8 }} {{- toYaml . | nindent 8 }}
{{- end }} {{- end }}
{{- with .Values.extraVolumes }}
volumes:
{{- toYaml . | nindent 6 }}
{{- end }}
{{- end }} {{- end }}

View file

@ -1,5 +1,5 @@
{{- if .Values.worker.autoscaling.enabled -}} {{- if .Values.worker.autoscaling.enabled -}}
apiVersion: autoscaling/v2 apiVersion: autoscaling/v2beta1
kind: HorizontalPodAutoscaler kind: HorizontalPodAutoscaler
metadata: metadata:
name: {{ template "django.fullname" . }}-worker name: {{ template "django.fullname" . }}-worker
@ -13,20 +13,16 @@ spec:
minReplicas: {{ .Values.worker.autoscaling.minReplicas }} minReplicas: {{ .Values.worker.autoscaling.minReplicas }}
maxReplicas: {{ .Values.worker.autoscaling.maxReplicas }} maxReplicas: {{ .Values.worker.autoscaling.maxReplicas }}
metrics: metrics:
{{- if .Values.worker.autoscaling.targetCPU }} {{- if .Values.worker.autoscaling.targetCPUUtilizationPercentage }}
- type: Resource - type: Resource
resource: resource:
name: cpu name: cpu
target: targetAverageUtilization: {{ .Values.worker.autoscaling.targetCPUUtilizationPercentage }}
type: "Utilization"
averageUtilization: {{ .Values.worker.autoscaling.targetCPU }}
{{- end }} {{- end }}
{{- if .Values.worker.autoscaling.targetMemory }} {{- if .Values.worker.autoscaling.targetMemoryUtilizationPercentage }}
- type: Resource - type: Resource
resource: resource:
name: memory name: memory
target: targetAverageUtilization: {{ .Values.worker.autoscaling.targetMemoryUtilizationPercentage }}
type: "Utilization"
averageUtilization: {{ .Values.worker.autoscaling.targetMemory }}
{{- end }} {{- end }}
{{- end }} {{- end }}

View file

@ -11,14 +11,6 @@ imagePullSecrets: []
nameOverride: "" nameOverride: ""
fullnameOverride: "" fullnameOverride: ""
migrationJob:
enabled: true
command: [] # Default ./manage.py migrate
activeDeadlineSeconds: 900
resources:
limits: {}
requests: {}
env: env:
normal: {} normal: {}
secret: {} secret: {}
@ -26,10 +18,6 @@ env:
# DATABASE_URL: # DATABASE_URL:
# REDIS_URL: # REDIS_URL:
existingSecret: ""
extraVolumeMounts: []
extraVolumes: []
web: web:
replicaCount: 2 replicaCount: 2
port: 8080 port: 8080
@ -51,7 +39,6 @@ web:
memory: 128Mi memory: 128Mi
nodeSelector: {} nodeSelector: {}
tolerations: [] tolerations: []
podAnnotations: {}
affinity: {} affinity: {}
# podAntiAffinity: # podAntiAffinity:
# preferredDuringSchedulingIgnoredDuringExecution: # preferredDuringSchedulingIgnoredDuringExecution:
@ -103,15 +90,6 @@ worker:
maxReplicas: 100 maxReplicas: 100
targetCPUUtilizationPercentage: 90 targetCPUUtilizationPercentage: 90
# targetMemoryUtilizationPercentage: 80 # targetMemoryUtilizationPercentage: 80
livenessProbe: {}
# initialDelaySeconds: 10
# periodSeconds: 60
# timeoutSeconds: 30
# exec:
# command:
# - "bash"
# - "-c"
# - "celery -A django inspect ping -d celery@$HOSTNAME | grep -q OK"
resources: resources:
limits: limits:
cpu: 900m cpu: 900m
@ -121,58 +99,10 @@ worker:
memory: 128Mi memory: 128Mi
nodeSelector: {} nodeSelector: {}
tolerations: [] tolerations: []
podAnnotations: {}
affinity: {} affinity: {}
beat: beat:
enabled: true enabled: true
resources:
limits:
cpu: 100m
memory: 120Mi
requests:
cpu: 1m
memory: 90Mi
nodeSelector: {}
tolerations: []
podAnnotations: {}
affinity: {}
flower:
enabled: false
image:
repository: mher/flower
tag: latest
pullPolicy: IfNotPresent
resources:
limits:
cpu: 500m
memory: 512Mi
requests:
cpu: 50m
memory: 256Mi
nodeSelector: {}
tolerations: []
podAnnotations: {}
affinity: {}
service:
type: ClusterIP
port: 80
ingress:
enabled: false
annotations:
{}
# kubernetes.io/ingress.class: nginx
# kubernetes.io/tls-acme: "true"
hosts:
- host: chart-example.local
paths:
- path: /
pathType: ImplementationSpecific
tls: []
# - secretName: chart-example-tls
# hosts:
# - chart-example.local
serviceAccount: serviceAccount:
# Specifies whether a service account should be created # Specifies whether a service account should be created
@ -194,6 +124,4 @@ redis:
# Default to disabled, use a managed database service. But can be enabled here. # Default to disabled, use a managed database service. But can be enabled here.
postgresql: postgresql:
enabled: false enabled: false
#auth: postgresqlPassword: # Must be set
# postgresqlPassword: # Must be set