113 lines
3.9 KiB
YAML
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 }}
|