aboutsummaryrefslogtreecommitdiffstats
path: root/kubernetes/namespaces/default/postgresql
diff options
context:
space:
mode:
authorGravatar Chris Lovering <[email protected]>2023-08-13 20:01:42 +0100
committerGravatar Chris Lovering <[email protected]>2023-08-14 11:44:03 +0100
commit661f49409e69f5cfafbef4cd41411a72ebc5418d (patch)
tree9ddd7f2a2ab09cadc5b716be00628e19d839ad4d /kubernetes/namespaces/default/postgresql
parentAllow multiple documents within yaml files (diff)
Copy all files from kubernetes repo into this one
This commit is a like-for-like copy of the [kubernetes repo](https://github.com/python-discord/kubernetes) check that repo for comit history prioir to this commit. Co-authored-by: Amrou Bellalouna <[email protected]> Co-authored-by: Bradley Reynolds <[email protected]> Co-authored-by: Chris <[email protected]> Co-authored-by: Chris Lovering <[email protected]> Co-authored-by: ChrisJL <[email protected]> Co-authored-by: Den4200 <[email protected]> Co-authored-by: GDWR <[email protected]> Co-authored-by: Hassan Abouelela <[email protected]> Co-authored-by: Hassan Abouelela <[email protected]> Co-authored-by: jchristgit <[email protected]> Co-authored-by: Joe Banks <[email protected]> Co-authored-by: Joe Banks <[email protected]> Co-authored-by: Joe Banks <[email protected]> Co-authored-by: Johannes Christ <[email protected]> Co-authored-by: Kieran Siek <[email protected]> Co-authored-by: kosayoda <[email protected]> Co-authored-by: ks129 <[email protected]> Co-authored-by: Leon Sand├©y <[email protected]> Co-authored-by: Leon Sand├©y <[email protected]> Co-authored-by: MarkKoz <[email protected]> Co-authored-by: Matteo Bertucci <[email protected]> Co-authored-by: Sebastiaan Zeeff <[email protected]> Co-authored-by: Sebastiaan Zeeff <[email protected]> Co-authored-by: vcokltfre <[email protected]>
Diffstat (limited to 'kubernetes/namespaces/default/postgresql')
-rw-r--r--kubernetes/namespaces/default/postgresql/README.md16
-rw-r--r--kubernetes/namespaces/default/postgresql/configmap.yaml28
-rw-r--r--kubernetes/namespaces/default/postgresql/deployment.yaml46
-rw-r--r--kubernetes/namespaces/default/postgresql/secrets.yamlbin0 -> 277 bytes
-rw-r--r--kubernetes/namespaces/default/postgresql/service.yaml11
-rw-r--r--kubernetes/namespaces/default/postgresql/volume.yaml13
6 files changed, 114 insertions, 0 deletions
diff --git a/kubernetes/namespaces/default/postgresql/README.md b/kubernetes/namespaces/default/postgresql/README.md
new file mode 100644
index 0000000..07eed4f
--- /dev/null
+++ b/kubernetes/namespaces/default/postgresql/README.md
@@ -0,0 +1,16 @@
+# Postgres
+This folder contains the manifests for Postgres, our primary database.
+
+You can alter the configuration file inside the `configmap.yaml` file which will be injected into the database container upon boot. Certain parameters (marked in the file) will require a server restart whereas others can be reloaded by using `SELECT pg_reload_conf();` inside Postgres.
+
+Note that there may be up to a minute before your changes to the ConfigMap are reflected inside the container, if things do not change after that you will have to restart the server for the configuration to apply.
+
+## Secrets
+
+postgres requires a `postgres-env` secret with the following entries:
+
+| Environment | Description |
+|-------------------|-----------------------------------|
+| PGDATA | The path to the pg_data directory |
+| POSTGRES_PASSWORD | The default password to use |
+| POSTGRES_USER | The default user to use |
diff --git a/kubernetes/namespaces/default/postgresql/configmap.yaml b/kubernetes/namespaces/default/postgresql/configmap.yaml
new file mode 100644
index 0000000..a2c9a4e
--- /dev/null
+++ b/kubernetes/namespaces/default/postgresql/configmap.yaml
@@ -0,0 +1,28 @@
+apiVersion: v1
+kind: ConfigMap
+metadata:
+ name: postgres-config
+data:
+ postgresql.conf: |
+ # From pgtune
+ max_connections = 110
+ shared_buffers = 1536MB
+ effective_cache_size = 4608MB
+ maintenance_work_mem = 384MB
+ checkpoint_completion_target = 0.9
+ wal_buffers = 16MB
+ default_statistics_target = 100
+ random_page_cost = 1.1
+ effective_io_concurrency = 200
+ work_mem = 3574kB
+ min_wal_size = 1GB
+ max_wal_size = 4GB
+ max_worker_processes = 4
+ max_parallel_workers_per_gather = 2
+ max_parallel_workers = 4
+ max_parallel_maintenance_workers = 2
+
+ # Custom conf
+ listen_addresses = '*'
+ password_encryption = md5
+ shared_preload_libraries = 'pg_stat_statements' # (change requires restart)
diff --git a/kubernetes/namespaces/default/postgresql/deployment.yaml b/kubernetes/namespaces/default/postgresql/deployment.yaml
new file mode 100644
index 0000000..cfe6101
--- /dev/null
+++ b/kubernetes/namespaces/default/postgresql/deployment.yaml
@@ -0,0 +1,46 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: postgres
+spec:
+ replicas: 1
+ strategy:
+ type: Recreate
+ selector:
+ matchLabels:
+ app: postgres
+ template:
+ metadata:
+ labels:
+ app: postgres
+ spec:
+ containers:
+ - name: postgres
+ image: ghcr.io/chrislovering/psql_extended:15
+ imagePullPolicy: "Always"
+ ports:
+ - name: postgres
+ containerPort: 5432
+ envFrom:
+ - secretRef:
+ name: postgres-env
+ args: ["-c", "config_file=/etc/postgresql/postgresql.conf"]
+ volumeMounts:
+ - name: postgres-data
+ mountPath: /var/lib/postgresql/data
+ subPath: pgdata
+ - name: postgres-config
+ mountPath: /etc/postgresql
+ - name: dshm
+ mountPath: /dev/shm
+ volumes:
+ - name: postgres-data
+ persistentVolumeClaim:
+ claimName: postgres-storage
+ - name: postgres-config
+ configMap:
+ name: postgres-config
+ - name: dshm
+ emptyDir:
+ medium: Memory
+ sizeLimit: 2Gi
diff --git a/kubernetes/namespaces/default/postgresql/secrets.yaml b/kubernetes/namespaces/default/postgresql/secrets.yaml
new file mode 100644
index 0000000..902f7d5
--- /dev/null
+++ b/kubernetes/namespaces/default/postgresql/secrets.yaml
Binary files differ
diff --git a/kubernetes/namespaces/default/postgresql/service.yaml b/kubernetes/namespaces/default/postgresql/service.yaml
new file mode 100644
index 0000000..f69deae
--- /dev/null
+++ b/kubernetes/namespaces/default/postgresql/service.yaml
@@ -0,0 +1,11 @@
+apiVersion: v1
+kind: Service
+metadata:
+ labels:
+ app: postgres
+ name: postgres
+spec:
+ ports:
+ - port: 5432
+ selector:
+ app: postgres
diff --git a/kubernetes/namespaces/default/postgresql/volume.yaml b/kubernetes/namespaces/default/postgresql/volume.yaml
new file mode 100644
index 0000000..53108ce
--- /dev/null
+++ b/kubernetes/namespaces/default/postgresql/volume.yaml
@@ -0,0 +1,13 @@
+kind: PersistentVolumeClaim
+apiVersion: v1
+metadata:
+ name: postgres-storage
+ labels:
+ app: postgres
+spec:
+ storageClassName: linode-block-storage-retain
+ accessModes:
+ - ReadWriteOnce
+ resources:
+ requests:
+ storage: 25Gi