2026-01-08 02:45:00 -03:00
# services/comms/mas-db-ensure-job.yaml
apiVersion : batch/v1
kind : Job
metadata :
2026-01-08 03:15:25 -03:00
name : mas-db-ensure-11
2026-01-08 02:45:00 -03:00
namespace : comms
spec :
2026-01-08 03:09:27 -03:00
backoffLimit : 1
2026-01-08 03:00:19 -03:00
ttlSecondsAfterFinished : 600
2026-01-08 02:45:00 -03:00
template :
spec :
serviceAccountName : mas-db-ensure
2026-01-08 03:09:27 -03:00
restartPolicy : Never
2026-01-08 03:04:33 -03:00
containers :
- name : ensure
2026-01-08 02:45:00 -03:00
image : bitnami/kubectl:latest
command : [ "/bin/sh" , "-c" ]
args :
- |
2026-01-08 03:00:19 -03:00
set -eu
2026-01-08 03:09:27 -03:00
trap 'echo "mas-db-ensure failed"; sleep 300' ERR
2026-01-08 02:45:00 -03:00
umask 077
2026-01-08 03:12:16 -03:00
EXISTING_B64="$(kubectl -n comms get secret mas-db -o jsonpath='{.data.password}' 2>/dev/null || true)"
if [ -n "${EXISTING_B64}" ]; then
MAS_PASS="$(printf '%s' "${EXISTING_B64}" | base64 -d)"
2026-01-08 02:45:00 -03:00
else
2026-01-08 03:04:33 -03:00
MAS_PASS="$(head -c 32 /dev/urandom | base64 | tr -d '\n')"
2026-01-08 03:12:16 -03:00
MAS_B64="$(printf '%s' "${MAS_PASS}" | base64 | tr -d '\n')"
payload="$(printf '{"data":{"password":"%s"}}' "${MAS_B64}")"
kubectl -n comms patch secret mas-db --type=merge -p "${payload}" >/dev/null
2026-01-08 02:45:00 -03:00
fi
2026-01-08 03:04:33 -03:00
2026-01-08 03:06:34 -03:00
POD_NAME="$(kubectl -n postgres get pods -l app=postgres -o jsonpath='{.items[0].metadata.name}')"
if [ -z "${POD_NAME}" ]; then
echo "postgres pod not found" >&2
2026-01-08 03:04:33 -03:00
exit 1
fi
2026-01-08 03:15:25 -03:00
kubectl -n postgres exec -i "${POD_NAME}" -- psql -U postgres -d postgres -v ON_ERROR_STOP=1 -v mas_pass="${MAS_PASS}" \
-c "DO \\$\\$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_catalog.pg_roles WHERE rolname = 'mas') THEN EXECUTE format('CREATE ROLE mas LOGIN PASSWORD %L', :'mas_pass'); ELSE EXECUTE format('ALTER ROLE mas WITH PASSWORD %L', :'mas_pass'); END IF; END \\$\\$;" \
-c "DO \\$\\$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_database WHERE datname = 'mas') THEN CREATE DATABASE mas OWNER mas; END IF; END \\$\\$;"