From 661f49409e69f5cfafbef4cd41411a72ebc5418d Mon Sep 17 00:00:00 2001 From: Chris Lovering Date: Sun, 13 Aug 2023 20:01:42 +0100 Subject: Copy all files from kubernetes repo into this one MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 Co-authored-by: Bradley Reynolds Co-authored-by: Chris Co-authored-by: Chris Lovering Co-authored-by: ChrisJL Co-authored-by: Den4200 Co-authored-by: GDWR Co-authored-by: Hassan Abouelela Co-authored-by: Hassan Abouelela Co-authored-by: jchristgit Co-authored-by: Joe Banks <20439493+jb3@users.noreply.github.com> Co-authored-by: Joe Banks Co-authored-by: Joe Banks Co-authored-by: Johannes Christ Co-authored-by: Kieran Siek Co-authored-by: kosayoda Co-authored-by: ks129 <45097959+ks129@users.noreply.github.com> Co-authored-by: Leon Sand├©y Co-authored-by: Leon Sand├©y Co-authored-by: MarkKoz Co-authored-by: Matteo Bertucci Co-authored-by: Sebastiaan Zeeff <33516116+SebastiaanZ@users.noreply.github.com> Co-authored-by: Sebastiaan Zeeff Co-authored-by: vcokltfre --- kubernetes/namespaces/default/postgresql/README.md | 16 +++++++ .../namespaces/default/postgresql/configmap.yaml | 28 +++++++++++++ .../namespaces/default/postgresql/deployment.yaml | 46 +++++++++++++++++++++ .../namespaces/default/postgresql/secrets.yaml | Bin 0 -> 277 bytes .../namespaces/default/postgresql/service.yaml | 11 +++++ .../namespaces/default/postgresql/volume.yaml | 13 ++++++ 6 files changed, 114 insertions(+) create mode 100644 kubernetes/namespaces/default/postgresql/README.md create mode 100644 kubernetes/namespaces/default/postgresql/configmap.yaml create mode 100644 kubernetes/namespaces/default/postgresql/deployment.yaml create mode 100644 kubernetes/namespaces/default/postgresql/secrets.yaml create mode 100644 kubernetes/namespaces/default/postgresql/service.yaml create mode 100644 kubernetes/namespaces/default/postgresql/volume.yaml (limited to 'kubernetes/namespaces/default/postgresql') 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 Binary files /dev/null and b/kubernetes/namespaces/default/postgresql/secrets.yaml 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 -- cgit v1.2.3