Commit Graph

15 Commits

Author SHA1 Message Date
Aaser, Douglas (da519m)
4a730bb34b Postgres PVC Soak Fix
This patch fixes an issue with Postgres HA where
the PVC which stores the database was filling up with
WAL records and not deleting them due to some
misconfigurations with Postgres. Once the PVC
would fill up, replication would fail across the node
and the database would not be able to start, crashing
the system.

Specifically, archive_mode was turned on, but was not
supplied with a function through which to archive the
logs. When WAL archiving is turned on, old WAL files
cannot be removed until the system has archived them first.
However, since we never told the system how to archive the
files, it would repeatedly fail so the WAL files would
never be cleaned up.

Also in this patch are some small house keeping items:
- Lowered the wal_keep_segments drastically so Postgres
  can't keep as many WAL segments around to minimize the
  chance of PVC fill issues
- Turned the wal_level from 'logical' to 'hot_standby'
  to keep it consistent with the fact that Patroni uses
  streaming replication and not logical replication
- Removed the autovaccuum configurations as they are not
  needed

Change-Id: Id48c3ee9976823b2bdb4395a029fe75476bdaa62
2019-07-02 17:32:46 +00:00
Hussey, Scott (sh8121)
3844f4af77 (postgresql) Support update strategy snippet
- Add support for the update strategy helm-toolkit snippet

Change-Id: I7abedec017cb043a38f4e176028d76fdc505de12
2019-06-20 13:15:53 +00:00
Doug Aaser
9efb353b83 Patroni inclusion work for HA Postgres
This patchset aims to add HA Clustering support for Postgres. HA Clustering
provides automatic failover in the event of the database going down in addition
to keeping replicas of the database for rebuilding in the event of a node
going down. To achieve this clustering we use
[Patroni](https://github.com/zalando/patroni) which offers HA clustering
support for Postgres.

Patroni is a daemon that runs in the background and keeps track of which
node in your cluster is currently the leader node and routes all traffic
on the Postgresql endpoint to that node. If the leader node goes down,
Patroni holds an election to chose a new leader and updates the endpoint
to route traffic accordingly. All communication between nodes is done by
a Patroni created endpoint, seperate from the externally facing Postgres
endpoint.

Note that, although the postgresql helm chart can be upgraded from
non-patroni to patroni clustering, the previous `postgresql`
endpoints object (which is not directly managed by helm) must be
deleted via an out-of-band mechanism so that it may be replaced by the
patroni-managed endpoints.  If Postgres itself is leveraged for the
deployment process, this must be done with careful timing.  Note that
the old endpoints had a port named "db", and the new endpoints has
a port named "postgresql".

- Picking up patchset: https://review.openstack.org/#/c/591663

Co-authored-by: Tony Sorrentino <as1413@att.com>
Co-authored-by: Randeep Jalli <rj2083@att.com>
Co-authored-by: Pete Birley <pete@port.direct>
Co-authored-by: Matt McEuen <mm9745@att.com>

Change-Id: I721b745017dc1ea7ae05dfd9f8d5dd08d0965985
2019-05-28 19:13:13 +00:00
Zuul
b69584bd65 Merge "Expose Anti-Affinity Weight Setting" 2019-05-16 17:17:03 +00:00
RAHUL KHIYANI
2ddb43f525 Postgresql: Fix security context
This PS fixes the use of the security context macros for the
postgresql chart

Change-Id: I7d5080686e98837b95297b9a33e7241c79193830
2019-05-14 22:12:38 +00:00
Roy Tang (rt7380)
85bd731562 Expose Anti-Affinity Weight Setting
This ps exposes the anti-affinity weight value, including
default, that will be consumed by the updated htk function.

Change-Id: Id8eb303674764ef8b0664f62040723aaf77e0a54
2019-05-14 17:04:52 -05:00
Rahul Khiyani
7aaae02f1d Postgresql-exporter: Add security context for pod/container
This adds a security context to the postgresql exporter, which
changes the pod's user from root to the nobody user instead

This also adds the container security context to set
allowPrivilegeEscalation to false and readOnlyRootFilesystem to true

Change-Id: Ibe49f77ed2d0a588b5abe175318edd1c82a57cca
2019-04-21 03:17:57 +00:00
Koffi Nogbe
ed93f3dc69 Add postgresql backup capability to postgresql chart
* backup script for postgresql
  * restore script for postgresql
  * cronjob to control backup automation for postgresql
  * add parameters to values.yaml

Change-Id: I5eaa82e824c9f361aa667c431cd93058391f2e60
2019-03-24 14:48:42 -04:00
Scott Hussey
73a360f19a (postgresql) Use root init container for chown
- Postgres initdb fails running as non-root as it cannot
  change the ownership or permission on the PVC mounted
  to the container. Update the chart to use a uid 0 init
  container for setting ownership before the postgres
  container starts.

Change-Id: I648fe7ca3dbc1f6ca6f4513360de2278be7c1ce4
2019-03-13 22:41:36 +00:00
Scott Hussey
43a93e2cbd (postgresql) Add Helm test
- Add a Helm test for testing DDL and DML for Postgres

Change-Id: Ib34ea48abf836ae52b909b30fdb8275d80a3c559
2019-03-06 06:36:51 +00:00
Scott Hussey
4a505e213c (postgresql) set db admin password at startup
- Make the default to run the postgres database as the uid 999 which
  the default image maps to the 'postgres' user

- If the database is already initialized, before starting postgres
  set the 'postgres' database user password to match the declared
  intended password

Change-Id: I7b0ea7a86246b098f38ef4c03dd157731f61e066
2019-03-05 18:38:41 +00:00
Steve Wilkerson
8cc89fb63f Postgresql: Remove unused exporter user configuration
This removes the auth credentials from the postgresql exporter's
endpoint configuration, as the secret and job for creating that
user come from the auth credentials defined in the postgresql
endpoint instead

Change-Id: Id17578b8e22a1808d7c3323bda9cd005c2584c97
2019-02-02 11:08:02 -06:00
Pete Birley
0bf3674539 Revert "Add Egress Helm-toolkit function & enforce the nework policy at OSH-INFRA"
This reverts commit 8d33a2911c.

Change-Id: Ic861b9bf9b337449b47a3558da8355e7a5bcacee
2018-12-16 04:21:46 +00:00
Mike Pham
8d33a2911c Add Egress Helm-toolkit function & enforce the nework policy at OSH-INFRA
This PS implements the helm toolkit function to generate the
Egress in kubernetes network policy manifest based on overrideable values.
It also enbale the K8s network policy at Osh-infra gate.

Change-Id: Icbe2a18c98dba795d15398dcdcac64228f6a7b4c
2018-12-14 16:32:40 -05:00
Steve Wilkerson
8bbd80e197 Postgresql: Move chart to openstack-helm-infra
This moves the postgresql chart to openstack-helm-infra as part of
the effort to move charts to the appropriate repositories

Change-Id: I25c026e5d4c4abe4dd0805047051281911632739
Story: 2002204
Task: 21729
2018-09-09 10:20:08 -06:00