From 6cf1dce07d78610db2ee21cddeb09b95c75185c0 Mon Sep 17 00:00:00 2001
From: Sheogorath <sheogorath@shivering-isles.com>
Date: Thu, 9 Feb 2023 01:39:36 +0100
Subject: [PATCH] feat(postgres): Add cluster-wide automatic backup for all
 databases

This patch should provide an automated backup for all postgresql
clusters in the cluster. This implementation is less than ideal, due to
technical sharing of backups among all namespaces, but for now, it's
better than no backup. There will be further work on separating these
backups, but it is what it is for now.
---
 clusters/k8s01/postgres/kustomization.yaml    |   4 +
 clusters/k8s01/postgres/release-override.yaml | 141 ++++++++++++++++++
 infrastructure/postgres/release.yaml          |  19 ++-
 3 files changed, 161 insertions(+), 3 deletions(-)
 create mode 100644 clusters/k8s01/postgres/kustomization.yaml
 create mode 100644 clusters/k8s01/postgres/release-override.yaml

diff --git a/clusters/k8s01/postgres/kustomization.yaml b/clusters/k8s01/postgres/kustomization.yaml
new file mode 100644
index 000000000..5b4b6bcda
--- /dev/null
+++ b/clusters/k8s01/postgres/kustomization.yaml
@@ -0,0 +1,4 @@
+apiVersion: kustomize.config.k8s.io/v1beta1
+kind: Kustomization
+resources:
+- release-override.yaml
diff --git a/clusters/k8s01/postgres/release-override.yaml b/clusters/k8s01/postgres/release-override.yaml
new file mode 100644
index 000000000..aebec818f
--- /dev/null
+++ b/clusters/k8s01/postgres/release-override.yaml
@@ -0,0 +1,141 @@
+apiVersion: v1
+kind: Secret
+metadata:
+    name: postgres-pod-secrets
+    namespace: postgres-system
+stringData:
+    WAL_S3_BUCKET: ENC[AES256_GCM,data:o1NAN2pZZJiLvWDIFB88nqgDCA==,iv:fy7rIGirmSsGBPBq7OQSvTP6xXk8yS581YXlcTRLSJc=,tag:h2s3KINtNYX5EjU4eEmZDg==,type:str]
+    WAL_BUCKET_SCOPE_PREFIX: ""
+    WAL_BUCKET_SCOPE_SUFFIX: ""
+    USE_WALG_BACKUP: ENC[AES256_GCM,data:PyNMfA==,iv:BnrwkRcRpkj531kvY9N7oICW/TR5P6LvMhLnvjFppe4=,tag:CWKkLMMhoadY1O0uT0J0bA==,type:str]
+    USE_WALG_RESTORE: ENC[AES256_GCM,data:VeuAVw==,iv:j/LU6x8KJ6FjO+t+Kt+fT7rLz/n2kZpmfMT05WCeDfI=,tag:3EdagLildyD0084PAYM5Fw==,type:str]
+    BACKUP_SCHEDULE: ENC[AES256_GCM,data:UzMpPBMdALoW9go=,iv:qJA3R9Da3KIhKk1PEH93+44jQOuKVzg1IpujZrTJLFM=,tag:U6hw1YDRM5OvRZEA2tqECQ==,type:str]
+    AWS_ACCESS_KEY_ID: ENC[AES256_GCM,data:AOXUF+nyBwOrTgRzuM3oKuGloA==,iv:Lwd8A7jQM/TdTNYgku5mQoe6zmU2Tjvo5TnkR302jnU=,tag:SB3c40iyzq2nhnqEV+0nvg==,type:str]
+    AWS_SECRET_ACCESS_KEY: ENC[AES256_GCM,data:j4XDQPiUyiEEAjjRgCQavAdzVlLsXi3YcIJ/vaPtZD75zqzu0OtD1g==,iv:ktOmQOSSb9yYcQRzrPl7D52N2j+fGUOOnAHHi1H/Tf8=,tag:NHSuLFdnWSxbOcdT+6D54g==,type:str]
+    AWS_S3_FORCE_PATH_STYLE: ENC[AES256_GCM,data:xa9kOA==,iv:Nk9rihseIhCPyIK5kj/bjTcVqBLvv9sLpZim4LjFPA0=,tag:aEFgtjnJ1VhnYod5pKO6Tw==,type:str]
+    AWS_ENDPOINT: ENC[AES256_GCM,data:Vbob6Ya/XeG+dt/hPSJUxMhwCgf1q+F1NKC4KASIDEI=,iv:iXpcbMX6A2kFq5ENSsZfE26nweqFcevgokctTaUh8lo=,tag:QEnoqWU8Z8c/e0ACGQ1ygw==,type:str]
+    AWS_REGION: ENC[AES256_GCM,data:vPgLt82m+iXvvoQ=,iv:7ubMxH1Cs7gAoMI5y8VuE33Xk1mHBq978dEMWp7DGpw=,tag:Y2ReeS9gq7WRzm2Z+jwjwA==,type:str]
+    WALG_DISABLE_S3_SSE: ENC[AES256_GCM,data:8IJzgQ==,iv:Eg3rnD67NkIMBVECg0vIRwCEfaZb/tnTkpQyEtnXyug=,tag:cxb0EXHJ4seXxgB0qTOjLQ==,type:str]
+    BACKUP_NUM_TO_RETAIN: ENC[AES256_GCM,data:hw==,iv:7b9Jr+w0Z4PFzD3RP0I6m71KsMS4t+HWxq1gMhYdobs=,tag:UvZ469j8MMqFom13Ghfmfw==,type:str]
+    CLONE_USE_WALG_RESTORE: ENC[AES256_GCM,data:mB3A5A==,iv:WyLeYBR1VlrFsSdyMSa2vmtQa7FyH+1HpGy2LHaCPSc=,tag:e7gn82aQtsmVmJLbcbJiEA==,type:str]
+    CLONE_AWS_ACCESS_KEY_ID: ENC[AES256_GCM,data:dexZESvwalmC8tHvQe0qyJoZBg==,iv:NXv5yGtK2/kzT+FYJ2wGsAJb8AyAJIUJmD0hyfmPYF4=,tag:YL3KIybviHdQ9nmN2g9wbw==,type:str]
+    CLONE_AWS_SECRET_ACCESS_KEY: ENC[AES256_GCM,data:lrkKwuQqo/zxLl/ju2vsj0FDadcK2CJqErAtOKpGIqetzXLKVYVM2A==,iv:qsaGFQFycXrPuqahyOUseuUQgDro22PpCgVH+tCjuYQ=,tag:CRwozvXl798tOz0Ds8kqeQ==,type:str]
+    CLONE_AWS_ENDPOINT: ENC[AES256_GCM,data:rGuVCT/I+hRfbqZKgfZSKJAh0eX04qfNYxB27xN2EIA=,iv:YzNGZwVvsMPrfgJd5UHLzsaPj6l4ds7TOXDIQEreZe4=,tag:FWnT992L2vOvgWjYJdC4kg==,type:str]
+    CLONE_AWS_REGION: ENC[AES256_GCM,data:Zr7YU1sAbuP4TjY=,iv:x7rGSePSxYLMCUZF2xW/h6N4GVXQhsGKY2HjMGgTUwQ=,tag:7Sv8FpKDbFhVIkOJ89Z84w==,type:str]
+    CLONE_METHOD: ENC[AES256_GCM,data:kRs92XaJ4K+wtEt19GTM,iv:y1FHLks5v4o5+aMs+c9v4sVnzCcSNIw/IKJxL8nvzPw=,tag:4Z1zl+aLIgKJQ9WjKsvWDw==,type:str]
+    CLONE_WAL_BUCKET_SCOPE_PREFIX: ""
+    CLONE_WAL_S3_BUCKET: ENC[AES256_GCM,data:DBU+K5HJon9LdP/ACIO5zXH95Q==,iv:+O9ViNU4Wggb+g0WaLzbNiEDQFhebcvXTwUW61qHtT8=,tag:CvkGGc8py6wIaUrJGFUyDA==,type:str]
+    CLONE_AWS_S3_FORCE_PATH_STYLE: ENC[AES256_GCM,data:JFJT1g==,iv:WL0/GJhVI73EP95tYXqSXxszaHK11eMKQicPzLcImwQ=,tag:0YWoYW3aNv/hG1jQ0qiDmw==,type:str]
+sops:
+    kms: []
+    gcp_kms: []
+    azure_kv: []
+    hc_vault: []
+    age: []
+    lastmodified: "2023-02-09T00:27:42Z"
+    mac: ENC[AES256_GCM,data:pxzkVfeszdWLHtQoo9noq2FJkgt3hBc/UvAnAoVr1NPFW0nNjEZUNmmiAT+7o6xcivdDeiz9sm9XicgqIrUWOAB7VeKdy1kLQym5B98qapAv4sg3Cm9LVMj4vlTeuk/0PiDqDiABLsmivnoUgrq4NaXub4KgUuGn16K8FWAnbd0=,iv:woypK9DsJcOh1BYtd+ic5Saz7TfXQkHBfn5jS8GqF0M=,tag:3QjT8UUE3rVAtZN+a6A7eQ==,type:str]
+    pgp:
+        - created_at: "2023-02-09T00:27:41Z"
+          enc: |-
+            -----BEGIN PGP MESSAGE-----
+
+            wcFMA7kpg2bgzVHcAQ/+OSnICTyuWPM5cuutkJjMUSXjGhsSjc/ty2BEOTb5DjfZ
+            EFKrIQCKGFvxOUEKTwxSUqhN0oCrMMXWnqwMjOONoAjLloezs2E5wy8E0j/v+j6g
+            kAWIfYsoHKmqoeldLspG7bnnr42bY9n+BvLNSBsoGRo9gNOiQqFT2mv8S8Lg49Is
+            omb1/TLSRUq90U5Zwoc9tHbZnP4+85nvzwi092zfDLD5VK4SgbK8qIaiQUeuELto
+            2z/OKSAB77AAxOzh7U5YjtjyJBiBxQ7w3tnjXR08D3NUHu3THu+jevjTPRsxgqWl
+            cTlkdnl9iw8eQDS8yycjfcuQoY5oxK8KqQRMYurSEra2h0f7ccRPaCndbEKkUEWL
+            4I0EsVEeAgQOm9iTNrEpIyVcoio2HrUFqqtipeKnei5hVdGvKcjc/q3Jz2DAgxrB
+            48RzGXGXCPc9xpbatw7o9qFsu64n/6Un+/A3lvxeZp3d+wUY/WiYZyBVZ6bC7J/P
+            Wjm7IaVhGlhzYbep27LGJxIFmbMKuWx5cPMIi+4lteoWgEeVOQy6hHQIEtWWy9VY
+            R44blwSyANtTml8PRBGByjZBfrFKf6bbt6Xri/Gu0qJM/O1G8ZPtcDaIzcvbWqGg
+            Tz5D6dq/1AIiCx9Yatwd7ty2ZJdUhaFYSIn2NAFNqGXxGzvCywujdPvejbl8cQjS
+            UQEZL4BqHYUw20c0GnLtEiHVXxO2f1oPJVcooz76kMtXnfEpVCrzrhwYLdx9vTnd
+            6rb12yU6x5q4kjMfm+m4wdjxdRHznM48rUC1E0vbO7Hc/Q==
+            =IfCm
+            -----END PGP MESSAGE-----
+          fp: 286791FB6648539775DB31B8FCB98C2A3EC6F601
+        - created_at: "2023-02-09T00:27:41Z"
+          enc: |
+            -----BEGIN PGP MESSAGE-----
+
+            hQIMA4oYbIHZIrAPARAAlX+ciacOvXP5l2XVeXjKO1hWKnr7YLETntVdqRFf28SE
+            0P7uHujIeWbubJYimjJ5MOGA6CCE6q5KUmuCs1zFJv5Ot7pnx3z5uo3a0tq56QFU
+            Mn90r4QywVzYYRdiLqbSFhXWB9NRKdvER3NKaRmTNGubecd+rioVrkUF80UQ04o8
+            oXqv2zbT2lx/VcwNsQBJn4vI56kKR1OdKrTH6rZ4y87/MzR24JBn+y6ou6ZmslsT
+            c7jliyfCJcJvlIuwAgaY0gk7OF69l5+uDuE9mh3CkR9f7dEeA0GfGF/ULV7Y5PcO
+            90NrgAYDiNYPHQRYXu/v5VYEjz7vcSYL1Y6CvqEJlJNKmzxevKk6T3GCqmOI1lKU
+            Eql+R2LW9lif0yKYedhD2xyjD55nWeOAnXk9OVRruL+ocdDk8IOsL9PbwDIi/RKD
+            f7B1C9+34qPlMjTvxuOg8o9PnNHmFgzAXX4JQqnHcvH+mxDK+DmeQgFy5EzoSD62
+            fR8SaeZL+08r3i4WqupuwrybD4woTVw+8fCzXgXOECstFyQFmXUiIHkeXemIrEcF
+            rd9jfyfvuKvcZp10DghpUzwXV5SP6q5h2K39iC+dZjPmhfZX9w2TfyYeej3mqICj
+            TD5ZOkq0XCOqTLHWTW+ONTkmpSMW2/bdr+k4vjjLHqcEpRBuNQX1xGFRR+Zl//XU
+            aAEJAhDOPr+VRM+7QxAcfbOyG6qF6uX61emfvsmCeI/Frp8ZIN29/EuX3TZQ6ukj
+            HHO9t5XAoIquJQK6I35ffozOp1acmyYMbXZK0xmzjLPJagutcRtDP37k+5DWebhP
+            DfwF09j4hAyb
+            =mlgh
+            -----END PGP MESSAGE-----
+          fp: B137EE1549DFAF960DD1E2B15147025FB9F09E07
+    encrypted_regex: ^(data|stringData|email|dnsZones?|dnsNames?|.*(H|h)osts?|tang|externalURL|.*-secret|.*-url|.*Secrets?|.*-domain|password|subjects|node|apiURL|.*(S|s)erverNames?|.*SecretKey|externalName)$
+    version: 3.7.3
+---
+apiVersion: v1
+kind: Secret
+metadata:
+    name: postgres-override-values
+    namespace: postgres-system
+type: Opaque
+stringData:
+    values-overrides.yaml: ENC[AES256_GCM,data:5ykJ1trxTuzKaVFEm/VbRibMdw/GhokGcFwgTlaqOR1zcg4hOnKQMA6cYBBgPGRhw7ub3aS2MgHBS7w+LyS6cw==,iv:2DXF4wm0A99Vry0xkeIfhE904+Zo6h+RgHkHP3QxS3s=,tag:ei5fl8tTr19WEstaalK3CQ==,type:str]
+sops:
+    kms: []
+    gcp_kms: []
+    azure_kv: []
+    hc_vault: []
+    age: []
+    lastmodified: "2023-02-09T00:27:42Z"
+    mac: ENC[AES256_GCM,data:pxzkVfeszdWLHtQoo9noq2FJkgt3hBc/UvAnAoVr1NPFW0nNjEZUNmmiAT+7o6xcivdDeiz9sm9XicgqIrUWOAB7VeKdy1kLQym5B98qapAv4sg3Cm9LVMj4vlTeuk/0PiDqDiABLsmivnoUgrq4NaXub4KgUuGn16K8FWAnbd0=,iv:woypK9DsJcOh1BYtd+ic5Saz7TfXQkHBfn5jS8GqF0M=,tag:3QjT8UUE3rVAtZN+a6A7eQ==,type:str]
+    pgp:
+        - created_at: "2023-02-09T00:27:41Z"
+          enc: |-
+            -----BEGIN PGP MESSAGE-----
+
+            wcFMA7kpg2bgzVHcAQ/+OSnICTyuWPM5cuutkJjMUSXjGhsSjc/ty2BEOTb5DjfZ
+            EFKrIQCKGFvxOUEKTwxSUqhN0oCrMMXWnqwMjOONoAjLloezs2E5wy8E0j/v+j6g
+            kAWIfYsoHKmqoeldLspG7bnnr42bY9n+BvLNSBsoGRo9gNOiQqFT2mv8S8Lg49Is
+            omb1/TLSRUq90U5Zwoc9tHbZnP4+85nvzwi092zfDLD5VK4SgbK8qIaiQUeuELto
+            2z/OKSAB77AAxOzh7U5YjtjyJBiBxQ7w3tnjXR08D3NUHu3THu+jevjTPRsxgqWl
+            cTlkdnl9iw8eQDS8yycjfcuQoY5oxK8KqQRMYurSEra2h0f7ccRPaCndbEKkUEWL
+            4I0EsVEeAgQOm9iTNrEpIyVcoio2HrUFqqtipeKnei5hVdGvKcjc/q3Jz2DAgxrB
+            48RzGXGXCPc9xpbatw7o9qFsu64n/6Un+/A3lvxeZp3d+wUY/WiYZyBVZ6bC7J/P
+            Wjm7IaVhGlhzYbep27LGJxIFmbMKuWx5cPMIi+4lteoWgEeVOQy6hHQIEtWWy9VY
+            R44blwSyANtTml8PRBGByjZBfrFKf6bbt6Xri/Gu0qJM/O1G8ZPtcDaIzcvbWqGg
+            Tz5D6dq/1AIiCx9Yatwd7ty2ZJdUhaFYSIn2NAFNqGXxGzvCywujdPvejbl8cQjS
+            UQEZL4BqHYUw20c0GnLtEiHVXxO2f1oPJVcooz76kMtXnfEpVCrzrhwYLdx9vTnd
+            6rb12yU6x5q4kjMfm+m4wdjxdRHznM48rUC1E0vbO7Hc/Q==
+            =IfCm
+            -----END PGP MESSAGE-----
+          fp: 286791FB6648539775DB31B8FCB98C2A3EC6F601
+        - created_at: "2023-02-09T00:27:41Z"
+          enc: |
+            -----BEGIN PGP MESSAGE-----
+
+            hQIMA4oYbIHZIrAPARAAlX+ciacOvXP5l2XVeXjKO1hWKnr7YLETntVdqRFf28SE
+            0P7uHujIeWbubJYimjJ5MOGA6CCE6q5KUmuCs1zFJv5Ot7pnx3z5uo3a0tq56QFU
+            Mn90r4QywVzYYRdiLqbSFhXWB9NRKdvER3NKaRmTNGubecd+rioVrkUF80UQ04o8
+            oXqv2zbT2lx/VcwNsQBJn4vI56kKR1OdKrTH6rZ4y87/MzR24JBn+y6ou6ZmslsT
+            c7jliyfCJcJvlIuwAgaY0gk7OF69l5+uDuE9mh3CkR9f7dEeA0GfGF/ULV7Y5PcO
+            90NrgAYDiNYPHQRYXu/v5VYEjz7vcSYL1Y6CvqEJlJNKmzxevKk6T3GCqmOI1lKU
+            Eql+R2LW9lif0yKYedhD2xyjD55nWeOAnXk9OVRruL+ocdDk8IOsL9PbwDIi/RKD
+            f7B1C9+34qPlMjTvxuOg8o9PnNHmFgzAXX4JQqnHcvH+mxDK+DmeQgFy5EzoSD62
+            fR8SaeZL+08r3i4WqupuwrybD4woTVw+8fCzXgXOECstFyQFmXUiIHkeXemIrEcF
+            rd9jfyfvuKvcZp10DghpUzwXV5SP6q5h2K39iC+dZjPmhfZX9w2TfyYeej3mqICj
+            TD5ZOkq0XCOqTLHWTW+ONTkmpSMW2/bdr+k4vjjLHqcEpRBuNQX1xGFRR+Zl//XU
+            aAEJAhDOPr+VRM+7QxAcfbOyG6qF6uX61emfvsmCeI/Frp8ZIN29/EuX3TZQ6ukj
+            HHO9t5XAoIquJQK6I35ffozOp1acmyYMbXZK0xmzjLPJagutcRtDP37k+5DWebhP
+            DfwF09j4hAyb
+            =mlgh
+            -----END PGP MESSAGE-----
+          fp: B137EE1549DFAF960DD1E2B15147025FB9F09E07
+    encrypted_regex: ^(data|stringData|email|dnsZones?|dnsNames?|.*(H|h)osts?|tang|externalURL|.*-secret|.*-url|.*Secrets?|.*-domain|password|subjects|node|apiURL|.*(S|s)erverNames?|.*SecretKey|externalName)$
+    version: 3.7.3
diff --git a/infrastructure/postgres/release.yaml b/infrastructure/postgres/release.yaml
index ad0c26f2b..a4968a965 100644
--- a/infrastructure/postgres/release.yaml
+++ b/infrastructure/postgres/release.yaml
@@ -12,15 +12,28 @@ spec:
         kind: HelmRepository
         name: zalando-postgres-operator
         namespace: postgres-system
-      valuesFiles:
-        - values.yaml
       version: 1.9.0
   interval: 5m
   install:
     crds: CreateReplace
   upgrade:
     crds: CreateReplace
-  values:
+  valuesFrom:
+  - kind: ConfigMap
+    name: postgres-base-values
+    valuesKey: values.yaml
+  - kind: Secret
+    name: postgres-override-values
+    valuesKey: values-overrides.yaml
+    optional: true
+---
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: postgres-base-values
+  namespace: postgres-system
+data:
+  values.yaml: |
     rbac:
       createAggregateClusterRoles: true
     configPostgresPodResources:
-- 
GitLab