2025-02-04 15:48:36 -08:00

113 lines
3.9 KiB
YAML

{{- range .Values.postgres.databases }}
---
apiVersion: batch/v1
kind: Job
metadata:
name: {{ include "init-dbs.fullname" $ }}-postgres-{{ .database }}
spec:
template:
spec:
imagePullSecrets:
{{- toYaml $.Values.imagePullSecrets | nindent 8 }}
restartPolicy: OnFailure
containers:
- name: {{ include "init-dbs.fullname" $ }}-postgres-{{ .database }}
image: {{ $.Values.postgres.image.ref }}
imagePullPolicy: {{ $.Values.postgres.image.pullPolicy }}
command:
- /bin/sh
- -c
args:
# If the username and database exists, whatever, just exit.
# Yeah, if something else went wrong, we're still exiting with code 0,
# but it should be fine.
- |
sleep 10s && \
psql -h {{ $.Values.postgres.host }} -U $PGUSER postgres \
-tc "SELECT 1 FROM pg_database WHERE datname = '$DATABASE'" |\
grep -q 1 ||\
psql -h {{ $.Values.postgres.host }} -U $PGUSER postgres \
-c "CREATE USER $USERNAME WITH ENCRYPTED PASSWORD '$PASSWORD';" \
-c "CREATE DATABASE $DATABASE WITH OWNER = $USERNAME;"
env:
- name: PGUSER
valueFrom:
secretKeyRef:
key: username
name: {{ include "init-dbs.fullname" $ }}-postgres
- name: PGPASSWORD
valueFrom:
secretKeyRef:
key: password
name: {{ include "init-dbs.fullname" $ }}-postgres
- name: USERNAME
valueFrom:
secretKeyRef:
key: {{ .database }}-username
name: {{ include "init-dbs.fullname" $ }}-postgres
- name: PASSWORD
valueFrom:
secretKeyRef:
key: {{ .database }}-password
name: {{ include "init-dbs.fullname" $ }}-postgres
- name: DATABASE
valueFrom:
secretKeyRef:
key: {{ .database }}-database
name: {{ include "init-dbs.fullname" $ }}-postgres
{{- end }}
{{- range .Values.mysql.databases }}
---
apiVersion: batch/v1
kind: Job
metadata:
name: {{ include "init-dbs.fullname" $ }}-mysql-{{ .database }}
spec:
template:
spec:
imagePullSecrets:
{{- toYaml $.Values.imagePullSecrets | nindent 8 }}
restartPolicy: OnFailure
containers:
- name: {{ include "init-dbs.fullname" $ }}-mysql-{{ .database }}
image: {{ $.Values.mysql.image.ref }}
imagePullPolicy: {{ $.Values.mysql.image.pullPolicy }}
command:
- /bin/sh
- -c
args:
- |
sleep 10s && \
mysql -h {{ $.Values.mysql.host }} -u $MYUSER mysql --password=$MYPASSWORD \
-e "CREATE DATABASE IF NOT EXISTS $DATABASE;" \
-e "CREATE USER IF NOT EXISTS '$USERNAME'@'%' IDENTIFIED BY '$PASSWORD';" \
-e "GRANT ALL PRIVILEGES ON $DATABASE TO '$USERNAME'@'%';"
env:
- name: MYUSER
valueFrom:
secretKeyRef:
key: username
name: {{ include "init-dbs.fullname" $ }}-mysql
- name: MYPASSWORD
valueFrom:
secretKeyRef:
key: password
name: {{ include "init-dbs.fullname" $ }}-mysql
- name: USERNAME
valueFrom:
secretKeyRef:
key: {{ .database }}-username
name: {{ include "init-dbs.fullname" $ }}-mysql
- name: PASSWORD
valueFrom:
secretKeyRef:
key: {{ .database }}-password
name: {{ include "init-dbs.fullname" $ }}-mysql
- name: DATABASE
valueFrom:
secretKeyRef:
key: {{ .database }}-database
name: {{ include "init-dbs.fullname" $ }}-mysql
{{- end }}