From dcbcd530686928ac893327189b5f50b53c653a03 Mon Sep 17 00:00:00 2001 From: Michael Jerger <michael.jerger@meissa-gmbh.de> Date: Mon, 10 Mar 2025 14:29:35 +0100 Subject: [PATCH 1/9] update versions --- project.clj | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/project.clj b/project.clj index 0a84d2a..4b63c96 100644 --- a/project.clj +++ b/project.clj @@ -4,7 +4,7 @@ :license {:name "Apache License, Version 2.0" :url "https://www.apache.org/licenses/LICENSE-2.0.html"} :dependencies [[org.clojure/clojure "1.12.0"] - [org.clojure/tools.reader "1.5.0"] + [org.clojure/tools.reader "1.5.2"] [aero "1.1.6"] [orchestra "2021.01.01-1"] [expound "0.9.0"] @@ -27,9 +27,9 @@ :main dda.c4k-common.uberjar :uberjar-name "c4k-common-standalone.jar" :dependencies [[org.clojure/tools.cli "1.1.230"] - [ch.qos.logback/logback-classic "1.5.16" + [ch.qos.logback/logback-classic "1.5.17" :exclusions [com.sun.mail/javax.mail]] - [org.slf4j/jcl-over-slf4j "2.0.16"]]}} + [org.slf4j/jcl-over-slf4j "2.0.17"]]}} :release-tasks [["test"] ["vcs" "assert-committed"] ["change" "version" "leiningen.release/bump-version" "release"] From 991cf57c4f31f22e9bd2911d05d4f986f50375f6 Mon Sep 17 00:00:00 2001 From: Michael Jerger <michael.jerger@meissa-gmbh.de> Date: Mon, 10 Mar 2025 14:36:34 +0100 Subject: [PATCH 2/9] add pgw --- src/main/cljc/dda/c4k_common/monitoring.cljc | 28 ++-------- .../monitoring/monitoring_internal.cljc | 3 ++ .../monitoring/push-gw-deployment.yaml | 52 +++++++++++++++++++ .../monitoring/push-gw-service-account.yaml | 8 +++ .../resources/monitoring/push-gw-service.yaml | 16 ++++++ .../cljc/dda/c4k_common/monitoring_test.cljc | 4 +- 6 files changed, 84 insertions(+), 27 deletions(-) create mode 100644 src/main/resources/monitoring/push-gw-deployment.yaml create mode 100644 src/main/resources/monitoring/push-gw-service-account.yaml create mode 100644 src/main/resources/monitoring/push-gw-service.yaml diff --git a/src/main/cljc/dda/c4k_common/monitoring.cljc b/src/main/cljc/dda/c4k_common/monitoring.cljc index 9c8d788..3190294 100644 --- a/src/main/cljc/dda/c4k_common/monitoring.cljc +++ b/src/main/cljc/dda/c4k_common/monitoring.cljc @@ -20,29 +20,6 @@ (def filter-regex-string int/filter-regex-string) - -(defn-spec ^{:deprecated "6.4.1"} generate seq? - "use generate-config and generate-auth instead" - [config ::mon-cfg - auth ::mon-auth] - [(yaml/load-as-edn "monitoring/namespace.yaml") - (yaml/load-as-edn "monitoring/prometheus-cluster-role.yaml") - (yaml/load-as-edn "monitoring/prometheus-cluster-role-binding.yaml") - (yaml/load-as-edn "monitoring/prometheus-service.yaml") - (yaml/load-as-edn "monitoring/prometheus-service-account.yaml") - (int/generate-config-secret config auth) - (yaml/load-as-edn "monitoring/prometheus-deployment.yaml") - (yaml/load-as-edn "monitoring/node-exporter-service-account.yaml") - (yaml/load-as-edn "monitoring/node-exporter-cluster-role.yaml") - (yaml/load-as-edn "monitoring/node-exporter-cluster-role-binding.yaml") - (yaml/load-as-edn "monitoring/node-exporter-daemon-set.yaml") - (yaml/load-as-edn "monitoring/node-exporter-service.yaml") - (yaml/load-as-edn "monitoring/kube-state-metrics-cluster-role-binding.yaml") - (yaml/load-as-edn "monitoring/kube-state-metrics-cluster-role.yaml") - (yaml/load-as-edn "monitoring/kube-state-metrics-deployment.yaml") - (yaml/load-as-edn "monitoring/kube-state-metrics-service-account.yaml") - (yaml/load-as-edn "monitoring/kube-state-metrics-service.yaml")]) - (defn-spec generate-config seq? [] [(yaml/load-as-edn "monitoring/namespace.yaml") @@ -60,7 +37,10 @@ (yaml/load-as-edn "monitoring/kube-state-metrics-cluster-role.yaml") (yaml/load-as-edn "monitoring/kube-state-metrics-deployment.yaml") (yaml/load-as-edn "monitoring/kube-state-metrics-service-account.yaml") - (yaml/load-as-edn "monitoring/kube-state-metrics-service.yaml")]) + (yaml/load-as-edn "monitoring/kube-state-metrics-service.yaml") + (yaml/load-as-edn "monitoring/push-gw-deployment.yaml") + (yaml/load-as-edn "monitoring/push-gw-service-account.yaml") + (yaml/load-as-edn "monitoring/push-gw-service.yaml")]) (defn-spec generate-auth seq? [config ::mon-cfg diff --git a/src/main/cljc/dda/c4k_common/monitoring/monitoring_internal.cljc b/src/main/cljc/dda/c4k_common/monitoring/monitoring_internal.cljc index 651fead..bb99208 100644 --- a/src/main/cljc/dda/c4k_common/monitoring/monitoring_internal.cljc +++ b/src/main/cljc/dda/c4k_common/monitoring/monitoring_internal.cljc @@ -31,6 +31,9 @@ "monitoring/prometheus-prometheus.yaml" (rc/inline "monitoring/prometheus-prometheus.yaml") "monitoring/prometheus-service-account.yaml" (rc/inline "monitoring/prometheus-service-account.yaml") "monitoring/prometheus-service.yaml" (rc/inline "monitoring/prometheus-service.yaml") + "monitoring/push-gw-deployment.yaml" (rc/inline "monitoring/push-gw-deployment.yaml") + "monitoring/push-gw-service-account.yaml" (rc/inline "monitoring/push-gw-service-account.yaml") + "monitoring/push-gw-service.yaml" (rc/inline "monitoring/push-gw-service.yaml") (throw (js/Error. (str "Undefined Resource: " resource-name)))))) diff --git a/src/main/resources/monitoring/push-gw-deployment.yaml b/src/main/resources/monitoring/push-gw-deployment.yaml new file mode 100644 index 0000000..e1cc2f1 --- /dev/null +++ b/src/main/resources/monitoring/push-gw-deployment.yaml @@ -0,0 +1,52 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app.kubernetes.io/name: prometheus-pushgateway + name: prometheus-pushgateway + namespace: monitoring +spec: + replicas: 1 + strategy: + type: Recreate + selector: + matchLabels: + app.kubernetes.io/name: prometheus-pushgateway + template: + metadata: + labels: + app.kubernetes.io/name: prometheus-pushgateway + spec: + serviceAccountName: prometheus-pushgateway + automountServiceAccountToken: true + containers: + - name: pushgateway + image: "quay.io/prometheus/pushgateway:v1.11.0" + imagePullPolicy: IfNotPresent + ports: + - name: metrics + containerPort: 9091 + protocol: TCP + livenessProbe: + httpGet: + path: /-/healthy + port: 9091 + initialDelaySeconds: 10 + timeoutSeconds: 10 + readinessProbe: + httpGet: + path: /-/ready + port: 9091 + initialDelaySeconds: 10 + timeoutSeconds: 10 + volumeMounts: + - name: storage-volume + mountPath: "/data" + subPath: "" + securityContext: + fsGroup: 65534 + runAsNonRoot: true + runAsUser: 65534 + volumes: + - name: storage-volume + emptyDir: {} diff --git a/src/main/resources/monitoring/push-gw-service-account.yaml b/src/main/resources/monitoring/push-gw-service-account.yaml new file mode 100644 index 0000000..c223e65 --- /dev/null +++ b/src/main/resources/monitoring/push-gw-service-account.yaml @@ -0,0 +1,8 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + labels: + app.kubernetes.io/name: prometheus-pushgateway + name: x-prometheus-pushgateway + namespace: monitoring +automountServiceAccountToken: true \ No newline at end of file diff --git a/src/main/resources/monitoring/push-gw-service.yaml b/src/main/resources/monitoring/push-gw-service.yaml new file mode 100644 index 0000000..0f5188e --- /dev/null +++ b/src/main/resources/monitoring/push-gw-service.yaml @@ -0,0 +1,16 @@ +apiVersion: v1 +kind: Service +metadata: + labels: + app.kubernetes.io/name: prometheus-pushgateway + name: prometheus-pushgateway + namespace: monitoring +spec: + type: ClusterIP + ports: + - port: 9091 + targetPort: 9091 + protocol: TCP + name: http + selector: + app.kubernetes.io/name: prometheus-pushgateway \ No newline at end of file diff --git a/src/test/cljc/dda/c4k_common/monitoring_test.cljc b/src/test/cljc/dda/c4k_common/monitoring_test.cljc index 1efc434..346d776 100644 --- a/src/test/cljc/dda/c4k_common/monitoring_test.cljc +++ b/src/test/cljc/dda/c4k_common/monitoring_test.cljc @@ -19,9 +19,7 @@ (deftest should-generate - (is (= 17 - (count (cut/generate conf auth)))) - (is (= 16 + (is (= 19 (count (cut/generate-config)))) (is (= 1 (count (cut/generate-auth conf auth))))) From f99a0dd747d0a1d0bd01a9dc460a0bf0f60a434a Mon Sep 17 00:00:00 2001 From: Michael Jerger <michael.jerger@meissa-gmbh.de> Date: Mon, 10 Mar 2025 14:57:15 +0100 Subject: [PATCH 3/9] add load-and-adjust-ns-helper --- src/main/cljc/dda/c4k_common/namespace.cljc | 9 +++++++++ .../cljc/dda/c4k_common/namespace_test.cljc | 17 ++++++++++++++++- src/test/resources/namespace-test/dummy.yaml | 5 +++++ 3 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 src/test/resources/namespace-test/dummy.yaml diff --git a/src/main/cljc/dda/c4k_common/namespace.cljc b/src/main/cljc/dda/c4k_common/namespace.cljc index 0e8638a..17d5bc6 100644 --- a/src/main/cljc/dda/c4k_common/namespace.cljc +++ b/src/main/cljc/dda/c4k_common/namespace.cljc @@ -3,6 +3,8 @@ #?(:clj [orchestra.core :refer [defn-spec]] :cljs [orchestra.core :refer-macros [defn-spec]]) [clojure.spec.alpha :as s] + [dda.c4k-common.predicate :as cp] + [dda.c4k-common.yaml :as yaml] [dda.c4k-common.namespace.namespace-internal :as int])) (s/def ::namespace ::int/namespace) @@ -17,3 +19,10 @@ (let [final-config (merge default-config config)] [(int/generate-namespace final-config)])) + +(defn-spec load-and-adjust-namespace cp/map-or-seq? + [file string? + namespace ::namespace] + (-> + (yaml/load-as-edn file) + (assoc-in [:metadata :namespace] namespace))) diff --git a/src/test/cljc/dda/c4k_common/namespace_test.cljc b/src/test/cljc/dda/c4k_common/namespace_test.cljc index f400516..5f1f2ca 100644 --- a/src/test/cljc/dda/c4k_common/namespace_test.cljc +++ b/src/test/cljc/dda/c4k_common/namespace_test.cljc @@ -2,10 +2,18 @@ (:require #?(:clj [clojure.test :refer [deftest is are testing run-tests]] :cljs [cljs.test :refer-macros [deftest is are testing run-tests]]) + #?(:cljs [shadow.resource :as rc]) [clojure.spec.test.alpha :as st] [dda.c4k-common.namespace :as cut])) (st/instrument `cut/generate) +(st/instrument `cut/load-and-adjust-namespace) + +#?(:cljs + (defmethod yaml/load-resource :namespace-test [resource-name] + (case resource-name + "namespace-test/dummy.yaml" (rc/inline "namespace-test/dummy.yaml") + (throw (js/Error. (str "Undefined Resource: " resource-name)))))) (deftest should-generate-simple-ingress (is (= [{:apiVersion "v1" @@ -15,4 +23,11 @@ (is (= [{:apiVersion "v1" :kind "Namespace" :metadata {:name "myapp"}}] - (cut/generate {:namespace "myapp"})))) \ No newline at end of file + (cut/generate {:namespace "myapp"})))) + +(deftest should-load-and-replace-ns + (is (= {:apiVersion "v1" + :kind "Dummy" + :metadata {:name "dummy" + :namespace "xy"}} + (cut/load-and-adjust-namespace "namespace-test/dummy.yaml" "xy")))) \ No newline at end of file diff --git a/src/test/resources/namespace-test/dummy.yaml b/src/test/resources/namespace-test/dummy.yaml new file mode 100644 index 0000000..cf7f183 --- /dev/null +++ b/src/test/resources/namespace-test/dummy.yaml @@ -0,0 +1,5 @@ +apiVersion: v1 +kind: Dummy +metadata: + name: dummy + namespace: default \ No newline at end of file From 28e9609b9aef8506c4865f898ea4b3aaced7146f Mon Sep 17 00:00:00 2001 From: Michael Jerger <michael.jerger@meissa-gmbh.de> Date: Mon, 10 Mar 2025 16:53:50 +0100 Subject: [PATCH 4/9] define scraping --- src/main/resources/monitoring/prometheus-prometheus.yaml | 5 +++++ src/main/resources/monitoring/push-gw-service-account.yaml | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main/resources/monitoring/prometheus-prometheus.yaml b/src/main/resources/monitoring/prometheus-prometheus.yaml index 2ffa360..7c1b917 100644 --- a/src/main/resources/monitoring/prometheus-prometheus.yaml +++ b/src/main/resources/monitoring/prometheus-prometheus.yaml @@ -62,3 +62,8 @@ scrape_configs: - job_name: "prometheus" static_configs: - targets: ["localhost:9090"] + + - job_name: pushgateway + honor_labels: true + static_configs: + - targets: ['prometheus-pushgateway:9091'] diff --git a/src/main/resources/monitoring/push-gw-service-account.yaml b/src/main/resources/monitoring/push-gw-service-account.yaml index c223e65..823e410 100644 --- a/src/main/resources/monitoring/push-gw-service-account.yaml +++ b/src/main/resources/monitoring/push-gw-service-account.yaml @@ -3,6 +3,6 @@ kind: ServiceAccount metadata: labels: app.kubernetes.io/name: prometheus-pushgateway - name: x-prometheus-pushgateway + name: prometheus-pushgateway namespace: monitoring automountServiceAccountToken: true \ No newline at end of file From f123ca408df27a8b7682bf35d3d0493514876210 Mon Sep 17 00:00:00 2001 From: Michael Jerger <michael.jerger@meissa-gmbh.de> Date: Mon, 10 Mar 2025 16:54:04 +0100 Subject: [PATCH 5/9] add backup metrics --- .../cljc/dda/c4k_common/monitoring/monitoring_internal.cljc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/cljc/dda/c4k_common/monitoring/monitoring_internal.cljc b/src/main/cljc/dda/c4k_common/monitoring/monitoring_internal.cljc index bb99208..ec2a36b 100644 --- a/src/main/cljc/dda/c4k_common/monitoring/monitoring_internal.cljc +++ b/src/main/cljc/dda/c4k_common/monitoring/monitoring_internal.cljc @@ -61,7 +61,8 @@ "traefik_tls_certs_not_after") :kube-state-regex (str "kube_pod_container_status_restarts_total|" "kube_pod_status_reason|kube_node_status_capacity|kube_node_status_allocatable|" - "kube_cronjob_status_active|kube_job_status_failed")}) + "kube_cronjob_status_active|kube_job_status_failed") + :backup-regex (str "backup_*")}) (def filter-regex-string (str/join "|" (vals metric-regex))) From 5b57ff4c3f033f0572b4c903eb19180796bb407a Mon Sep 17 00:00:00 2001 From: Michael Jerger <michael.jerger@meissa-gmbh.de> Date: Tue, 11 Mar 2025 16:21:30 +0100 Subject: [PATCH 6/9] forward backup metrics --- .../cljc/dda/c4k_common/monitoring/monitoring_internal.cljc | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/cljc/dda/c4k_common/monitoring/monitoring_internal.cljc b/src/main/cljc/dda/c4k_common/monitoring/monitoring_internal.cljc index ec2a36b..20efb51 100644 --- a/src/main/cljc/dda/c4k_common/monitoring/monitoring_internal.cljc +++ b/src/main/cljc/dda/c4k_common/monitoring/monitoring_internal.cljc @@ -61,8 +61,7 @@ "traefik_tls_certs_not_after") :kube-state-regex (str "kube_pod_container_status_restarts_total|" "kube_pod_status_reason|kube_node_status_capacity|kube_node_status_allocatable|" - "kube_cronjob_status_active|kube_job_status_failed") - :backup-regex (str "backup_*")}) + "kube_cronjob_status_active|kube_job_.*")}) (def filter-regex-string (str/join "|" (vals metric-regex))) From 54fcc08d1b02c6a38e435e673a142f62bba9766e Mon Sep 17 00:00:00 2001 From: Michael Jerger <michael.jerger@meissa-gmbh.de> Date: Tue, 11 Mar 2025 16:46:07 +0100 Subject: [PATCH 7/9] update monitoring versions --- .../resources/monitoring/kube-state-metrics-deployment.yaml | 4 +--- src/main/resources/monitoring/prometheus-deployment.yaml | 2 +- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/main/resources/monitoring/kube-state-metrics-deployment.yaml b/src/main/resources/monitoring/kube-state-metrics-deployment.yaml index 6c1b543..6633eb2 100644 --- a/src/main/resources/monitoring/kube-state-metrics-deployment.yaml +++ b/src/main/resources/monitoring/kube-state-metrics-deployment.yaml @@ -4,7 +4,6 @@ metadata: labels: app.kubernetes.io/component: exporter app.kubernetes.io/name: kube-state-metrics - app.kubernetes.io/version: 2.7.0 name: kube-state-metrics namespace: monitoring spec: @@ -17,13 +16,12 @@ spec: labels: app.kubernetes.io/component: exporter app.kubernetes.io/name: kube-state-metrics - app.kubernetes.io/version: 2.7.0 spec: serviceAccountName: kube-state-metrics automountServiceAccountToken: true containers: - name: kube-state-metrics - image: registry.k8s.io/kube-state-metrics/kube-state-metrics:v2.7.0 + image: registry.k8s.io/kube-state-metrics/kube-state-metrics:v2.15.0 livenessProbe: httpGet: path: /healthz diff --git a/src/main/resources/monitoring/prometheus-deployment.yaml b/src/main/resources/monitoring/prometheus-deployment.yaml index f961a0d..aec7587 100644 --- a/src/main/resources/monitoring/prometheus-deployment.yaml +++ b/src/main/resources/monitoring/prometheus-deployment.yaml @@ -19,7 +19,7 @@ spec: enableServiceLinks: true containers: - name: prometheus - image: "quay.io/prometheus/prometheus:v2.39.1" + image: "quay.io/prometheus/prometheus:v3.2.1" imagePullPolicy: "IfNotPresent" args: - --config.file=/etc/prometheus/prometheus.yaml From e9aab80843522cbb77016481af33cadaef8fbb20 Mon Sep 17 00:00:00 2001 From: Michael Jerger <michael.jerger@meissa-gmbh.de> Date: Tue, 11 Mar 2025 16:51:02 +0100 Subject: [PATCH 8/9] pyb dev now is green --- src/test/cljc/dda/c4k_common/namespace_test.cljc | 1 + 1 file changed, 1 insertion(+) diff --git a/src/test/cljc/dda/c4k_common/namespace_test.cljc b/src/test/cljc/dda/c4k_common/namespace_test.cljc index 5f1f2ca..2c150ca 100644 --- a/src/test/cljc/dda/c4k_common/namespace_test.cljc +++ b/src/test/cljc/dda/c4k_common/namespace_test.cljc @@ -4,6 +4,7 @@ :cljs [cljs.test :refer-macros [deftest is are testing run-tests]]) #?(:cljs [shadow.resource :as rc]) [clojure.spec.test.alpha :as st] + [dda.c4k-common.yaml :as yaml] [dda.c4k-common.namespace :as cut])) (st/instrument `cut/generate) From 69c3989cef03d6eb9d5f7cbb8c1ecf8de6e4f862 Mon Sep 17 00:00:00 2001 From: Michael Jerger <michael.jerger@meissa-gmbh.de> Date: Tue, 11 Mar 2025 16:53:06 +0100 Subject: [PATCH 9/9] ermove deprecated generate fkt --- src/main/cljc/dda/c4k_common/postgres.cljc | 14 -------------- src/test/cljc/dda/c4k_common/postgres_test.cljc | 4 ---- 2 files changed, 18 deletions(-) diff --git a/src/main/cljc/dda/c4k_common/postgres.cljc b/src/main/cljc/dda/c4k_common/postgres.cljc index 64f5fde..4ebc504 100644 --- a/src/main/cljc/dda/c4k_common/postgres.cljc +++ b/src/main/cljc/dda/c4k_common/postgres.cljc @@ -79,20 +79,6 @@ config)] (int/generate-service final-config))) - -(defn-spec ^{:deprecated "6.4.1"} generate seq? - "use generate-config and generate-auth instead" - [config pg-config? - auth pg-auth?] - (let [final-config (merge default-config - config)] - [(int/generate-secret final-config auth) - (int/generate-persistent-volume final-config) - (int/generate-configmap final-config) - (int/generate-pvc final-config) - (int/generate-deployment final-config) - (int/generate-service final-config)])) - (defn-spec generate-config seq? [config pg-config?] (let [final-config (merge default-config diff --git a/src/test/cljc/dda/c4k_common/postgres_test.cljc b/src/test/cljc/dda/c4k_common/postgres_test.cljc index 4e4cb5b..e0a853e 100644 --- a/src/test/cljc/dda/c4k_common/postgres_test.cljc +++ b/src/test/cljc/dda/c4k_common/postgres_test.cljc @@ -73,10 +73,6 @@ (deftest should-generate - (is (= 6 - (count (cut/generate {} - {:postgres-db-user "user" - :postgres-db-password "password"})))) (is (= 5 (count (cut/generate-config {})))) (is (= 1