OpenShift PostgreSQL
Internal
Installation
PostgreSQL Image Notes
The Posgresql container image contains a README.md in usr/share/container-scripts/postgresql and a setup script in usr/share/container-scripts/postgresql/common.sh.
The entrypoint script will first run initdb which will create the user (POSTGRESQL_USER) and the database (POSTGRESQL_DATABASE).
Create OpenShift Infrastructure
You can use the following generic PostgreSQL template: https://github.com/NovaOrdis/playground/blob/master/openshift/auxiliary-tools/generic-postgresql.yaml
Copy it locally. Normally, you should not need to modify it manually, unless you want to use newer versions.
Make sure that a persistent volume 1Gi or larger is available for binding.
oc process -f ./generic-postgresql.yaml \ -p APPLICATION_NAME=... \ -p POSTGRESQL_USER=... \ -p POSTGRESQL_PASSWORD=... \ -p POSTGRESQL_DATABASE=... \ | oc create -f -
Create the Database
Log into the pod:
oc rsh <postgres-pod-name> createdb <dbname>
The user is already created.
TODO: Investigate why the a custom user ('gogs') is created automatically, but the database is not.
Activate the Readiness Probe
Modify the specification of the "postgresql" container with
oc edit dc/<dc-name>
Add the following readiness probe, under the liveness probe:
readinessProbe: exec: command: - /bin/sh - -i - -c - psql -h 127.0.0.1 -U $POSTGRESQL_USER -q -d $POSTGRESQL_DATABASE -c 'SELECT 1' failureThreshold: 3 initialDelaySeconds: 5 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 1