OpenShift PostgreSQL: Difference between revisions

From NovaOrdis Knowledge Base
Jump to navigation Jump to search
Line 10: Line 10:
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 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 [[Docker_Concepts#Endpoint_Script|endpoint script]] will first run [[Postgresql_DDL_Operations#initdb|initdb]] which will create the user (POSTGRESQL_USER) and the database (POSTGRESQL_DATABASE).
The [[Docker_Concepts#Entrypoint_Script|entrypoint script]] will first run [[Postgresql_DDL_Operations#initdb|initdb]] which will create the user (POSTGRESQL_USER) and the database (POSTGRESQL_DATABASE).


==Create OpenShift Infrastructure==
==Create OpenShift Infrastructure==

Revision as of 20:23, 4 December 2017

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