OpenShift PostgreSQL: Difference between revisions
m (Ovidiu moved page OpenShift Postgres Operations to OpenShift Postgres without leaving a redirect) |
No edit summary |
||
(27 intermediate revisions by the same user not shown) | |||
Line 2: | Line 2: | ||
* [[OpenShift Auxiliary Tools Operations#Operations|OpenShift Auxiliary Tools Operations]] | * [[OpenShift Auxiliary Tools Operations#Operations|OpenShift Auxiliary Tools Operations]] | ||
* [[PostgreSQL]] | |||
=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 [[Docker_Concepts#Entrypoint|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== | |||
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. | |||
<font color=red>'''TODO''': Investigate why the a custom user ('gogs') is created automatically, but the database is not.</font> | |||
==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 |
Latest revision as of 06:53, 19 October 2018
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