introduce size dependand postgres-sizings

This commit is contained in:
jem 2021-09-13 09:05:08 +02:00
parent 1b4502b316
commit a0ce804499
8 changed files with 58 additions and 6 deletions

View file

@ -1,4 +1,4 @@
(defproject org.domaindrivenarchitecture/c4k-common-cljs "0.2.11-SNAPSHOT"
(defproject org.domaindrivenarchitecture/c4k-common-cljs "0.3.0-SNAPSHOT"
:description "Contains predicates and tools for c4k"
:url "https://domaindrivenarchitecture.org"
:license {:name "Apache License, Version 2.0"

View file

@ -1,4 +1,4 @@
(defproject org.domaindrivenarchitecture/c4k-common-clj "0.2.11-SNAPSHOT"
(defproject org.domaindrivenarchitecture/c4k-common-clj "0.3.0-SNAPSHOT"
:description "Contains predicates and tools for c4k"
:url "https://domaindrivenarchitecture.org"
:license {:name "Apache License, Version 2.0"

View file

@ -6,14 +6,22 @@
[dda.c4k-common.base64 :as b64]
[dda.c4k-common.common :as cm]))
(defn postgres-size?
[input]
(contains? #{:2gb :4gb :8gb :16gb} input))
(s/def ::postgres-db-user cm/bash-env-string?)
(s/def ::postgres-db-password cm/bash-env-string?)
(s/def ::postgres-data-volume-path string?)
(s/def ::postgres-size postgres-size?)
#?(:cljs
(defmethod yaml/load-resource :postgres [resource-name]
(case resource-name
"postgres/config.yaml" (rc/inline "postgres/config.yaml")
"postgres/config-2gb.yaml" (rc/inline "postgres/config-2gb.yaml")
"postgres/config-4gb.yaml" (rc/inline "postgres/config-4gb.yaml")
"postgres/config-8gb.yaml" (rc/inline "postgres/config-8gb.yaml")
"postgres/config-16gb.yaml" (rc/inline "postgres/config-16gb.yaml")
"postgres/deployment.yaml" (rc/inline "postgres/deployment.yaml")
"postgres/persistent-volume.yaml" (rc/inline "postgres/persistent-volume.yaml")
"postgres/pvc.yaml" (rc/inline "postgres/pvc.yaml")
@ -21,8 +29,10 @@
"postgres/service.yaml" (rc/inline "postgres/service.yaml")
(throw (js/Error. "Undefined Resource!")))))
(defn generate-config []
(yaml/from-string (yaml/load-resource "postgres/config.yaml")))
(defn generate-config [& args]
(let [{:keys [postgres-size]
:or {postgres-size :2gb}} args]
(yaml/from-string (yaml/load-resource (str "postgres/config-" (name postgres-size) ".yaml")))))
(defn generate-deployment []
(yaml/from-string (yaml/load-resource "postgres/deployment.yaml")))

View file

@ -5,7 +5,7 @@ metadata:
labels:
app: postgres
data:
postgres-db: jira
postgresql.conf: |
max_connections = 1000
work_mem = 4MB
shared_buffers = 512MB

View file

@ -0,0 +1,11 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: postgres-config
labels:
app: postgres
data:
postgresql.conf: |
max_connections = 100
work_mem = 4MB
shared_buffers = 128MB

View file

@ -0,0 +1,11 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: postgres-config
labels:
app: postgres
data:
postgresql.conf: |
max_connections = 500
work_mem = 2MB
shared_buffers = 256MB

View file

@ -0,0 +1,11 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: postgres-config
labels:
app: postgres
data:
postgresql.conf: |
max_connections = 700
work_mem = 3MB
shared_buffers = 512MB

View file

@ -4,6 +4,15 @@
:cljs [cljs.test :refer-macros [deftest is are testing run-tests]])
[dda.c4k-common.postgres :as cut]))
(deftest should-generate-config
(is (= {:postgresql.conf
"max_connections = 100\nwork_mem = 4MB\nshared_buffers = 128MB\n"}
(:data (cut/generate-config))))
(is (= {:postgresql.conf
"max_connections = 700\nwork_mem = 3MB\nshared_buffers = 512MB\n"}
(:data (cut/generate-config :postgres-size :8gb))))
)
(deftest should-generate-persistent-volume
(is (= {:kind "PersistentVolume"
:apiVersion "v1"