Merge pull request 'add-push-gateway & remove deprecated fns' (#6) from add-push-gateway into main
Reviewed-on: #6
This commit is contained in:
commit
01c395668f
15 changed files with 126 additions and 54 deletions
project.clj
src
main
cljc/dda/c4k_common
resources/monitoring
test
cljc/dda/c4k_common
resources/namespace-test
|
@ -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"]
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)))
|
||||
|
|
|
@ -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)))
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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']
|
||||
|
|
52
src/main/resources/monitoring/push-gw-deployment.yaml
Normal file
52
src/main/resources/monitoring/push-gw-deployment.yaml
Normal 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: {}
|
|
@ -0,0 +1,8 @@
|
|||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
labels:
|
||||
app.kubernetes.io/name: prometheus-pushgateway
|
||||
name: prometheus-pushgateway
|
||||
namespace: monitoring
|
||||
automountServiceAccountToken: true
|
16
src/main/resources/monitoring/push-gw-service.yaml
Normal file
16
src/main/resources/monitoring/push-gw-service.yaml
Normal 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
|
|
@ -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)))))
|
||||
|
|
|
@ -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"))))
|
|
@ -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
|
||||
|
|
5
src/test/resources/namespace-test/dummy.yaml
Normal file
5
src/test/resources/namespace-test/dummy.yaml
Normal file
|
@ -0,0 +1,5 @@
|
|||
apiVersion: v1
|
||||
kind: Dummy
|
||||
metadata:
|
||||
name: dummy
|
||||
namespace: default
|
Loading…
Reference in a new issue