[COMMON] Fix postgres data persistence 82/118882/3
authorBruno Sakoto <bruno.sakoto@bell.ca>
Fri, 5 Mar 2021 23:11:00 +0000 (18:11 -0500)
committerBruno Sakoto <bruno.sakoto@bell.ca>
Mon, 8 Mar 2021 15:05:09 +0000 (15:05 +0000)
This changes fixes postgres data lost that occurs when postgres pods
are restarting.

When crunchy data postgres image starts, it runs /opt/cpm/bin/setenv.sh
script to set PGDATA folder. This script contains:

--
export PGDATA=/pgdata/$HOSTNAME

if [[ -v PGDATA_PATH_OVERRIDE ]]; then
  export PGDATA=/pgdata/$PGDATA_PATH_OVERRIDE
fi
--

Since postgres is now a deployment (commit 0b243b600), its pod name is
different on each startup, hence HOSTNAME and PGDATA are also
different each time.

This change is leveraging crunchy data PGDATA_PATH_OVERRIDE environment
variable to set PGDATA to a fixed path. By default, this path is set to
/pgdata/data.

Issue-ID: CPS-271
Change-Id: Icc0f05d64230a98bc21d8f2a74c12c6661e05482
Signed-off-by: Bruno Sakoto <bruno.sakoto@bell.ca>
kubernetes/common/postgres/templates/_deployment.tpl
kubernetes/common/postgres/values.yaml

index 6142baa..38a7ce1 100644 (file)
@@ -1,6 +1,7 @@
 {{/*
 # Copyright © 2018 Amdocs, AT&T, Bell Canada
 # Copyright © 2020 Samsung Electronics
+# Modifications Copyright (C) 2021 Bell Canada.
 # #
 # # Licensed under the Apache License, Version 2.0 (the "License");
 # # you may not use this file except in compliance with the License.
@@ -134,6 +135,8 @@ spec:
           value: "{{ $dot.Values.config.pgDatabase }}"
         - name: PG_ROOT_PASSWORD
           {{- include "common.secret.envFromSecretFast" (dict "global" $dot "uid" (include "common.postgres.secret.rootPassUID" .) "key" "password") | indent 10 }}
+        - name: PGDATA_PATH_OVERRIDE
+          value: "{{ $dot.Values.config.pgDataPath }}"
         volumeMounts:
         - name: config
           mountPath: /pgconf/pool_hba.conf
index 07bb5c4..93f6d66 100644 (file)
@@ -1,4 +1,5 @@
 # Copyright © 2018 Amdocs, AT&T, Bell Canada
+# Modifications Copyright (C) 2021 Bell Canada.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -50,6 +51,7 @@ pullPolicy: Always
 config:
   pgUserName: testuser
   pgDatabase: userdb
+  pgDataPath: data
   # pgPrimaryPassword: password
   # pgUserPassword: password
   # pgRootPassword: password