Implement resource requests and limits
Possibility to set requests and limits for build jobs. Otherwise a (sensible) default will be used.
This commit is contained in:
parent
fe1150c49d
commit
1514a6d822
5 changed files with 74 additions and 7 deletions
|
@ -27,9 +27,23 @@
|
||||||
(s/def ::gitea-repo string?)
|
(s/def ::gitea-repo string?)
|
||||||
(s/def ::branchname string?)
|
(s/def ::branchname string?)
|
||||||
(s/def ::username string?)
|
(s/def ::username string?)
|
||||||
|
(s/def ::build-cpu-request string?)
|
||||||
|
(s/def ::build-memory-request string?)
|
||||||
|
(s/def ::build-cpu-limit string?)
|
||||||
|
(s/def ::build-memory-limit string?)
|
||||||
|
|
||||||
(def websitedata? (s/keys :req-un [::unique-name ::fqdns ::gitea-host ::gitea-repo ::branchname]
|
(def websitedata? (s/keys :req-un [::unique-name
|
||||||
:opt-un [::issuer ::volume-size ::sha256sum-output]))
|
::fqdns
|
||||||
|
::gitea-host
|
||||||
|
::gitea-repo
|
||||||
|
::branchname]
|
||||||
|
:opt-un [::issuer
|
||||||
|
::volume-size
|
||||||
|
::sha256sum-output
|
||||||
|
::build-cpu-request
|
||||||
|
::build-cpu-limit
|
||||||
|
::build-memory-request
|
||||||
|
::build-memory-limit]))
|
||||||
|
|
||||||
(def websiteauth? (s/keys :req-un [::unique-name ::username ::authtoken]))
|
(def websiteauth? (s/keys :req-un [::unique-name ::username ::authtoken]))
|
||||||
|
|
||||||
|
@ -105,11 +119,16 @@
|
||||||
(defn-spec replace-build-data pred/map-or-seq?
|
(defn-spec replace-build-data pred/map-or-seq?
|
||||||
[resource-file string?
|
[resource-file string?
|
||||||
config flattened-and-reduced-config?]
|
config flattened-and-reduced-config?]
|
||||||
(let [{:keys [sha256sum-output]} config]
|
(let [{:keys [sha256sum-output build-cpu-request build-cpu-limit build-memory-request build-memory-limit]
|
||||||
|
:or {build-cpu-request "1000m" build-cpu-limit "1700m" build-memory-request "256Mi" build-memory-limit "512Mi"}} config]
|
||||||
(->
|
(->
|
||||||
(replace-common-data resource-file config)
|
(replace-common-data resource-file config)
|
||||||
(cm/replace-all-matching-values-by-new-value "CHECK_SUM" (get-hash-from-sha256sum-output sha256sum-output))
|
(cm/replace-all-matching-values-by-new-value "CHECK_SUM" (get-hash-from-sha256sum-output sha256sum-output))
|
||||||
(cm/replace-all-matching-values-by-new-value "SCRIPT_FILE" (get-file-name-from-sha256sum-output sha256sum-output)))))
|
(cm/replace-all-matching-values-by-new-value "SCRIPT_FILE" (get-file-name-from-sha256sum-output sha256sum-output))
|
||||||
|
(cm/replace-all-matching-values-by-new-value "BUILD_CPU_REQUEST" build-cpu-request)
|
||||||
|
(cm/replace-all-matching-values-by-new-value "BUILD_CPU_LIMIT" build-cpu-limit)
|
||||||
|
(cm/replace-all-matching-values-by-new-value "BUILD_MEMORY_REQUEST" build-memory-request)
|
||||||
|
(cm/replace-all-matching-values-by-new-value "BUILD_MEMORY_LIMIT" build-memory-limit))))
|
||||||
|
|
||||||
#?(:cljs
|
#?(:cljs
|
||||||
(defmethod yaml/load-resource :website [resource-name]
|
(defmethod yaml/load-resource :website [resource-name]
|
||||||
|
|
|
@ -43,8 +43,12 @@
|
||||||
:fqdns [\"example.org\" \"www.example.org\"],
|
:fqdns [\"example.org\" \"www.example.org\"],
|
||||||
:gitea-host \"githost.org\",
|
:gitea-host \"githost.org\",
|
||||||
:gitea-repo \"repo\",
|
:gitea-repo \"repo\",
|
||||||
:branchname \"main\"}]}"
|
:branchname \"main\",
|
||||||
"11")))
|
:build-cpu-request \"1500m\",
|
||||||
|
:build-cpu-limit \"3000m\",
|
||||||
|
:build-memory-request \"512Mi\",
|
||||||
|
:build-memory-limit \"1024Mi\"}]}"
|
||||||
|
"16")))
|
||||||
(generate-group
|
(generate-group
|
||||||
"credentials"
|
"credentials"
|
||||||
(br/generate-text-area
|
(br/generate-text-area
|
||||||
|
|
|
@ -33,6 +33,13 @@ spec:
|
||||||
- image: domaindrivenarchitecture/c4k-website-build
|
- image: domaindrivenarchitecture/c4k-website-build
|
||||||
name: NAME-init-build-container
|
name: NAME-init-build-container
|
||||||
imagePullPolicy: IfNotPresent
|
imagePullPolicy: IfNotPresent
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
cpu: BUILD_CPU_REQUEST
|
||||||
|
memory: BUILD_MEMORY_REQUEST
|
||||||
|
limits:
|
||||||
|
cpu: BUILD_CPU_LIMIT
|
||||||
|
memory: BUILD_MEMORY_LIMIT
|
||||||
command: ["/entrypoint.sh"]
|
command: ["/entrypoint.sh"]
|
||||||
envFrom:
|
envFrom:
|
||||||
- secretRef:
|
- secretRef:
|
||||||
|
|
|
@ -16,6 +16,13 @@ spec:
|
||||||
- image: domaindrivenarchitecture/c4k-website-build
|
- image: domaindrivenarchitecture/c4k-website-build
|
||||||
name: NAME-build-app
|
name: NAME-build-app
|
||||||
imagePullPolicy: IfNotPresent
|
imagePullPolicy: IfNotPresent
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
cpu: BUILD_CPU_REQUEST
|
||||||
|
memory: BUILD_MEMORY_REQUEST
|
||||||
|
limits:
|
||||||
|
cpu: BUILD_CPU_LIMIT
|
||||||
|
memory: BUILD_MEMORY_LIMIT
|
||||||
command: ["/entrypoint.sh"]
|
command: ["/entrypoint.sh"]
|
||||||
envFrom:
|
envFrom:
|
||||||
- secretRef:
|
- secretRef:
|
||||||
|
|
|
@ -101,6 +101,7 @@
|
||||||
[{:image "domaindrivenarchitecture/c4k-website-build",
|
[{:image "domaindrivenarchitecture/c4k-website-build",
|
||||||
:name "test-io-init-build-container",
|
:name "test-io-init-build-container",
|
||||||
:imagePullPolicy "IfNotPresent",
|
:imagePullPolicy "IfNotPresent",
|
||||||
|
:resources {:requests {:cpu "1000m", :memory "256Mi"}, :limits {:cpu "1700m", :memory "512Mi"}},
|
||||||
:command ["/entrypoint.sh"],
|
:command ["/entrypoint.sh"],
|
||||||
:envFrom [{:secretRef {:name "test-io-secret"}}],
|
:envFrom [{:secretRef {:name "test-io-secret"}}],
|
||||||
:env [{:name "SHA256SUM", :value "123456789ab123cd345de"} {:name "SCRIPTFILE", :value "script-file-name.sh"}],
|
:env [{:name "SHA256SUM", :value "123456789ab123cd345de"} {:name "SCRIPTFILE", :value "script-file-name.sh"}],
|
||||||
|
@ -125,6 +126,34 @@
|
||||||
:branchname "main",
|
:branchname "main",
|
||||||
:unique-name "test.io"}))))
|
:unique-name "test.io"}))))
|
||||||
|
|
||||||
|
(deftest should-generate-resource-requests
|
||||||
|
(is (= {:requests {:cpu "1000m", :memory "256Mi"}, :limits {:cpu "1700m", :memory "512Mi"}}
|
||||||
|
(-> (cut/generate-nginx-deployment {:authtoken "abedjgbasdodj",
|
||||||
|
:gitea-host "gitlab.de",
|
||||||
|
:username "someuser",
|
||||||
|
:fqdns ["test.de" "test.org" "www.test.de" "www.test.org"],
|
||||||
|
:gitea-repo "repo",
|
||||||
|
:sha256sum-output "123456789ab123cd345de script-file-name.sh",
|
||||||
|
:issuer "staging",
|
||||||
|
:branchname "main",
|
||||||
|
:unique-name "test.io"})
|
||||||
|
:spec :template :spec :initContainers first :resources )))
|
||||||
|
(is (= {:requests {:cpu "1500m", :memory "512Mi"}, :limits {:cpu "3000m", :memory "1024Mi"}}
|
||||||
|
(-> (cut/generate-nginx-deployment {:authtoken "abedjgbasdodj",
|
||||||
|
:gitea-host "gitlab.de",
|
||||||
|
:username "someuser",
|
||||||
|
:fqdns ["test.de" "test.org" "www.test.de" "www.test.org"],
|
||||||
|
:gitea-repo "repo",
|
||||||
|
:sha256sum-output "123456789ab123cd345de script-file-name.sh",
|
||||||
|
:issuer "staging",
|
||||||
|
:branchname "main",
|
||||||
|
:unique-name "test.io"
|
||||||
|
:build-cpu-request "1500m"
|
||||||
|
:build-cpu-limit "3000m"
|
||||||
|
:build-memory-request "512Mi"
|
||||||
|
:build-memory-limit "1024Mi"})
|
||||||
|
:spec :template :spec :initContainers first :resources))))
|
||||||
|
|
||||||
(deftest should-generate-nginx-service
|
(deftest should-generate-nginx-service
|
||||||
(is (= {:name-c1 "test-io-service",
|
(is (= {:name-c1 "test-io-service",
|
||||||
:name-c2 "test-org-service",
|
:name-c2 "test-org-service",
|
||||||
|
@ -163,6 +192,7 @@
|
||||||
[{:image "domaindrivenarchitecture/c4k-website-build",
|
[{:image "domaindrivenarchitecture/c4k-website-build",
|
||||||
:name "test-io-build-app",
|
:name "test-io-build-app",
|
||||||
:imagePullPolicy "IfNotPresent",
|
:imagePullPolicy "IfNotPresent",
|
||||||
|
:resources {:requests {:cpu "1000m", :memory "256Mi"}, :limits {:cpu "1700m", :memory "512Mi"}},
|
||||||
:command ["/entrypoint.sh"],
|
:command ["/entrypoint.sh"],
|
||||||
:envFrom [{:secretRef {:name "test-io-secret"}}],
|
:envFrom [{:secretRef {:name "test-io-secret"}}],
|
||||||
:env [{:name "SHA256SUM", :value "123456789ab123cd345de"} {:name "SCRIPTFILE", :value "script-file-name.sh"}],
|
:env [{:name "SHA256SUM", :value "123456789ab123cd345de"} {:name "SCRIPTFILE", :value "script-file-name.sh"}],
|
||||||
|
|
Loading…
Reference in a new issue