Merge pull request 'add-push-gateway & remove deprecated fns' () from add-push-gateway into main

Reviewed-on: 
This commit is contained in:
jem 2025-03-11 16:02:00 +00:00
commit 01c395668f
15 changed files with 126 additions and 54 deletions

View file

@ -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"]

View file

@ -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

View file

@ -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))))))
@ -58,7 +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")})
"kube_cronjob_status_active|kube_job_.*")})
(def filter-regex-string
(str/join "|" (vals metric-regex)))

View file

@ -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)))

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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']

View file

@ -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: {}

View file

@ -0,0 +1,8 @@
apiVersion: v1
kind: ServiceAccount
metadata:
labels:
app.kubernetes.io/name: prometheus-pushgateway
name: prometheus-pushgateway
namespace: monitoring
automountServiceAccountToken: true

View file

@ -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

View file

@ -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)))))

View file

@ -2,10 +2,19 @@
(: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.yaml :as yaml]
[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 +24,11 @@
(is (= [{:apiVersion "v1"
:kind "Namespace"
:metadata {:name "myapp"}}]
(cut/generate {:namespace "myapp"}))))
(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"))))

View file

@ -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

View file

@ -0,0 +1,5 @@
apiVersion: v1
kind: Dummy
metadata:
name: dummy
namespace: default