Files
booklore/example-chart/templates/deployment.yaml
Adam Compton ae24cca0e3 Adding a Helm chart to install in Kubernetes (#1010)
* first pass at a helm chart

* more cleanup

* adding more stuff

* trying to generate the DB password

* more fixes and hardening

* Don't need to bake this in

* switching these back to the defaults

* more cleanup

* bumping the app version to match release

* some fixes

* updating volumeMounts too

* and disabling the PVCs if we aren't using them

* fixing the spacing

---------

Co-authored-by: Aditya Chandel <8075870+adityachandelgit@users.noreply.github.com>
2025-09-07 09:27:13 -06:00

142 lines
4.9 KiB
YAML

apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ include "booklore.fullname" . }}
labels:
{{- include "booklore.labels" . | nindent 4 }}
spec:
selector:
matchLabels:
{{- include "booklore.selectorLabels" . | nindent 6 }}
template:
metadata:
{{- with .Values.podAnnotations }}
annotations:
{{- toYaml . | nindent 8 }}
{{- end }}
labels:
{{- include "booklore.labels" . | nindent 8 }}
{{- with .Values.podLabels }}
{{- toYaml . | nindent 8 }}
{{- end }}
spec:
{{- with .Values.imagePullSecrets }}
imagePullSecrets:
{{- toYaml . | nindent 8 }}
{{- end }}
serviceAccountName: {{ include "booklore.serviceAccountName" . }}
{{- with .Values.podSecurityContext }}
securityContext:
{{- toYaml . | nindent 8 }}
{{- end }}
initContainers:
- name: wait-for-database
image: busybox:1.36
command:
- /bin/sh
- -c
- |
echo "Waiting for database on port {{ .Values.mariadb.primary.service.ports.mysql }}..."
until nc -z -v -w5 {{ .Release.Name }}-mariadb {{ .Values.mariadb.primary.service.ports.mysql }}; do
echo "Waiting for database..."
sleep 2
done
echo "Database is available!"
resources:
requests:
cpu: 10m
memory: 16Mi
limits:
cpu: 50m
memory: 32Mi
containers:
- name: {{ .Chart.Name }}
{{- with .Values.securityContext }}
securityContext:
{{- toYaml . | nindent 12 }}
{{- end }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
ports:
- name: http
containerPort: {{ .Values.service.port }}
#protocol: TCP
env:
- name: BOOKLORE_PORT
value: "6060"
- name: DATABASE_URL
value: jdbc:mariadb://{{ .Release.Name }}-mariadb:{{ .Values.mariadb.primary.service.ports.mysql }}/{{ .Values.mariadb.auth.database }}
- name: DATABASE_USERNAME
value: {{ .Values.mariadb.auth.username }}
- name: DATABASE_PASSWORD
valueFrom:
secretKeyRef:
{{- if .Values.mariadb.auth.existingSecret }}
name: {{ .Values.mariadb.auth.existingSecret }}
{{- else }}
name: {{ .Release.Name }}-mariadb
{{- end }}
key: mariadb-password
{{- with .Values.livenessProbe }}
livenessProbe:
{{- toYaml . | nindent 12 }}
{{- end }}
{{- with .Values.readinessProbe }}
readinessProbe:
{{- toYaml . | nindent 12 }}
{{- end }}
{{- with .Values.resources }}
resources:
{{- toYaml . | nindent 12 }}
{{- end }}
{{- if (or .Values.persistence.dataVolume.enabled .Values.persistence.booksVolume.enabled .Values.extraVolumeMounts) }}
volumeMounts:
{{- if .Values.persistence.dataVolume.enabled }}
- name: data
mountPath: /app/data
{{- end }}
{{- if .Values.persistence.booksVolume.enabled }}
- name: books
mountPath: /books
{{- end }}
{{- with .Values.extraVolumeMounts }}
{{- toYaml . | nindent 12 }}
{{- end }}
{{- end }}
{{- if (or .Values.persistence.dataVolume.enabled .Values.persistence.booksVolume.enabled .Values.extraVolumes) }}
volumes:
{{- if .Values.persistence.dataVolume.enabled }}
- name: data
persistentVolumeClaim:
claimName: {{ if .Values.persistence.dataVolume.existingClaim }}
{{- .Values.persistence.dataVolume.existingClaim }}
{{ else }}
{{- include "booklore.fullname" . }}-data
{{- end }}
{{- end }}
{{- if .Values.persistence.booksVolume.enabled }}
- name: books
persistentVolumeClaim:
claimName: {{ if .Values.persistence.booksVolume.existingClaim }}
{{- .Values.persistence.booksVolume.existingClaim }}
{{ else }}
{{- include "booklore.fullname" . }}-books
{{- end }}
{{- end }}
{{- with .Values.extraVolumes }}
{{- toYaml . | nindent 8 }}
{{- end }}
{{- end -}}
{{- with .Values.nodeSelector }}
nodeSelector:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.affinity }}
affinity:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.tolerations }}
tolerations:
{{- toYaml . | nindent 8 }}
{{- end }}