updated pvc, mob

This commit is contained in:
see 2022-03-18 12:13:40 +01:00
parent 3a2f587709
commit 1c179daf2c
3 changed files with 23 additions and 12 deletions

View file

@ -11,10 +11,7 @@
(def config-defaults {:issuer :staging}) (def config-defaults {:issuer :staging})
(def config? (s/keys :req-un [::nextcloud/fqdn]
:opt-un [::nextcloud/issuer ::nextcloud/nextcloud-data-volume-path
::postgres/postgres-data-volume-path ::restic-repository
::nextcloud/storage-size]))
(def auth? (s/keys :req-un [::postgres/postgres-db-user ::postgres/postgres-db-password (def auth? (s/keys :req-un [::postgres/postgres-db-user ::postgres/postgres-db-password
::nextcloud/nextcloud-admin-user ::nextcloud/nextcloud-admin-password ::nextcloud/nextcloud-admin-user ::nextcloud/nextcloud-admin-password
@ -24,7 +21,7 @@
(defn-spec k8s-objects any? (defn-spec k8s-objects any?
[config (s/merge config? auth?)] [config (s/merge nextcloud/config? auth?)]
(let [storage-class (if (contains? config :postgres-data-volume-path) :manual :local-path)] (let [storage-class (if (contains? config :postgres-data-volume-path) :manual :local-path)]
(into (into
[] []
@ -51,7 +48,7 @@
(yaml/to-string (backup/generate-backup-restore-deployment config))]))))) (yaml/to-string (backup/generate-backup-restore-deployment config))])))))
(defn-spec generate any? (defn-spec generate any?
[my-config config? [my-config nextcloud/config?
my-auth auth?] my-auth auth?]
(let [resulting-config (merge config-defaults my-config my-auth)] (let [resulting-config (merge config-defaults my-config my-auth)]
(cs/join (cs/join

View file

@ -5,7 +5,8 @@
[dda.c4k-common.yaml :as yaml] [dda.c4k-common.yaml :as yaml]
[dda.c4k-common.base64 :as b64] [dda.c4k-common.base64 :as b64]
[dda.c4k-common.predicate :as cp] [dda.c4k-common.predicate :as cp]
[dda.c4k-common.common :as cm])) [dda.c4k-common.common :as cm]
[dda.c4k-common.postgres :as postgres]))
(s/def ::fqdn any?) ; TODO: Fix fqdn-string? to include localhost (s/def ::fqdn any?) ; TODO: Fix fqdn-string? to include localhost
(s/def ::issuer cp/letsencrypt-issuer?) (s/def ::issuer cp/letsencrypt-issuer?)
@ -13,6 +14,13 @@
(s/def ::nextcloud-data-volume-path string?) (s/def ::nextcloud-data-volume-path string?)
(s/def ::nextcloud-admin-user cp/bash-env-string?) (s/def ::nextcloud-admin-user cp/bash-env-string?)
(s/def ::nextcloud-admin-password cp/bash-env-string?) (s/def ::nextcloud-admin-password cp/bash-env-string?)
(s/def ::pvc-storage-class-name cp/pvc-storage-class-name?)
(s/def ::pv-storage-size-gb pos?)
(def config? (s/keys :req-un [::fqdn]
:opt-un [::issuer ::nextcloud-data-volume-path
::postgres/postgres-data-volume-path ::restic-repository
::pv-storage-size-gb ::pvc-storage-class-name]))
#?(:cljs #?(:cljs
(defmethod yaml/load-resource :nextcloud [resource-name] (defmethod yaml/load-resource :nextcloud [resource-name]
@ -57,9 +65,15 @@
;(assoc-in [:spec :capacity :storage] (str storage-size "Gi")) ;(assoc-in [:spec :capacity :storage] (str storage-size "Gi"))
))) )))
(defn generate-pvc [] (defn-spec generate-pvc cp/map-or-seq?
(let [{:keys [nextcloud-data-volume-path storage-size]} config]) [config config?]
(yaml/from-string (yaml/load-resource "nextcloud/pvc.yaml"))) (let [{:keys [pv-storage-size-gb pvc-storage-class-name]
:or {pv-storage-size-gb 50
pvc-storage-class-name :manual}} config]
(->
(yaml/from-string (yaml/load-resource "nextcloud/pvc.yaml"))
(assoc-in [:spec :resources :requests :storage] (str pv-storage-size-gb "Gi"))
(assoc-in [:spec :storageClassName] (name pvc-storage-class-name)))))
(defn generate-service [] (defn generate-service []
(yaml/from-string (yaml/load-resource "nextcloud/service.yaml"))) (yaml/from-string (yaml/load-resource "nextcloud/service.yaml")))

View file

@ -5,12 +5,12 @@ metadata:
labels: labels:
app.kubernetes.io/application: cloud app.kubernetes.io/application: cloud
spec: spec:
storageClassName: manual storageClassName: REPLACEME
accessModes: accessModes:
- ReadWriteOnce - ReadWriteOnce
resources: resources:
requests: requests:
storage: 200Gi storage: REPLACEME
selector: selector:
matchLabels: matchLabels:
app.kubernetes.io/application: cloud app.kubernetes.io/application: cloud