Files
sova-deploy/data/test/templates/db-init-jobs.yaml
T
2026-05-27 19:36:33 +03:00

133 lines
4.1 KiB
YAML

apiVersion: v1
kind: ConfigMap
metadata:
name: postgres-schema-sql
namespace: {{ .Values.namespace }}
data:
{{- range $path, $_ := .Files.Glob "sql/postgres/schema/*.sql" }}
{{ base $path }}: |
{{ $.Files.Get $path | indent 4 }}
{{- end }}
---
apiVersion: v1
kind: ConfigMap
metadata:
name: postgres-seed-sql
namespace: {{ .Values.namespace }}
data:
{{- range $path, $_ := .Files.Glob "sql/postgres/seed/*.sql" }}
{{ base $path }}: |
{{ $.Files.Get $path | indent 4 }}
{{- end }}
---
apiVersion: v1
kind: ConfigMap
metadata:
name: mysql-schema-sql
namespace: {{ .Values.namespace }}
data:
{{- range $path, $_ := .Files.Glob "sql/mysql-bitrix/schema/*.sql" }}
{{ base $path }}: |
{{ $.Files.Get $path | indent 4 }}
{{- end }}
---
apiVersion: v1
kind: ConfigMap
metadata:
name: mysql-seed-sql
namespace: {{ .Values.namespace }}
data:
{{- range $path, $_ := .Files.Glob "sql/mysql-bitrix/seed/*.sql" }}
{{ base $path }}: |
{{ $.Files.Get $path | indent 4 }}
{{- end }}
---
apiVersion: batch/v1
kind: Job
metadata:
name: db-init
namespace: {{ .Values.namespace }}
spec:
backoffLimit: 2
template:
spec:
restartPolicy: OnFailure
initContainers:
- name: wait-pg
image: postgres:16-alpine
command:
- sh
- -c
- |
until pg_isready -h {{ .Values.postgres.host }} -p 5432 -U {{ .Values.postgres.user }}; do sleep 3; done
- name: wait-mysql
image: mysql:8.0
env:
- name: MYSQL_PWD
value: {{ .Values.mysql.password | quote }}
command:
- sh
- -c
- |
until mysqladmin ping -h {{ .Values.mysql.host }} -u{{ .Values.mysql.user }} --silent; do sleep 3; done
containers:
- name: init
image: postgres:16-alpine
env:
- name: PGPASSWORD
value: {{ .Values.postgres.password | quote }}
- name: MYSQL_PWD
value: {{ .Values.mysql.password | quote }}
command:
- sh
- -c
- |
set -e
echo "=== Phase 1: schema ==="
for f in $(ls /schema/postgres/*.sql 2>/dev/null | sort); do
[ -s "$f" ] || continue
echo "PG schema: $(basename $f)"
psql -h {{ .Values.postgres.host }} -U {{ .Values.postgres.user }} -d postgres -v ON_ERROR_STOP=1 -f "$f"
done
apk add --no-cache mysql-client >/dev/null
for f in $(ls /schema/mysql/*.sql 2>/dev/null | sort); do
[ -s "$f" ] || continue
echo "MySQL schema: $(basename $f)"
mysql -h {{ .Values.mysql.host }} -u{{ .Values.mysql.user }} {{ .Values.mysql.database }} < "$f"
done
echo "=== Phase 2: seed ==="
for f in $(ls /seed/postgres/*.sql 2>/dev/null | sort); do
[ -s "$f" ] || continue
echo "PG seed: $(basename $f)"
psql -h {{ .Values.postgres.host }} -U {{ .Values.postgres.user }} -d postgres -v ON_ERROR_STOP=1 -f "$f"
done
for f in $(ls /seed/mysql/*.sql 2>/dev/null | sort); do
[ -s "$f" ] || continue
echo "MySQL seed: $(basename $f)"
mysql -h {{ .Values.mysql.host }} -u{{ .Values.mysql.user }} {{ .Values.mysql.database }} < "$f"
done
echo "DB init complete"
volumeMounts:
- name: pg-schema
mountPath: /schema/postgres
- name: mysql-schema
mountPath: /schema/mysql
- name: pg-seed
mountPath: /seed/postgres
- name: mysql-seed
mountPath: /seed/mysql
volumes:
- name: pg-schema
configMap:
name: postgres-schema-sql
- name: mysql-schema
configMap:
name: mysql-schema-sql
- name: pg-seed
configMap:
name: postgres-seed-sql
- name: mysql-seed
configMap:
name: mysql-seed-sql