Compare commits
329
Commits
0.1.5
...
d52d7d47b8
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d52d7d47b8
|
||
|
|
b1e6b03b16 | ||
|
|
b84297510b
|
||
|
|
68473be922
|
||
|
|
ee2bdc36c3
|
||
|
|
854e710a8d
|
||
|
|
e5080692f0 | ||
|
|
80588aa282 | ||
|
|
34989671a1
|
||
|
|
98ba315ab6
|
||
|
|
0371e256ed | ||
|
|
bc8f30b03b
|
||
|
|
bbdba0d422 | ||
|
|
0bce1142e5
|
||
|
|
db0900ed11 | ||
|
|
99f42f6b92
|
||
|
|
7c54e3f064
|
||
|
|
b23e3bda39
|
||
|
|
950c3377c1
|
||
|
|
9431c03768 | ||
|
|
3cb5f0ff4b
|
||
|
|
16fc04383d
|
||
|
|
38e667d6dd
|
||
|
|
5e24c3441e
|
||
|
|
091cb11776
|
||
|
|
b0ea947cec
|
||
|
|
43d662633d
|
||
|
|
b79d123578 | ||
|
|
225b1fdcd6
|
||
|
|
ce2c4845cd | ||
|
|
4494b791ad
|
||
|
|
1c7405d3ff | ||
|
|
c005e8e85a | ||
|
|
192fee8ad1 | ||
|
|
a8352d49a2
|
||
|
|
7ec8818251 | ||
|
|
78eddb620b
|
||
|
|
69f1f21cc4 | ||
|
|
d2c55a47cc | ||
|
|
ca601f58ce | ||
|
|
a134e73b2d
|
||
|
|
546c88b00c
|
||
|
|
51eed9551e
|
||
|
|
d78cd3b588 | ||
|
|
6ed084068f
|
||
|
|
e47e0bca53 | ||
|
|
32aad62e1d
|
||
|
|
5d64ff0b74 | ||
|
|
819a618c92
|
||
|
|
74bb5d640f | ||
|
|
d4fdbdc0c0
|
||
|
|
06a7fa1800 | ||
|
|
c1633833b4
|
||
|
|
ad6eaca5cd | ||
|
|
2c0de2c182
|
||
|
|
1656466bbe | ||
|
|
56379bd8b4
|
||
|
|
42d220e91c | ||
|
|
8daa6587a2
|
||
|
|
b6cc99d7b4
|
||
|
|
5cd92b6328
|
||
|
|
c9b96f3f13 | ||
|
|
5abe12ebdd
|
||
|
|
991d7d8138
|
||
|
|
5265389f5b
|
||
|
|
93b652bb15
|
||
|
|
9ff09361eb | ||
|
|
1aa3b86ecc
|
||
|
|
cb73c168f7 | ||
|
|
da43196b18 | ||
|
|
a8dab251b5
|
||
|
|
4936091445
|
||
|
|
c6fe40e32d
|
||
|
|
2a396c1993
|
||
|
|
af9a2e7f2d
|
||
|
|
d65c48b880
|
||
|
|
bec440645b
|
||
|
|
873b7d9a5e
|
||
|
|
96c6b03827 | ||
|
|
89f7ae973c
|
||
|
|
166ecce210 | ||
|
|
814d2ef609
|
||
|
|
b752824ebb | ||
|
|
d3a1b0f2b2
|
||
|
|
944d7ae72b | ||
|
|
04213233a6
|
||
|
|
6e4bf9c2f1 | ||
|
|
0db2f82524
|
||
|
|
f30ffa3054 | ||
|
|
1871edd53f
|
||
|
|
654b6c400d | ||
|
|
a4bab39b93
|
||
|
|
4fc6c58575
|
||
|
|
23931df4e2 | ||
|
|
0f427bc5b2 | ||
|
|
42c3ef84a4 | ||
|
|
8fa979a093 | ||
|
|
970581cc3d | ||
|
|
f34adfad97
|
||
|
|
90cbc57fee
|
||
|
|
d809667060
|
||
|
|
b1aa192fac
|
||
|
|
23543bb913
|
||
|
|
ea979d746f | ||
|
|
718e34749c
|
||
|
|
6851b0b9a5 | ||
|
|
e9caa4df02
|
||
|
|
4997fe998e | ||
|
|
d70de74355 | ||
|
|
fbced2f1e8
|
||
|
|
2594218173
|
||
|
|
fe8a32e605 | ||
|
|
11680e0cad
|
||
|
|
7165a32989 | ||
|
|
e860a54d92
|
||
|
|
f72e7328db | ||
|
|
035195c35d
|
||
|
|
847097c8ff | ||
|
|
25ea6e68eb
|
||
|
|
0f5ae6717f | ||
|
|
0d37fd8cfd
|
||
|
|
84b76cd381 | ||
|
|
679f2f916c
|
||
|
|
2b74827332
|
||
|
|
0674569892
|
||
|
|
b744ee15a6 | ||
|
|
1adef6e93b
|
||
|
|
0dbb71c60b
|
||
|
|
27f16e7b25 | ||
|
|
f5e0192f11
|
||
|
|
654920be33 | ||
|
|
e860cfafac
|
||
|
|
4522979444 | ||
|
|
598b9aba58
|
||
|
|
b4b0a4729e
|
||
|
|
b07a2f79a4
|
||
|
|
d77fe9866e | ||
|
|
e4c065d7e0
|
||
|
|
395407a398 | ||
|
|
2a22faff0d | ||
|
|
a93403c97f
|
||
|
|
177307f228
|
||
|
|
e70e7785a7 | ||
|
|
18ae53edef
|
||
|
|
a773bea18f | ||
|
|
bf5ddf5404
|
||
|
|
c30947c2e0 | ||
|
|
3e8e43562a | ||
|
|
a21a4e1c88
|
||
|
|
3289aeba32
|
||
|
|
c97b1d15f6
|
||
|
|
3af39e8ef5 | ||
|
|
ac2dca69bf
|
||
|
|
902be3a9aa
|
||
|
|
7f7972d570 | ||
|
|
c6b2748556 | ||
|
|
4f8ff6ee76
|
||
|
|
99e3a3053e
|
||
|
|
670233397e | ||
|
|
f8bf338d8b | ||
|
|
ad18974807
|
||
|
|
1ade590485
|
||
|
|
c6c0b7f92c | ||
|
|
30c1da211e | ||
|
|
674f8004d6
|
||
|
|
94c2e05d2a
|
||
|
|
de3562bb18 | ||
|
|
ada81c050a | ||
|
|
0d82de2e3b
|
||
|
|
54b64a7854
|
||
|
|
1254320443 | ||
|
|
a5bc7a1287
|
||
|
|
95ef4db607 | ||
|
|
8ee8078a54 | ||
|
|
7d62a9cc15
|
||
|
|
5f2273bfd1
|
||
|
|
a285c66ce9 | ||
|
|
699ff80a36
|
||
|
|
e84a57456a
|
||
|
|
3c8a92fb04
|
||
|
|
c4b9990c2d
|
||
|
|
4a03723386
|
||
|
|
62f0815a3b
|
||
|
|
c669330a80
|
||
|
|
f05dd2d8bf
|
||
|
|
c8ee5ce6be
|
||
|
|
fc5f3c03da
|
||
|
|
add1ff75a7
|
||
|
|
63f409ecdb
|
||
|
|
07653e9933
|
||
|
|
60efba2603
|
||
|
|
e9053be636
|
||
|
|
0001791071 | ||
|
|
c1529d6833
|
||
|
|
b7c5764e1b
|
||
|
|
e0dfced491
|
||
|
|
9c89db23f3
|
||
|
|
cf5e67b252
|
||
|
|
70e0e5110f
|
||
|
|
31931cc838
|
||
|
|
a49a432605
|
||
|
|
5bd349472c
|
||
|
|
21e608389f
|
||
|
|
39c064c8b4
|
||
|
|
975eaa0d5d
|
||
|
|
dff777e6de
|
||
|
|
6c683afcc6
|
||
|
|
113a4b76c9
|
||
|
|
2821f844b0
|
||
|
|
c912bc729e
|
||
|
|
448ab03ab2
|
||
|
|
bb2da8f33f | ||
|
|
cb548921a6
|
||
|
|
46bceb7e4d
|
||
|
|
3c8fb86231
|
||
|
|
0cf63593e9
|
||
|
|
81fb535128
|
||
|
|
e5b0965373 | ||
|
|
40712d3c7f
|
||
|
|
1ebde5500d
|
||
|
|
99ac3e0b6b
|
||
|
|
3cea56ef58
|
||
|
|
608ded18c7
|
||
|
|
d62cc4beae
|
||
|
|
89ef3c929e
|
||
|
|
9840520b71
|
||
|
|
3940ea39c5
|
||
|
|
a6ec076ce6
|
||
|
|
12970b3820
|
||
|
|
dbd6b83218
|
||
|
|
e466c50e35
|
||
|
|
19d683d712
|
||
|
|
69f068c406
|
||
|
|
1edd96e3e1
|
||
|
|
80819f16ef
|
||
|
|
3dcb8173e3
|
||
|
|
5c20ed5f31
|
||
|
|
39534a06dc
|
||
|
|
34b5e27456
|
||
|
|
74b6ddf46d
|
||
|
|
7323ba09bf
|
||
|
|
3f4c459d43
|
||
|
|
304139cb6d | ||
|
|
08ca70c65c
|
||
|
|
6f954dfdf6
|
||
|
|
b88ae944e6
|
||
|
|
29b908f8da
|
||
|
|
76134921b8 | ||
|
|
7ebfd12593
|
||
|
|
74ef3835f4
|
||
|
|
80c8ff0d3b
|
||
|
|
de379ec1ef
|
||
|
|
9275bca045
|
||
|
|
a33f92e63d
|
||
|
|
db3fbb9497
|
||
|
|
4d349c36ff
|
||
|
|
a3038a75c8
|
||
|
|
c497a31ecc
|
||
|
|
c7a07eb7d1
|
||
|
|
4b19f57ac5
|
||
|
|
310cdfaffe
|
||
|
|
8c2665fdc6
|
||
|
|
bb9d71d233
|
||
|
|
ded6c55521
|
||
|
|
b3a9ddd487
|
||
|
|
f87d417e73
|
||
|
|
fb218484d0
|
||
|
|
b29f79370c
|
||
|
|
814dd01995
|
||
|
|
75292a54ca | ||
|
|
744e0141e4
|
||
|
|
cc61720a11
|
||
|
|
90d48f8450
|
||
|
|
ad69f02f8f
|
||
|
|
3ea3f94429
|
||
|
|
11c58d99fa
|
||
|
|
2958540cf7
|
||
|
|
b0a16dc214
|
||
|
|
2a04fb1966
|
||
|
|
fcf64a215d
|
||
|
|
2b6f0dbda4
|
||
|
|
93884a4f51
|
||
|
|
42ca0a7370
|
||
|
|
a4875f9488
|
||
|
|
a976273cbc
|
||
|
|
5646ebfa8c
|
||
|
|
4a4650cdc2
|
||
|
|
b73455b657
|
||
|
|
79062bc1c3
|
||
|
|
3b0a815203
|
||
|
|
ffa8271684
|
||
|
|
f59f6aa94d
|
||
|
|
ce4065bda8
|
||
|
|
1581617daf
|
||
|
|
a3e4c0c0e7
|
||
|
|
2e8bc16f1e
|
||
|
|
a07c602c44
|
||
|
|
b96736bc69
|
||
|
|
4cd6988b38
|
||
|
|
b5fc1b7575
|
||
|
|
316b9b236b
|
||
|
|
5bf8a132eb
|
||
|
|
489c616e9a
|
||
|
|
631bd72480
|
||
|
|
33cf9e8fc0
|
||
|
|
e462e5a002
|
||
|
|
76ec5a66ff | ||
|
|
686e43668c
|
||
|
|
7ce70de51c
|
||
|
|
3434c5a737
|
||
|
|
1e9aeb802d
|
||
|
|
2e9eae9888
|
||
|
|
0dcea5cfc4
|
||
|
|
e38c4fbdfe
|
||
|
|
0a4d677938
|
||
|
|
171d9a695e
|
||
|
|
853c65a8ef | ||
|
|
c93c4dd4eb
|
||
|
|
4105bb9e0f
|
||
|
|
7ea826a2a1
|
||
|
|
aa8c279fe0
|
||
|
|
dfd4c1f991
|
||
|
|
d6c2e4f992
|
||
|
|
ae7652a335
|
||
|
|
16cfa36fda
|
||
|
|
94fbc5e38f
|
||
|
|
dcc7bae921
|
||
|
|
503c622df5
|
||
|
|
bf9bd4853f
|
No files matched your search
-208
@@ -1,208 +0,0 @@
|
||||
---
|
||||
kind: pipeline
|
||||
type: kubernetes
|
||||
name: Linters
|
||||
|
||||
clone:
|
||||
disable: true
|
||||
|
||||
platform:
|
||||
os: linux
|
||||
arch: amd64
|
||||
|
||||
steps:
|
||||
- name: clone repository
|
||||
image: git.cryptic.systems/volker.raschek/git:1.4.0
|
||||
|
||||
- name: helm lint
|
||||
commands:
|
||||
- helm lint
|
||||
image: git.cryptic.systems/volker.raschek/helm:3.16.1
|
||||
resources:
|
||||
limits:
|
||||
cpu: 150
|
||||
memory: 150M
|
||||
|
||||
- name: markdown lint
|
||||
commands:
|
||||
- markdownlint *.md
|
||||
image: git.cryptic.systems/volker.raschek/markdownlint:0.42.0
|
||||
resources:
|
||||
limits:
|
||||
cpu: 150
|
||||
memory: 150M
|
||||
|
||||
- name: email-notification
|
||||
environment:
|
||||
SMTP_FROM_ADDRESS:
|
||||
from_secret: smtp_from_address
|
||||
SMTP_FROM_NAME:
|
||||
from_secret: smtp_from_name
|
||||
SMTP_HOST:
|
||||
from_secret: smtp_host
|
||||
SMTP_USERNAME:
|
||||
from_secret: smtp_username
|
||||
SMTP_PASSWORD:
|
||||
from_secret: smtp_password
|
||||
image: git.cryptic.systems/volker.raschek/drone-email:0.1.5
|
||||
resources:
|
||||
limits:
|
||||
cpu: 150
|
||||
memory: 150M
|
||||
when:
|
||||
status:
|
||||
- changed
|
||||
- failure
|
||||
|
||||
trigger:
|
||||
event:
|
||||
exclude:
|
||||
- tag
|
||||
|
||||
---
|
||||
kind: pipeline
|
||||
type: kubernetes
|
||||
name: Unit tests
|
||||
|
||||
clone:
|
||||
disable: true
|
||||
|
||||
platform:
|
||||
os: linux
|
||||
arch: amd64
|
||||
|
||||
steps:
|
||||
- name: clone repository
|
||||
image: git.cryptic.systems/volker.raschek/git:1.4.0
|
||||
|
||||
- name: helm unittest
|
||||
commands:
|
||||
- helm unittest --strict --file 'unittests/**/*.yaml' ./
|
||||
image: git.cryptic.systems/volker.raschek/helm:3.16.1
|
||||
resources:
|
||||
limits:
|
||||
cpu: 150
|
||||
memory: 150M
|
||||
|
||||
- name: email-notification
|
||||
environment:
|
||||
SMTP_FROM_ADDRESS:
|
||||
from_secret: smtp_from_address
|
||||
SMTP_FROM_NAME:
|
||||
from_secret: smtp_from_name
|
||||
SMTP_HOST:
|
||||
from_secret: smtp_host
|
||||
SMTP_USERNAME:
|
||||
from_secret: smtp_username
|
||||
SMTP_PASSWORD:
|
||||
from_secret: smtp_password
|
||||
image: git.cryptic.systems/volker.raschek/drone-email:0.1.5
|
||||
resources:
|
||||
limits:
|
||||
cpu: 150
|
||||
memory: 150M
|
||||
when:
|
||||
status:
|
||||
- changed
|
||||
- failure
|
||||
|
||||
trigger:
|
||||
event:
|
||||
exclude:
|
||||
- tag
|
||||
|
||||
---
|
||||
kind: pipeline
|
||||
type: kubernetes
|
||||
name: Generate README.md
|
||||
|
||||
clone:
|
||||
disable: true
|
||||
|
||||
platform:
|
||||
os: linux
|
||||
arch: amd64
|
||||
|
||||
steps:
|
||||
- name: clone repository
|
||||
image: git.cryptic.systems/volker.raschek/git:1.4.0
|
||||
|
||||
- name: generate README
|
||||
commands:
|
||||
- npm install
|
||||
- npm run readme:parameters
|
||||
- npm run readme:lint
|
||||
image: docker.io/library/node:22.11.0-alpine
|
||||
resources:
|
||||
limits:
|
||||
cpu: 150
|
||||
memory: 150M
|
||||
|
||||
- name: detect diff
|
||||
commands:
|
||||
- git diff --exit-code --name-only README.md
|
||||
image: git.cryptic.systems/volker.raschek/git:1.4.0
|
||||
|
||||
- name: email-notification
|
||||
environment:
|
||||
SMTP_FROM_ADDRESS:
|
||||
from_secret: smtp_from_address
|
||||
SMTP_FROM_NAME:
|
||||
from_secret: smtp_from_name
|
||||
SMTP_HOST:
|
||||
from_secret: smtp_host
|
||||
SMTP_USERNAME:
|
||||
from_secret: smtp_username
|
||||
SMTP_PASSWORD:
|
||||
from_secret: smtp_password
|
||||
image: git.cryptic.systems/volker.raschek/drone-email:0.1.5
|
||||
resources:
|
||||
limits:
|
||||
cpu: 150
|
||||
memory: 150M
|
||||
when:
|
||||
status:
|
||||
- changed
|
||||
- failure
|
||||
|
||||
trigger:
|
||||
event:
|
||||
exclude:
|
||||
- tag
|
||||
|
||||
---
|
||||
kind: pipeline
|
||||
type: kubernetes
|
||||
name: Release
|
||||
|
||||
clone:
|
||||
disable: true
|
||||
|
||||
platform:
|
||||
os: linux
|
||||
|
||||
steps:
|
||||
- name: clone repository
|
||||
image: git.cryptic.systems/volker.raschek/git:1.4.0
|
||||
|
||||
- name: release-helm-chart
|
||||
commands:
|
||||
- helm repo add prometheus-exporters https://charts.cryptic.systems/prometheus-exporters
|
||||
- helm package --version ${DRONE_TAG} .
|
||||
- helm cm-push ${DRONE_REPO_NAME}-${DRONE_TAG}.tgz prometheus-exporters
|
||||
environment:
|
||||
HELM_REPO_PASSWORD:
|
||||
from_secret: helm_repo_password
|
||||
HELM_REPO_USERNAME:
|
||||
from_secret: helm_repo_username
|
||||
image: git.cryptic.systems/volker.raschek/helm:3.16.1
|
||||
resources:
|
||||
limits:
|
||||
cpu: 150
|
||||
memory: 150M
|
||||
|
||||
trigger:
|
||||
event:
|
||||
- tag
|
||||
repo:
|
||||
- volker.raschek/prometheus-postgres-exporter
|
||||
Executable
+125
@@ -0,0 +1,125 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e -o pipefail
|
||||
|
||||
chart_file="Chart.yaml"
|
||||
if [ ! -f "${chart_file}" ]; then
|
||||
echo "ERROR: ${chart_file} not found!" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
default_new_tag="$(git tag --sort=-version:refname | head -n 1)"
|
||||
default_old_tag="$(git tag --sort=-version:refname | head -n 2 | tail -n 1)"
|
||||
|
||||
if [ -z "${1}" ]; then
|
||||
echo "Enter start tag [${default_old_tag}]:"
|
||||
read -r old_tag
|
||||
if [ -z "${old_tag}" ]; then
|
||||
old_tag="${default_old_tag}"
|
||||
fi
|
||||
|
||||
while [ -z "$(git tag --list "${old_tag}")" ]; do
|
||||
echo "ERROR: Tag '${old_tag}' not found!" 1>&2
|
||||
echo "Enter start tag [${default_old_tag}]:"
|
||||
read -r old_tag
|
||||
if [ -z "${old_tag}" ]; then
|
||||
old_tag="${default_old_tag}"
|
||||
fi
|
||||
done
|
||||
else
|
||||
old_tag=${1}
|
||||
if [ -z "$(git tag --list "${old_tag}")" ]; then
|
||||
echo "ERROR: Tag '${old_tag}' not found!" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -z "${2}" ]; then
|
||||
echo "Enter end tag [${default_new_tag}]:"
|
||||
read -r new_tag
|
||||
if [ -z "${new_tag}" ]; then
|
||||
new_tag="${default_new_tag}"
|
||||
fi
|
||||
|
||||
while [ -z "$(git tag --list "${new_tag}")" ]; do
|
||||
echo "ERROR: Tag '${new_tag}' not found!" 1>&2
|
||||
echo "Enter end tag [${default_new_tag}]:"
|
||||
read -r new_tag
|
||||
if [ -z "${new_tag}" ]; then
|
||||
new_tag="${default_new_tag}"
|
||||
fi
|
||||
done
|
||||
else
|
||||
new_tag=${2}
|
||||
|
||||
if [ -z "$(git tag --list "${new_tag}")" ]; then
|
||||
echo "ERROR: Tag '${new_tag}' not found!" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
change_log_yaml=$(mktemp)
|
||||
echo "[]" > "${change_log_yaml}"
|
||||
|
||||
function map_type_to_kind() {
|
||||
case "${1}" in
|
||||
feat)
|
||||
echo "added"
|
||||
;;
|
||||
fix)
|
||||
echo "fixed"
|
||||
;;
|
||||
chore|style|test|ci|docs|refac)
|
||||
echo "changed"
|
||||
;;
|
||||
revert)
|
||||
echo "removed"
|
||||
;;
|
||||
sec)
|
||||
echo "security"
|
||||
;;
|
||||
*)
|
||||
echo "skip"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
commit_titles="$(git log --pretty=format:"%s" "${old_tag}..${new_tag}")"
|
||||
|
||||
echo "INFO: Generate change log entries from ${old_tag} until ${new_tag}"
|
||||
|
||||
while IFS= read -r line; do
|
||||
if [[ "${line}" =~ ^([a-zA-Z]+)(\([^\)]+\))?\:\ (.+)$ ]]; then
|
||||
type="${BASH_REMATCH[1]}"
|
||||
kind=$(map_type_to_kind "${type}")
|
||||
|
||||
if [ "${kind}" == "skip" ]; then
|
||||
continue
|
||||
fi
|
||||
|
||||
desc="${BASH_REMATCH[3]}"
|
||||
|
||||
echo "- ${kind}: ${desc}"
|
||||
|
||||
jq --arg kind "${kind}" --arg description "${desc}" '. += [ $ARGS.named ]' < "${change_log_yaml}" > "${change_log_yaml}.new"
|
||||
mv "${change_log_yaml}.new" "${change_log_yaml}"
|
||||
|
||||
fi
|
||||
done <<< "${commit_titles}"
|
||||
|
||||
if [ -s "${change_log_yaml}" ]; then
|
||||
yq --inplace --input-format json --output-format yml "${change_log_yaml}"
|
||||
yq --no-colors --inplace ".annotations.\"artifacthub.io/changes\" |= loadstr(\"${change_log_yaml}\") | sort_keys(.)" "${chart_file}"
|
||||
else
|
||||
echo "ERROR: Changelog file is empty: ${change_log_yaml}" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
rm "${change_log_yaml}"
|
||||
|
||||
regexp=".*-alpha-[0-9]+(\.[0-9]+){,2}$"
|
||||
if [[ "${new_tag}" =~ $regexp ]]; then
|
||||
yq --inplace '.annotations."artifacthub.io/prerelease" = "true"' "${chart_file}"
|
||||
else
|
||||
yq --inplace '.annotations."artifacthub.io/prerelease" = "false"' "${chart_file}"
|
||||
fi
|
||||
@@ -0,0 +1,41 @@
|
||||
name: Upload ArtifactHub Metadata
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: '0 3 1 * *'
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
upload-metadata:
|
||||
name: "Upload artifacthub-repo.yml to OCI registry"
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v6.0.3
|
||||
- uses: docker/login-action@v4.2.0
|
||||
with:
|
||||
registry: ${{ github.server_url }}
|
||||
username: ${{ github.repository_owner }}
|
||||
password: ${{ secrets.GIT_CRYPTIC_SYSTEMS_PACKAGE_REGISTRY_TOKEN }}
|
||||
- uses: oras-project/setup-oras@v2.0.0
|
||||
with:
|
||||
version: 1.3.2 # renovate: datasource=github-tags depName=oras-project/oras extractVersion='^v?(?<version>.*)$'
|
||||
- name: Extract meta information
|
||||
run: |
|
||||
echo "GITEA_SERVER_HOSTNAME=$(echo "${GITHUB_SERVER_URL}" | cut -d '/' -f 3)" >> $GITHUB_ENV
|
||||
echo "PACKAGE_VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV
|
||||
echo "REPOSITORY_NAME=$(echo ${GITHUB_REPOSITORY} | cut -d '/' -f 2 | sed --regexp-extended 's/-charts?//g')" >> $GITHUB_ENV
|
||||
echo "REPOSITORY_OWNER=$(echo ${GITHUB_REPOSITORY} | cut -d '/' -f 1)" >> $GITHUB_ENV
|
||||
- name: Push artifacthub-repo.yml
|
||||
run: |
|
||||
oras push ${GITEA_SERVER_HOSTNAME}/${REPOSITORY_OWNER}/${REPOSITORY_NAME}:artifacthub.io \
|
||||
--config /dev/null:application/vnd.cncf.artifacthub.config.v1+yaml \
|
||||
artifacthub-repo.yml:application/vnd.cncf.artifacthub.repository-metadata.layer.v1.yaml
|
||||
- name: Push public cosign key
|
||||
env:
|
||||
COSIGN_PUBLIC_KEY: ${{ vars.COSIGN_PUBLIC_KEY }}
|
||||
run: |
|
||||
echo "${COSIGN_PUBLIC_KEY}" > cosign.pub
|
||||
oras push ${GITEA_SERVER_HOSTNAME}/${REPOSITORY_OWNER}/${REPOSITORY_NAME}:cosign.pub \
|
||||
--artifact-type application/vnd.dev.cosign.public-key.v1 \
|
||||
--annotation org.opencontainers.image.title=cosign.pub \
|
||||
cosign.pub:application/vnd.dev.cosign.public-key.v1
|
||||
@@ -0,0 +1,31 @@
|
||||
name: Generate README
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
paths: [ "README.md", "values.yaml" ]
|
||||
types: [ "opened", "reopened", "synchronize" ]
|
||||
push:
|
||||
branches:
|
||||
- '**'
|
||||
paths: [ "README.md", "values.yaml" ]
|
||||
tags-ignore:
|
||||
- '**'
|
||||
workflow_dispatch: {}
|
||||
|
||||
jobs:
|
||||
generate-parameters:
|
||||
container:
|
||||
image: docker.io/library/node:25.9.0-alpine
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Install tooling
|
||||
run: |
|
||||
apk update
|
||||
apk add git npm
|
||||
- uses: actions/checkout@v6.0.3
|
||||
- name: Generate parameter section in README
|
||||
run: |
|
||||
npm install
|
||||
npm run readme:parameters
|
||||
- name: Compare diff
|
||||
run: git diff --exit-code --name-only README.md
|
||||
@@ -0,0 +1,37 @@
|
||||
name: Helm
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
types: [ "opened", "reopened", "synchronize" ]
|
||||
push:
|
||||
branches:
|
||||
- '**'
|
||||
tags-ignore:
|
||||
- '**'
|
||||
workflow_dispatch: {}
|
||||
|
||||
jobs:
|
||||
helm-lint:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v6.0.3
|
||||
- uses: azure/setup-helm@v5.0.0
|
||||
with:
|
||||
version: "v4.1.4" # renovate: datasource=github-tags depName=helm/helm
|
||||
- name: Lint helm files
|
||||
run: |
|
||||
helm lint --values values.yaml .
|
||||
|
||||
helm-unittest:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v6.0.3
|
||||
- uses: azure/setup-helm@v5.0.0
|
||||
with:
|
||||
version: "v4.1.4" # renovate: datasource=github-tags depName=helm/helm
|
||||
- env:
|
||||
HELM_UNITTEST_VERSION: v1.0.0 #renovate: datasource=github-releases depName=helm-unittest/helm-unittest
|
||||
name: Install helm-unittest
|
||||
run: helm plugin install --verify=false --version "${HELM_UNITTEST_VERSION}" https://github.com/helm-unittest/helm-unittest
|
||||
- name: Execute helm unittests
|
||||
run: helm unittest --strict --file 'unittests/**/*.yaml' .
|
||||
@@ -0,0 +1,44 @@
|
||||
name: Markdown linter
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
paths: [ "**/*.md" ]
|
||||
types: [ "opened", "reopened", "synchronize" ]
|
||||
push:
|
||||
branches:
|
||||
- '**'
|
||||
paths: [ "**/*.md" ]
|
||||
tags-ignore:
|
||||
- '**'
|
||||
workflow_dispatch: {}
|
||||
|
||||
jobs:
|
||||
markdown-link-checker:
|
||||
container:
|
||||
image: docker.io/library/node:25.9.0-alpine
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Install tooling
|
||||
run: |
|
||||
apk update
|
||||
apk add git npm
|
||||
- uses: actions/checkout@v6.0.3
|
||||
- name: Verify links in markdown files
|
||||
run: |
|
||||
npm install
|
||||
npm run readme:link
|
||||
|
||||
markdown-lint:
|
||||
container:
|
||||
image: docker.io/library/node:25.9.0-alpine
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Install tooling
|
||||
run: |
|
||||
apk update
|
||||
apk add git
|
||||
- uses: actions/checkout@v6.0.3
|
||||
- name: Lint markdown files
|
||||
run: |
|
||||
npm install
|
||||
npm run readme:lint
|
||||
@@ -0,0 +1,163 @@
|
||||
name: Release
|
||||
|
||||
env:
|
||||
GPG_PRIVATE_KEY_FILE: ${{ runner.temp }}/private.key
|
||||
GPG_PRIVATE_KEY_FINGERPRINT: ${{ vars.GPG_PRIVATE_KEY_FINGERPRINT }}
|
||||
GPG_PRIVATE_KEY_PASSPHRASE_FILE: ${{ runner.temp }}/passphrase.txt
|
||||
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- "**"
|
||||
|
||||
jobs:
|
||||
publish-chart:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: volker-raschek/cosign-installer@v4.1.2-rc4
|
||||
with:
|
||||
cosign-release: "v3.1.0" # renovate: datasource=github-tags depName=sigstore/cosign
|
||||
|
||||
- uses: azure/setup-helm@v5.0.0
|
||||
with:
|
||||
version: "v4.1.4" # renovate: datasource=github-tags depName=helm/helm
|
||||
|
||||
- name: Install helm plugins
|
||||
env:
|
||||
HELM_SIGSTORE_VERSION: "0.3.0" # renovate: datasource=github-tags depName=sigstore/helm-sigstore extractVersion='^v(?<version>\d+\.\d+\.\d+)$'
|
||||
HELM_SCHEMA_VALUES_VERSION: "2.4.0" # renovate: datasource=github-tags depName=losisin/helm-values-schema-json extractVersion='^v(?<version>\d+\.\d+\.\d+)$'
|
||||
HELM_UNITTEST_VERSION: "1.1.1" # renovate: datasource=github-tags depName=helm-unittest/helm-unittest extractVersion='^v(?<version>\d+\.\d+\.\d+)$'
|
||||
run: |
|
||||
helm plugin install --verify=false https://github.com/sigstore/helm-sigstore.git --version "${HELM_SIGSTORE_VERSION}" 1> /dev/null
|
||||
helm plugin install --verify=false https://github.com/losisin/helm-values-schema-json.git --version "${HELM_SCHEMA_VALUES_VERSION}" 1> /dev/null
|
||||
helm plugin install --verify=false https://github.com/helm-unittest/helm-unittest.git --version "${HELM_UNITTEST_VERSION}" 1> /dev/null
|
||||
helm plugin list
|
||||
|
||||
- name: GPG configuration
|
||||
env:
|
||||
GPG_PRIVATE_KEY_PASSPHRASE: ${{ secrets.GPG_PRIVATE_KEY_PASSPHRASE }}
|
||||
GPG_PRIVATE_KEY: ${{ secrets.GPG_PRIVATE_KEY }}
|
||||
run: |
|
||||
# Configure GPG and GPG Agent
|
||||
mkdir --parents "${HOME}/.gnupg"
|
||||
chmod 0700 "${HOME}/.gnupg"
|
||||
|
||||
cat > "${HOME}/.gnupg/gpg.conf" <<EOF
|
||||
use-agent
|
||||
pinentry-mode loopback
|
||||
EOF
|
||||
|
||||
cat > "${HOME}/.gnupg/gpg-agent.conf" <<EOF
|
||||
allow-loopback-pinentry
|
||||
max-cache-ttl 86400
|
||||
default-cache-ttl 86400
|
||||
EOF
|
||||
|
||||
gpgconf --kill gpg-agent
|
||||
gpgconf --launch gpg-agent
|
||||
|
||||
# Import GPG private key
|
||||
cat 1> "${GPG_PRIVATE_KEY_PASSPHRASE_FILE}" <<< "${GPG_PRIVATE_KEY_PASSPHRASE}"
|
||||
cat 1> "${GPG_PRIVATE_KEY_FILE}" <<< "${GPG_PRIVATE_KEY}"
|
||||
gpg --batch --yes --passphrase-fd 0 --import "${GPG_PRIVATE_KEY_FILE}" <<< "${GPG_PRIVATE_KEY_PASSPHRASE}"
|
||||
|
||||
# Export GPG keyring
|
||||
gpg --batch --yes --export "${GPG_PRIVATE_KEY_FINGERPRINT}" 1> "${HOME}/.gnupg/pubring.gpg"
|
||||
gpg --batch --yes --passphrase-fd 0 --export-secret-keys "${GPG_PRIVATE_KEY_FINGERPRINT}" 1> "${HOME}/.gnupg/secring.gpg" <<< "${GPG_PRIVATE_KEY_PASSPHRASE}"
|
||||
|
||||
- uses: actions/checkout@v6.0.3
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Add Artifacthub.io annotations
|
||||
run: |
|
||||
NEW_TAG="$(git tag --sort=-version:refname | head -n 1)"
|
||||
OLD_TAG="$(git tag --sort=-version:refname | head -n 2 | tail -n 1)"
|
||||
.gitea/scripts/add-annotations.sh "${OLD_TAG}" "${NEW_TAG}"
|
||||
|
||||
- name: Extract meta information
|
||||
run: |
|
||||
echo "GITEA_SERVER_HOSTNAME=$(echo "${GITHUB_SERVER_URL}" | cut --delimiter '/' --fields 3)" >> $GITHUB_ENV
|
||||
echo "PACKAGE_VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV
|
||||
echo "REPOSITORY_NAME=$(echo ${GITHUB_REPOSITORY} | cut --delimiter '/' --fields 2 | sed --regexp-extended 's/-charts?//g')" >> $GITHUB_ENV
|
||||
echo "REPOSITORY_OWNER=$(echo ${GITHUB_REPOSITORY} | cut --delimiter '/' --fields 1)" >> $GITHUB_ENV
|
||||
|
||||
- name: Update Helm Chart version in README.md
|
||||
run: sed -i -E "s/^CHART_VERSION=.*/CHART_VERSION=${PACKAGE_VERSION}/g" README.md
|
||||
|
||||
- name: Package chart
|
||||
run: |
|
||||
helm dependency build
|
||||
helm package \
|
||||
--sign \
|
||||
--key "$(gpg --with-colons --list-keys "${GPG_PRIVATE_KEY_FINGERPRINT}" | grep uid | cut --delimiter ':' --fields 10)" \
|
||||
--keyring "${HOME}/.gnupg/secring.gpg" \
|
||||
--passphrase-file "${GPG_PRIVATE_KEY_PASSPHRASE_FILE}" \
|
||||
--version "${PACKAGE_VERSION}" ./
|
||||
|
||||
- uses: docker/login-action@v4.2.0
|
||||
with:
|
||||
registry: ${{ github.server_url }}
|
||||
username: ${{ github.repository_owner }}
|
||||
password: ${{ secrets.GIT_CRYPTIC_SYSTEMS_PACKAGE_REGISTRY_TOKEN }}
|
||||
|
||||
- name: Upload Chart to Gitea (OCI)
|
||||
env:
|
||||
COSIGN_PASSWORD: ${{ secrets.COSIGN_PASSWORD }}
|
||||
COSIGN_PRIVATE_KEY: ${{ secrets.COSIGN_PRIVATE_KEY }}
|
||||
run: |
|
||||
helm push ${REPOSITORY_NAME}-${PACKAGE_VERSION}.tgz oci://${GITEA_SERVER_HOSTNAME}/${REPOSITORY_OWNER}
|
||||
cosign sign --yes --upload=true --key=env://COSIGN_PRIVATE_KEY ${GITEA_SERVER_HOSTNAME}/${REPOSITORY_OWNER}/${REPOSITORY_NAME}:${PACKAGE_VERSION}
|
||||
|
||||
- name: Upload Chart to Gitea (Helm)
|
||||
env:
|
||||
GITEA_REGISTRY_TOKEN: ${{ secrets.GIT_CRYPTIC_SYSTEMS_PACKAGE_REGISTRY_TOKEN }}
|
||||
run: |
|
||||
curl \
|
||||
--fail \
|
||||
--show-error \
|
||||
--request POST \
|
||||
--user "${REPOSITORY_OWNER}:${GITEA_REGISTRY_TOKEN}" \
|
||||
--upload-file "${REPOSITORY_NAME}-${PACKAGE_VERSION}.tgz" \
|
||||
https://${GITEA_SERVER_HOSTNAME}/api/packages/${REPOSITORY_OWNER}/helm/api/charts
|
||||
|
||||
# NOTE:
|
||||
# Gitea does currently not support uploading Helm chart provenance files, so we skip this step for now. Once
|
||||
# Gitea supports this, we can simply uncomment the following lines to upload the provenance file as well.
|
||||
#
|
||||
# https://github.com/helm/helm/issues/31866
|
||||
#
|
||||
# if [ -f "${REPOSITORY_NAME}-${PACKAGE_VERSION}.tgz.prov" ]; then
|
||||
# curl \
|
||||
# --fail \
|
||||
# --show-error \
|
||||
# --request POST \
|
||||
# --user "${CHARTMUSEUM_USERNAME}:${CHARTMUSEUM_PASSWORD}" \
|
||||
# --upload-file "${REPOSITORY_NAME}-${PACKAGE_VERSION}.tgz.prov" \
|
||||
# https://${GITEA_SERVER_HOSTNAME}/api/packages/${REPOSITORY_OWNER}/helm/api/prov
|
||||
# fi
|
||||
|
||||
- name: Upload Chart to Chartmuseum (Helm)
|
||||
env:
|
||||
CHARTMUSEUM_HOSTNAME: ${{ vars.CHARTMUSEUM_HOSTNAME }}
|
||||
CHARTMUSEUM_USERNAME: ${{ secrets.CHARTMUSEUM_USERNAME }}
|
||||
CHARTMUSEUM_PASSWORD: ${{ secrets.CHARTMUSEUM_PASSWORD }}
|
||||
CHARTMUSEUM_REPOSITORY: ${{ vars.CHARTMUSEUM_REPOSITORY }}
|
||||
run: |
|
||||
curl \
|
||||
--fail \
|
||||
--show-error \
|
||||
--request POST \
|
||||
--user "${CHARTMUSEUM_USERNAME}:${CHARTMUSEUM_PASSWORD}" \
|
||||
--upload-file "${REPOSITORY_NAME}-${PACKAGE_VERSION}.tgz" \
|
||||
https://${CHARTMUSEUM_HOSTNAME}/api/${CHARTMUSEUM_REPOSITORY}/charts
|
||||
|
||||
if [ -f "${REPOSITORY_NAME}-${PACKAGE_VERSION}.tgz.prov" ]; then
|
||||
curl \
|
||||
--fail \
|
||||
--show-error \
|
||||
--request POST \
|
||||
--user "${CHARTMUSEUM_USERNAME}:${CHARTMUSEUM_PASSWORD}" \
|
||||
--upload-file ${REPOSITORY_NAME}-${PACKAGE_VERSION}.tgz.prov \
|
||||
https://${CHARTMUSEUM_HOSTNAME}/api/${CHARTMUSEUM_REPOSITORY}/prov
|
||||
fi
|
||||
@@ -1,4 +1,5 @@
|
||||
charts
|
||||
cosign*
|
||||
node_modules
|
||||
target
|
||||
values2.yml
|
||||
|
||||
+16
-5
@@ -26,7 +26,7 @@
|
||||
.vscode/
|
||||
|
||||
# drone
|
||||
.drone.ya?ml
|
||||
.drone.yml
|
||||
|
||||
# editorconfig
|
||||
.editorconfig
|
||||
@@ -37,13 +37,24 @@ values2.yaml
|
||||
|
||||
# helm packages
|
||||
*.tgz
|
||||
.helmignore
|
||||
unittests
|
||||
|
||||
# markdownlint
|
||||
.markdownlint.yml
|
||||
.markdownlint.yaml
|
||||
.markdownlintignore
|
||||
|
||||
# maven
|
||||
target
|
||||
# npm
|
||||
.prettierignore
|
||||
.npmrc
|
||||
package*
|
||||
|
||||
# serviceDescriptor (uctl-cluster)
|
||||
serviceDescriptor.yaml
|
||||
# yamllint
|
||||
.yamllint.yaml
|
||||
|
||||
# Others
|
||||
CONTRIBUTING.md
|
||||
CODEOWNERS
|
||||
Makefile
|
||||
renovate.json
|
||||
+3
-2
@@ -128,16 +128,17 @@ MD044:
|
||||
# List of proper names
|
||||
names:
|
||||
- Git
|
||||
- Gitea
|
||||
- GitDevOps
|
||||
- Gitea
|
||||
- GitHub
|
||||
- GitLab
|
||||
- GitOps
|
||||
- kube-prometheus-stack
|
||||
- Memcached
|
||||
- Oracle
|
||||
- ORBIS U
|
||||
- PostgreSQL
|
||||
- Prometheus
|
||||
- prometheus-exporter
|
||||
- SSL
|
||||
- TLS
|
||||
# Include code blocks
|
||||
|
||||
Vendored
+4
-1
@@ -1,6 +1,9 @@
|
||||
{
|
||||
"files.associations": {
|
||||
".gitea/workflows/*.yaml": "github-actions-workflow"
|
||||
},
|
||||
"yaml.schemas": {
|
||||
"https://raw.githubusercontent.com/helm-unittest/helm-unittest/v0.5.2/schema/helm-testsuite.json": [
|
||||
"https://raw.githubusercontent.com/helm-unittest/helm-unittest/v1.1.1/schema/helm-testsuite.json": [
|
||||
"/unittests/**/*.yaml"
|
||||
]
|
||||
},
|
||||
|
||||
+82
-1
@@ -1 +1,82 @@
|
||||
# Contribution Guidelines
|
||||
# Contributing
|
||||
|
||||
I am very happy if you would like to provide a pull request 👍
|
||||
|
||||
The content of this file describes which requirements contributors should fulfill before submitting a pull request (PR).
|
||||
|
||||
1. [Valid Git commits](#valid-git-commits)
|
||||
|
||||
## Valid Git commits
|
||||
|
||||
### Commit message
|
||||
|
||||
The repository is subject to a strict commit message template. This states that there are several types of commits. For
|
||||
example, `fix`, `chore`, `refac`, `test` or `doc`. All types are described in more detail below.
|
||||
|
||||
| type | description |
|
||||
| ------------------- | ----------------------------------------------------------------- |
|
||||
| `feat` | New feature. |
|
||||
| `fix` | Fixes a bug. |
|
||||
| `refac` | Refactoring production code. |
|
||||
| `style` | Fixes formatting issues. No production code change. |
|
||||
| `docs` | Adapt documentation. No production code change. |
|
||||
| `test` | Adds new or modifies existing tests. No production code change. |
|
||||
| `chore` | Updating grunt tasks. Is everything which the user does not see. |
|
||||
|
||||
Based on these types, commit messaged can then be created. Here are a few examples:
|
||||
|
||||
```text
|
||||
style(README): Wrong indentation
|
||||
feat(deployment): support restartPolicy
|
||||
fix(my-app): Add missing volume
|
||||
docs(CONTRIBUTING): Describe how to commit correctly
|
||||
```
|
||||
|
||||
This type of commit message makes it easier for me as maintainer to keep an overview and does not cause the commits of a
|
||||
pull request PR to be combined into one commit (squashing).
|
||||
|
||||
### Smart commits
|
||||
|
||||
Smart commits are excellent when it comes to tracking bugs or issues. In this repository, however, the rebasing of
|
||||
commits is prohibited, which means that only merge commits are possible. This means that a smart commit message only
|
||||
needs to be added to the merge commit.
|
||||
|
||||
This has the advantage that the maintainer can use the smart commit to find the merge commit and undo the entire history
|
||||
of a merge without having to select individual commits. The following history illustrates the correct use of smart commits.
|
||||
|
||||
```text
|
||||
* 823edbc7 Volker Raschek (G) | [Close #2] feat(deployment): support additional containers
|
||||
|\
|
||||
| * 321aebc3 Volker Raschek (G) | doc(README): generate README with new deployment attributes
|
||||
| * 8d101dd3 Volker Raschek (G) | test(deployment): Extend unittest of additional containers
|
||||
| * 6f2abd93 Volker Raschek (G) | fix(deployment): Extend deployment of additional containers
|
||||
|/
|
||||
* aa5ebda bob (N) | [Close #1] feat(deployment): support initContainers
|
||||
```
|
||||
|
||||
### Commit signing
|
||||
|
||||
Another problem with Git is the chain of trust. Git allows the configuration of any name and e-mail address. An attacker
|
||||
can impersonate any person and submit pull requests under a false identity. For as Linux Torvalds, the maintainer of the
|
||||
Linux kernel.
|
||||
|
||||
```bash
|
||||
git config --global user.name 'Linux Torvalds'
|
||||
git config --global user.email 'torvalds@linux-foundation.org'
|
||||
```
|
||||
|
||||
To avoid this, some Git repositories expect signed commits. In particular, repositories that are subject to direct
|
||||
delivery to customers. For this reason, the repository is subject to a branch protection rule that only allows signed
|
||||
commits. *Until* there is *no verified* and *no signed* commit, the pull request is blocked.
|
||||
|
||||
The following articles describes how Git can be configured to sign commits. Please keep in mind, that the e-mail
|
||||
address, which is used as UID of the GPG keyring must also be defined in the profile settings of your GitHub account.
|
||||
Otherwise will be marked the Git commit as *Unverified*.
|
||||
|
||||
1. [Signing Commits](https://docs.github.com/en/authentication/managing-commit-signature-verification/signing-commits)
|
||||
2. [Tell Git about your signing key](https://docs.github.com/en/authentication/managing-commit-signature-verification/telling-git-about-your-signing-key)
|
||||
|
||||
Inspect your Git commit via `git log`. There should be mentioned, that your commit is signed.
|
||||
|
||||
Furthermore, the GPG key is unique. **Don't loose your private GPG key**. Backup your private key on a safe device. For
|
||||
example an external USB drive.
|
||||
+23
-14
@@ -1,19 +1,28 @@
|
||||
annotations:
|
||||
artifacthub.io/license: MIT
|
||||
artifacthub.io/links: |
|
||||
- name: Prometheus PostgreSQL exporter (binary)
|
||||
url: https://github.com/prometheus-community/postgres_exporter
|
||||
- name: support
|
||||
url: https://git.cryptic.systems/volker.raschek/prometheus-postgres-exporter/issues
|
||||
artifacthub.io/operator: "false"
|
||||
artifacthub.io/prerelease: "false"
|
||||
artifacthub.io/signKey: |
|
||||
fingerprint: 3B0CE9853CAD76076260025383D342258456906E
|
||||
url: https://keys.openpgp.org/vks/v1/by-fingerprint/3B0CE9853CAD76076260025383D342258456906E
|
||||
apiVersion: v2
|
||||
name: prometheus-postgres-exporter
|
||||
appVersion: "0.19.1"
|
||||
description: Prometheus metric exporter for PostgreSQL
|
||||
type: application
|
||||
kubeVersion: ">=1.20.0"
|
||||
version: "0.1.0"
|
||||
appVersion: "0.16.0"
|
||||
|
||||
home: https://git.cryptic.systems/volker.raschek/prometheus-postgres-exporter
|
||||
# icon: https://annotations.example.com/icon.png
|
||||
|
||||
keywords:
|
||||
- prometheus
|
||||
- prometheus-exporter
|
||||
- postgres-postgres-exporter
|
||||
- postgres-exporter
|
||||
|
||||
- prometheus
|
||||
- prometheus-exporter
|
||||
- postgres-postgres-exporter
|
||||
- postgres-exporter
|
||||
name: prometheus-postgres-exporter
|
||||
sources:
|
||||
- https://github.com/prometheus-community/postgres_exporter
|
||||
- https://git.cryptic.systems/volker.raschek/prometheus-postgres-exporter
|
||||
- https://github.com/prometheus-community/postgres_exporter
|
||||
- https://git.cryptic.systems/volker.raschek/prometheus-postgres-exporter
|
||||
type: application
|
||||
version: "0.1.0"
|
||||
@@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2025 Markus Pesch
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
@@ -3,43 +3,49 @@ CONTAINER_RUNTIME?=$(shell which podman)
|
||||
|
||||
# HELM_IMAGE
|
||||
HELM_IMAGE_REGISTRY_HOST?=docker.io
|
||||
HELM_IMAGE_REPOSITORY=volkerraschek/helm
|
||||
HELM_IMAGE_VERSION?=3.16.1 # renovate: datasource=docker registryUrl=https://docker.io depName=volkerraschek/helm
|
||||
HELM_IMAGE_REPOSITORY?=volkerraschek/helm
|
||||
HELM_IMAGE_VERSION?=4.2.0 # renovate: datasource=docker registryUrl=https://docker.io depName=volkerraschek/helm
|
||||
HELM_IMAGE_FULLY_QUALIFIED=${HELM_IMAGE_REGISTRY_HOST}/${HELM_IMAGE_REPOSITORY}:${HELM_IMAGE_VERSION}
|
||||
|
||||
# MARKDOWNLINKCHECKER_IMAGE
|
||||
MARKDOWNLINKCHECK_IMAGE_REGISTRY_HOST?=ghcr.io
|
||||
MARKDOWNLINKCHECK_IMAGE_REPOSITORY=tcort/markdown-link-check
|
||||
MARKDOWNLINKCHECK_IMAGE_VERSION?=3.12.2 # renovate: datasource=docker registryUrl=https://ghcr.io depName=tcort/markdown-link-check
|
||||
MARKDOWNLINKCHECK_IMAGE_FULLY_QUALIFIED=${MARKDOWNLINT_IMAGE_REGISTRY_HOST}/${MARKDOWNLINT_IMAGE_REPOSITORY}:${MARKDOWNLINT_IMAGE_VERSION}
|
||||
|
||||
# NODE_IMAGE
|
||||
NODE_IMAGE_REGISTRY_HOST?=docker.io
|
||||
NODE_IMAGE_REPOSITORY=library/node
|
||||
NODE_IMAGE_VERSION?=22.9.0-alpine # renovate: datasource=docker registryUrl=https://docker.io depName=library/node
|
||||
NODE_IMAGE_REPOSITORY?=library/node
|
||||
NODE_IMAGE_VERSION?=25.2.1-alpine # renovate: datasource=docker registryUrl=https://docker.io depName=docker.io/library/node packageName=library/node
|
||||
NODE_IMAGE_FULLY_QUALIFIED=${NODE_IMAGE_REGISTRY_HOST}/${NODE_IMAGE_REPOSITORY}:${NODE_IMAGE_VERSION}
|
||||
|
||||
# CHART_SERVER
|
||||
CHART_SERVER_HOST?=charts.u.orbis-healthcare.com
|
||||
CHART_SERVER_NAMESPACE?=orbis-u
|
||||
CHART_SERVER_REPOSITORY?=qu-seed
|
||||
CHART_VERSION?=0.1.0
|
||||
|
||||
# MISSING DOT
|
||||
# ==============================================================================
|
||||
missing-dot:
|
||||
grep --perl-regexp '## @(param|skip).*[^.]$$' values.yaml
|
||||
|
||||
# CONTAINER RUN - PREPARE ENVIRONMENT
|
||||
# CONTAINER RUN - README
|
||||
# ==============================================================================
|
||||
PHONY+=container-run/readme
|
||||
container-run/readme:
|
||||
container-run/readme: container-run/readme/link container-run/readme/lint container-run/readme/parameters
|
||||
|
||||
container-run/readme/link:
|
||||
${CONTAINER_RUNTIME} run \
|
||||
--rm \
|
||||
--volume $(shell pwd):$(shell pwd) \
|
||||
--workdir $(shell pwd) \
|
||||
${NODE_IMAGE_FULLY_QUALIFIED} \
|
||||
npm install && npm run readme:parameters && npm run readme:lint
|
||||
npm install && npm run readme:link
|
||||
|
||||
container-run/readme/lint:
|
||||
${CONTAINER_RUNTIME} run \
|
||||
--rm \
|
||||
--volume $(shell pwd):$(shell pwd) \
|
||||
--workdir $(shell pwd) \
|
||||
${NODE_IMAGE_FULLY_QUALIFIED} \
|
||||
npm install && npm run readme:lint
|
||||
|
||||
container-run/readme/parameters:
|
||||
${CONTAINER_RUNTIME} run \
|
||||
--rm \
|
||||
--volume $(shell pwd):$(shell pwd) \
|
||||
--workdir $(shell pwd) \
|
||||
${NODE_IMAGE_FULLY_QUALIFIED} \
|
||||
npm install && npm run readme:parameters
|
||||
|
||||
# CONTAINER RUN - HELM UNITTESTS
|
||||
# ==============================================================================
|
||||
@@ -67,19 +73,6 @@ container-run/helm-update-dependencies:
|
||||
${HELM_IMAGE_FULLY_QUALIFIED} \
|
||||
dependency update
|
||||
|
||||
# CONTAINER RUN - DEPLOY2CHART-REPO
|
||||
# ==============================================================================
|
||||
container-run/deploy2chart-repo:
|
||||
${CONTAINER_RUNTIME} run \
|
||||
--env HELM_REPO_PASSWORD=${CHART_SERVER_PASSWORD} \
|
||||
--env HELM_REPO_USERNAME=${CHART_SERVER_USERNAME} \
|
||||
--entrypoint /bin/bash \
|
||||
--rm \
|
||||
--volume $(shell pwd):$(shell pwd) \
|
||||
--workdir $(shell pwd) \
|
||||
${HELM_IMAGE_FULLY_QUALIFIED} \
|
||||
-c "helm repo add ${CHART_SERVER_NAMESPACE} http://${CHART_SERVER_HOST}/${CHART_SERVER_NAMESPACE} && helm package --version ${CHART_VERSION} . && helm cm-push ./${CHART_SERVER_REPOSITORY}-${CHART_VERSION}.tgz ${CHART_SERVER_NAMESPACE}"
|
||||
|
||||
# CONTAINER RUN - MARKDOWN-LINT
|
||||
# ==============================================================================
|
||||
PHONY+=container-run/helm-lint
|
||||
@@ -91,16 +84,6 @@ container-run/helm-lint:
|
||||
${HELM_IMAGE_FULLY_QUALIFIED} \
|
||||
lint --values values.yaml .
|
||||
|
||||
# CONTAINER RUN - MARKDOWN-LINK-CHECK
|
||||
# ==============================================================================
|
||||
PHONY+=container-run/markdown-link-check
|
||||
container-run/markdown-link-check:
|
||||
${CONTAINER_RUNTIME} run \
|
||||
--rm \
|
||||
--volume $(shell pwd):/work \
|
||||
${MARKDOWNLINKCHECK_IMAGE_FULLY_QUALIFIED} \
|
||||
*.md
|
||||
|
||||
# PHONY
|
||||
# ==============================================================================
|
||||
# Declare the contents of the PHONY variable as phony. We keep that information
|
||||
|
||||
@@ -1,25 +1,31 @@
|
||||
# Prometheus PostgreSQL exporter
|
||||
|
||||
[](https://drone.cryptic.systems/volker.raschek/prometheus-postgres-exporter)
|
||||
[](https://artifacthub.io/packages/search?repo=prometheus-exporters)
|
||||
|
||||
> [!NOTE]
|
||||
> This is not the official *community* helm chart of the Prometheus metric exporter for PostgreSQL databases. If you are
|
||||
> looking for the official helm chart, checkout the GitHub project
|
||||
> [helm-charts](https://github.com/prometheus-community/helm-charts) of the [Prometheus
|
||||
> community](https://github.com/prometheus-community).
|
||||
|
||||
This helm chart enables the deployment of a Prometheus metrics exporter for PostgreSQL databases and allows the
|
||||
individual configuration of additional containers/initContainers, mounting of volumes, defining additional environment
|
||||
variables, apply a user-defined web-config.yaml and much more.
|
||||
variables, apply a user-defined `webConfig.yaml` and much more.
|
||||
|
||||
Chapter [configuration and installation](#helm-configuration-and-installation) describes the basics how to configure helm
|
||||
and use it to deploy the exporter. It also contains further configuration examples.
|
||||
|
||||
Furthermore, this helm chart unit tests to detect regressions and stabilize the deployment. Additionally, this helm
|
||||
chart is tested for deployment scenarios with ArgoCD.
|
||||
|
||||
> [!NOTE]
|
||||
> This is not the official *community* helm chart of the Prometheus metric exporter for PostgreSQL databases. You can
|
||||
> find the official community chart [here](https://github.com/prometheus-community/helm-charts).
|
||||
Furthermore, this helm chart contains unit tests to detect regressions and stabilize the deployment. Additionally, this
|
||||
helm chart is tested for deployment scenarios with **ArgoCD**, but please keep in mind, that this chart supports the
|
||||
*[Automatically Roll Deployment](https://helm.sh/docs/howto/charts_tips_and_tricks/#automatically-roll-deployments)*
|
||||
concept of Helm, which can trigger unexpected rolling releases. Further configuration instructions are described in a
|
||||
separate [chapter](#argocd).
|
||||
|
||||
## Helm: configuration and installation
|
||||
|
||||
1. A helm chart repository must be configured, to pull the helm charts from.
|
||||
2. All available parameters are [here](#parameters) in detail document. The parameters can be defined via the helm
|
||||
1. A helm chart repository must be configured, to pull the helm charts from. The helm charts can either be pulled from
|
||||
the classic helm chart repository or OCI registry.
|
||||
2. All available [parameters](#parameters) are documented in detail below. The parameters can be defined via the helm
|
||||
`--set` flag or directly as part of a `values.yaml` file. The following example defines the `prometheus-exporter`
|
||||
repository and use the `--set` flag for a basic deployment.
|
||||
|
||||
@@ -31,7 +37,20 @@ chart is tested for deployment scenarios with ArgoCD.
|
||||
```bash
|
||||
helm repo add prometheus-exporters https://charts.cryptic.systems/prometheus-exporters
|
||||
helm repo update
|
||||
helm install prometheus-exporters/prometheus-postgres-exporter prometheus-postgres-exporter \
|
||||
CHART_VERSION=0.5.12
|
||||
helm install --version "${CHART_VERSION}" prometheus-postgres-exporter prometheus-exporters/prometheus-postgres-exporter \
|
||||
--set 'config.database.secret.databaseUsername=postgres' \
|
||||
--set 'config.database.secret.databasePassword=postgres' \
|
||||
--set 'config.database.secret.databaseConnectionUrl="postgres.example.local:5432/postgres?ssl=disable"' \
|
||||
--set 'prometheus.metrics.enabled=true' \
|
||||
--set 'prometheus.metrics.serviceMonitor.enabled=true'
|
||||
```
|
||||
|
||||
Alternatively, the deployment of the helm charts can also be done via an OCI registry:
|
||||
|
||||
```bash
|
||||
CHART_VERSION=0.5.12
|
||||
helm install "oci://git.cryptic.systems/volker.raschek/prometheus-postgres-exporter:${CHART_VERSION}" \
|
||||
--set 'config.database.secret.databaseUsername=postgres' \
|
||||
--set 'config.database.secret.databasePassword=postgres' \
|
||||
--set 'config.database.secret.databaseConnectionUrl="postgres.example.local:5432/postgres?ssl=disable"' \
|
||||
@@ -45,7 +64,8 @@ version of the chart must be in sync with the `values.yaml`. Newer *minor* versi
|
||||
versions can break something!
|
||||
|
||||
```bash
|
||||
helm show values prometheus-exporters/prometheus-postgres-exporter --version 0.1.0 > values.yaml
|
||||
CHART_VERSION=0.5.12
|
||||
helm show values --version "${CHART_VERSION}" prometheus-exporters/prometheus-postgres-exporter > values.yaml
|
||||
```
|
||||
|
||||
A complete list of available helm chart versions can be displayed via the following command:
|
||||
@@ -61,9 +81,42 @@ for customizations. These can be configured in more detail via `values.yaml`.
|
||||
|
||||
The following examples serve as individual configurations and as inspiration for how deployment problems can be solved.
|
||||
|
||||
### TLS authentication and encryption
|
||||
#### Avoid CPU throttling by defining a CPU limit
|
||||
|
||||
The first example shows how to deploy the metric exporter with TLS encryption. The verification of the custom TLS
|
||||
If the application is deployed with a CPU resource limit, Prometheus may throw a CPU throttling warning for the
|
||||
application. This has more or less to do with the fact that the application finds the number of CPUs of the host, but
|
||||
cannot use the available CPU time to perform computing operations.
|
||||
|
||||
The application must be informed that despite several CPUs only a part (limit) of the available computing time is
|
||||
available. As this is a Golang application, this can be implemented using `GOMAXPROCS`. The following example is one way
|
||||
of defining `GOMAXPROCS` automatically based on the defined CPU limit like `1000m`. Please keep in mind, that the CFS
|
||||
rate of `100ms` - default on each kubernetes node, is also very important to avoid CPU throttling.
|
||||
|
||||
Further information about this topic can be found in one of Kanishk's blog
|
||||
[posts](https://kanishk.io/posts/cpu-throttling-in-containerized-go-apps/).
|
||||
|
||||
> [!NOTE]
|
||||
> The environment variable `GOMAXPROCS` is set automatically, when a CPU limit is defined. An explicit configuration is
|
||||
> not anymore required.
|
||||
>
|
||||
> Please take care the a CPU limit < `1000m` can also lead to CPU throttling. Please read the linked documentation carefully.
|
||||
|
||||
```bash
|
||||
CHART_VERSION=0.5.12
|
||||
helm install --version "${CHART_VERSION}" prometheus-postgres-exporter prometheus-exporters/prometheus-postgres-exporter \
|
||||
--set 'config.database.secret.databaseUsername=postgres' \
|
||||
--set 'config.database.secret.databasePassword=postgres' \
|
||||
--set 'config.database.secret.databaseConnectionUrl="postgres.example.local:5432/postgres?ssl=disable"' \
|
||||
--set 'prometheus.metrics.enabled=true' \
|
||||
--set 'prometheus.metrics.serviceMonitor.enabled=true' \
|
||||
--set 'deployment.postgresExporter.env.name=GOMAXPROCS' \
|
||||
--set 'deployment.postgresExporter.env.valueFrom.resourceFieldRef.resource=limits.cpu' \
|
||||
--set 'deployment.postgresExporter.resources.limits.cpu=1000m'
|
||||
```
|
||||
|
||||
#### TLS authentication and encryption
|
||||
|
||||
The example shows how to deploy the metric exporter with TLS encryption. The verification of the custom TLS
|
||||
certification will be skipped by Prometheus.
|
||||
|
||||
> [!WARNING]
|
||||
@@ -71,7 +124,8 @@ certification will be skipped by Prometheus.
|
||||
> `tls.key` and `tls.crt` of the secret can be mounted into the container filesystem for TLS authentication / encryption.
|
||||
|
||||
```bash
|
||||
helm install prometheus-exporters/prometheus-postgres-exporter prometheus-postgres-exporter \
|
||||
CHART_VERSION=0.5.12
|
||||
helm install --version "${CHART_VERSION}" prometheus-postgres-exporter prometheus-exporters/prometheus-postgres-exporter \
|
||||
--set 'config.database.secret.databaseUsername=postgres' \
|
||||
--set 'config.database.secret.databasePassword=postgres' \
|
||||
--set 'config.database.secret.databaseConnectionUrl="postgres.example.local:5432/postgres?ssl=disable"' \
|
||||
@@ -94,7 +148,8 @@ certificate for the metrics exporter - TLS certificate verification can be enabl
|
||||
replaced:
|
||||
|
||||
```diff
|
||||
helm install prometheus-exporters/prometheus-postgres-exporter prometheus-postgres-exporter \
|
||||
CHART_VERSION=0.5.12
|
||||
helm install --version "${CHART_VERSION}" prometheus-postgres-exporter prometheus-exporters/prometheus-postgres-exporter \
|
||||
--set 'config.database.secret.databaseUsername=postgres' \
|
||||
--set 'config.database.secret.databasePassword=postgres' \
|
||||
--set 'config.database.secret.databaseConnectionUrl="postgres.example.local:5432/postgres?ssl=disable"' \
|
||||
@@ -115,6 +170,169 @@ replaced:
|
||||
+ --set 'prometheus.metrics.serviceMonitor.tlsConfig.keyFile=/etc/prometheus/tls/tls.key'
|
||||
```
|
||||
|
||||
#### TLS certificate rotation
|
||||
|
||||
If the exporter uses TLS certificates that are mounted as a secret in the container file system like the example
|
||||
[above](#tls-authentication-and-encryption), the exporter will not automatically apply them when the TLS certificates
|
||||
are rotated. Such a rotation can be for example triggered, when the [cert-manager](https://cert-manager.io/) issues new
|
||||
TLS certificates before expiring.
|
||||
|
||||
Until the exporter does not support rotating TLS certificate a workaround can be applied. For example stakater's
|
||||
[reloader](https://github.com/stakater/Reloader) controller can be used to trigger a rolling update. The following
|
||||
annotation must be added to instruct the reloader controller to trigger a rolling update, when the mounted secret has
|
||||
been changed.
|
||||
|
||||
> [!IMPORTANT]
|
||||
> The Helm chart already adds annotations to trigger a rolling release. Helm describes this approach under
|
||||
> [Automatically Roll Deployments](https://helm.sh/docs/howto/charts_tips_and_tricks/#automatically-roll-deployments).
|
||||
> For this reason, **only external** configMaps or secrets need to be monitored by reloader.
|
||||
|
||||
```yaml
|
||||
deployment:
|
||||
annotations:
|
||||
secret.reloader.stakater.com/reload: "prometheus-postgresql-exporter-http"
|
||||
```
|
||||
|
||||
#### Grafana dashboard
|
||||
|
||||
The helm chart includes Grafana dashboards. These can be deployed as a configMap by activating Grafana integration. It
|
||||
is assumed that the dashboard is consumed by Grafana or a sidecar container itself and that the dashboard is stored in
|
||||
the Grafana container file system so that it is subsequently available to the user. The
|
||||
[kube-prometheus-stack](https://artifacthub.io/packages/helm/prometheus-community/kube-prometheus-stack) deployment
|
||||
makes this possible.
|
||||
|
||||
```bash
|
||||
CHART_VERSION=0.5.12
|
||||
helm install --version "${CHART_VERSION}" prometheus-postgres-exporter prometheus-exporters/prometheus-postgres-exporter \
|
||||
--set 'config.database.secret.databaseUsername=postgres' \
|
||||
--set 'config.database.secret.databasePassword=postgres' \
|
||||
--set 'config.database.secret.databaseConnectionUrl="postgres.example.local:5432/postgres?ssl=disable"' \
|
||||
--set 'grafana.enabled=true'
|
||||
```
|
||||
|
||||
#### Avoid deploying on same node / bare metal host as PostgresDB
|
||||
|
||||
As a best practice, avoid running the postgres-exporter on the same node / bare-metal host as the PostgresDB. This is
|
||||
because if the postgres-exporter is running on the same node and this node fails, Prometheus can send an alert about the
|
||||
failure of the node or that the postgres-exporter cannot be reached. However, it is not possible to react based on the
|
||||
metrics that the postgres-exporter explicitly provides. Depending on the configuration of alerts, this may mean that the
|
||||
corresponding notifications are not sent to the right person or group of people.
|
||||
|
||||
The following example prevent the postgres-exporter from running on nodes with a PostgresDB. The PostgresDB nodes has an
|
||||
additional label `database=postgres`. The configuration is carried out in `values.yaml`.
|
||||
|
||||
```yaml
|
||||
deployment:
|
||||
affinity:
|
||||
nodeAffinity:
|
||||
preferredDuringSchedulingIgnoredDuringExecution:
|
||||
- weight: 100
|
||||
preference:
|
||||
matchExpressions:
|
||||
- key: database
|
||||
operator: NotIn
|
||||
values:
|
||||
- postgres
|
||||
```
|
||||
|
||||
### Network policies
|
||||
|
||||
Network policies can only take effect, when the used CNI plugin support network policies. The chart supports no custom
|
||||
network policy implementation of CNI plugins. It's support only the official API resource of `networking.k8s.io/v1`.
|
||||
|
||||
The object networkPolicies can contains multiple networkPolicy definitions. There is currently only one example
|
||||
predefined - it's named `default`. Further networkPolicy rules can easy be added by defining additional objects. For example:
|
||||
|
||||
> [!NOTE]
|
||||
> The structure of each custom network policy must be equal like that of default. For this reason don't forget to define
|
||||
> `annotations`, `labels` and the other properties as well.
|
||||
|
||||
```yaml
|
||||
networkPolicies:
|
||||
enabled: false
|
||||
default: {}
|
||||
my-custom-network-policy: {}
|
||||
```
|
||||
|
||||
The example below is an excerpt of the `values.yaml` file. The network policy `default` contains ingress rules to allow
|
||||
incoming traffic from Prometheus. Additionally two egress rules are defined, to allow the application outgoing access to
|
||||
the internal running DNS server `core-dns` and the external running postgres database listen on `10.14.243.12`.
|
||||
|
||||
> [!IMPORTANT]
|
||||
> Please keep in mind, that the namespace and pod selector labels can be different from environment to environment. For
|
||||
> this reason, there is are not default network policy rules defined.
|
||||
|
||||
```yaml
|
||||
networkPolicies:
|
||||
enabled: true
|
||||
default:
|
||||
enabled: true
|
||||
annotations: {}
|
||||
labels: {}
|
||||
policyTypes:
|
||||
- Egress
|
||||
- Ingress
|
||||
egress:
|
||||
- to:
|
||||
- ipBlock:
|
||||
cidr: 10.14.243.12/32
|
||||
ports:
|
||||
- port: 5432
|
||||
protocol: TCP
|
||||
- to:
|
||||
- namespaceSelector:
|
||||
matchLabels:
|
||||
kubernetes.io/metadata.name: kube-system
|
||||
podSelector:
|
||||
matchLabels:
|
||||
k8s-app: kube-dns
|
||||
ports:
|
||||
- port: 53
|
||||
protocol: TCP
|
||||
- port: 53
|
||||
protocol: UDP
|
||||
ingress:
|
||||
- from:
|
||||
- namespaceSelector:
|
||||
matchLabels:
|
||||
kubernetes.io/metadata.name: monitoring
|
||||
podSelector:
|
||||
matchLabels:
|
||||
app.kubernetes.io/name: prometheus
|
||||
ports:
|
||||
- port: http
|
||||
protocol: TCP
|
||||
```
|
||||
|
||||
## ArgoCD
|
||||
|
||||
### Daily execution of rolling updates
|
||||
|
||||
The behavior whereby ArgoCD triggers a rolling update even though nothing appears to have changed often occurs in
|
||||
connection with the helm concept `checksum/secret`, `checksum/configmap` or more generally, [Automatically Roll
|
||||
Deployments](https://helm.sh/docs/howto/charts_tips_and_tricks/#automatically-roll-deployments).
|
||||
|
||||
The problem with combining this concept with ArgoCD is that ArgoCD re-renders the Helm chart every time. Even if the
|
||||
content of the config map or secret has not changed, there may be minimal differences (e.g., whitespace, chart version,
|
||||
Helm render order, different timestamps).
|
||||
|
||||
This changes the SHA256 hash, Argo sees a drift and trigger a rolling update of the deployment. Among other things, this
|
||||
can lead to unnecessary notifications from ArgoCD.
|
||||
|
||||
To avoid this, the annotation with the shasum must be ignored. Below is a diff that adds the `Application` to ignore all
|
||||
annotations with the prefix `checksum`.
|
||||
|
||||
```diff
|
||||
apiVersion: argoproj.io/v1alpha1
|
||||
kind: Application
|
||||
spec:
|
||||
+ ignoreDifferences:
|
||||
+ - group: apps/v1
|
||||
+ kind: Deployment
|
||||
+ jqPathExpressions:
|
||||
+ - '.spec.template.metadata.annotations | with_entries(select(.key | startswith("checksum")))'
|
||||
```
|
||||
|
||||
## Parameters
|
||||
|
||||
### Global
|
||||
@@ -126,32 +344,32 @@ replaced:
|
||||
|
||||
### Configuration
|
||||
|
||||
| Name | Description | Value |
|
||||
| ------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------- |
|
||||
| `config.database.existingSecret.enabled` | Mount an existing secret containing the application specific `DATA_SOURCE_` prefixed environment variables. | `false` |
|
||||
| `config.database.existingSecret.secretName` | Name of the existing secret containing the application specific `DATA_SOURCE_` prefixed environment variables. | `""` |
|
||||
| `config.database.secret.annotations` | Additional annotations of the secret containing the database credentials. | `{}` |
|
||||
| `config.database.secret.labels` | Additional labels of the secret containing the database credentials. | `{}` |
|
||||
| `config.database.secret.databaseUsername` | Database username. Will be defined as env `DATA_SOURCE_USER` as part of a secret. | `""` |
|
||||
| `config.database.secret.databasePassword` | Database password. Will be defined as env `DATA_SOURCE_PASS` as part of a secret. | `""` |
|
||||
| `config.database.secret.databaseConnectionUrl` | Complex database connection URL. Will be defined as env `DATA_SOURCE_URI` as part of a secret. | `""` |
|
||||
| `config.exporterConfig.existingSecret.enabled` | Mount an existing secret containing the key `exporterConfig.yaml`. | `false` |
|
||||
| `config.exporterConfig.existingSecret.secretName` | Name of the existing secret containing the key `exporterConfig.yaml`. | `""` |
|
||||
| `config.exporterConfig.secret.annotations` | Additional annotations of the secret containing the `exporterConfig.yaml`. | `{}` |
|
||||
| `config.exporterConfig.secret.labels` | Additional labels of the secret containing the `exporterConfig.yaml`. | `{}` |
|
||||
| `config.exporterConfig.secret.exporterConfig` | Content of the `exporterConfig.yaml`. Further information can be found [here](https://prometheus.io/docs/prometheus/latest/configuration/https/). | `{}` |
|
||||
| `config.webConfig.existingSecret.enabled` | Mount an existing secret containing the key `webConfig.yaml`. | `false` |
|
||||
| `config.webConfig.existingSecret.secretName` | Name of the existing secret containing the key `webConfig.yaml`. | `""` |
|
||||
| `config.webConfig.secret.annotations` | Additional annotations of the secret containing the `webConfig.yaml`. | `{}` |
|
||||
| `config.webConfig.secret.labels` | Additional labels of the secret containing the `webConfig.yaml`. | `{}` |
|
||||
| `config.webConfig.secret.webConfig` | Content of the `webConfig.yaml`. Further information can be found [here](https://prometheus.io/docs/prometheus/latest/configuration/https/). | `{}` |
|
||||
| Name | Description | Value |
|
||||
| ------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------- |
|
||||
| `config.database.existingSecret.enabled` | Mount an existing secret containing the application specific `DATA_SOURCE_` prefixed environment variables. | `false` |
|
||||
| `config.database.existingSecret.secretName` | Name of the existing secret containing the application specific `DATA_SOURCE_` prefixed environment variables. | `""` |
|
||||
| `config.database.secret.annotations` | Additional annotations of the secret containing the database credentials. | `{}` |
|
||||
| `config.database.secret.labels` | Additional labels of the secret containing the database credentials. | `{}` |
|
||||
| `config.database.secret.databaseUsername` | Database username. Will be defined as env `DATA_SOURCE_USER` as part of a secret. | `""` |
|
||||
| `config.database.secret.databasePassword` | Database password. Will be defined as env `DATA_SOURCE_PASS` as part of a secret. | `""` |
|
||||
| `config.database.secret.databaseConnectionUrl` | Complex database connection URL. Will be defined as env `DATA_SOURCE_URI` as part of a secret. | `""` |
|
||||
| `config.exporterConfig.existingSecret.enabled` | Mount an existing secret containing the key `exporterConfig.yaml`. | `false` |
|
||||
| `config.exporterConfig.existingSecret.secretName` | Name of the existing secret containing the key `exporterConfig.yaml`. | `""` |
|
||||
| `config.exporterConfig.secret.annotations` | Additional annotations of the secret containing the `exporterConfig.yaml`. | `{}` |
|
||||
| `config.exporterConfig.secret.labels` | Additional labels of the secret containing the `exporterConfig.yaml`. | `{}` |
|
||||
| `config.exporterConfig.secret.exporterConfig` | Content of the `exporterConfig.yaml`. Further information can be found in the [README](https://github.com/prometheus-community/postgres_exporter?tab=readme-ov-file#multi-target-support-beta) file of the Postgres exporter binary. | `{}` |
|
||||
| `config.webConfig.existingSecret.enabled` | Mount an existing secret containing the key `webConfig.yaml`. | `false` |
|
||||
| `config.webConfig.existingSecret.secretName` | Name of the existing secret containing the key `webConfig.yaml`. | `""` |
|
||||
| `config.webConfig.secret.annotations` | Additional annotations of the secret containing the `webConfig.yaml`. | `{}` |
|
||||
| `config.webConfig.secret.labels` | Additional labels of the secret containing the `webConfig.yaml`. | `{}` |
|
||||
| `config.webConfig.secret.webConfig` | Content of the `webConfig.yaml`. Further [documentation](https://prometheus.io/docs/prometheus/latest/configuration/https/) is available on the official Prometheus website. | `{}` |
|
||||
|
||||
### Deployment
|
||||
|
||||
| Name | Description | Value |
|
||||
| -------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | --------------------------------------- |
|
||||
| `deployment.annotations` | Additional deployment annotations. | `{}` |
|
||||
| `deployment.labels` | Additional ingress labels. | `{}` |
|
||||
| `deployment.labels` | Additional deployment labels. | `{}` |
|
||||
| `deployment.additionalContainers` | List of additional containers. | `[]` |
|
||||
| `deployment.affinity` | Affinity for the postgres-exporter deployment. | `{}` |
|
||||
| `deployment.initContainers` | List of additional init containers. | `[]` |
|
||||
@@ -173,23 +391,26 @@ replaced:
|
||||
| `deployment.postgresExporter.volumeMounts` | Additional volume mounts. | `[]` |
|
||||
| `deployment.nodeSelector` | NodeSelector of the postgres-exporter deployment. | `{}` |
|
||||
| `deployment.priorityClassName` | PriorityClassName of the postgres-exporter deployment. | `""` |
|
||||
| `deployment.replicaCount` | Number of replicas for the postgres-exporter deployment. | `1` |
|
||||
| `deployment.replicas` | Number of replicas for the postgres-exporter deployment. | `1` |
|
||||
| `deployment.restartPolicy` | Restart policy of the postgres-exporter deployment. | `""` |
|
||||
| `deployment.securityContext` | Security context of the postgres-exporter deployment. | `{}` |
|
||||
| `deployment.strategy.type` | Strategy type - `Recreate` or `Rollingupdate`. | `Recreate` |
|
||||
| `deployment.strategy.type` | Strategy type - `Recreate` or `RollingUpdate`. | `RollingUpdate` |
|
||||
| `deployment.strategy.rollingUpdate.maxSurge` | The maximum number of pods that can be scheduled above the desired number of pods during a rolling update. | `1` |
|
||||
| `deployment.strategy.rollingUpdate.maxUnavailable` | The maximum number of pods that can be unavailable during a rolling update. | `1` |
|
||||
| `deployment.terminationGracePeriodSeconds` | How long to wait until forcefully kill the pod. | `60` |
|
||||
| `deployment.tolerations` | Tolerations of the postgres-exporter deployment. | `[]` |
|
||||
| `deployment.topologySpreadConstraints` | TopologySpreadConstraints of the postgres-exporter deployment. | `[]` |
|
||||
| `deployment.volumes` | Additional volumes to mount into the pods of the Prometheus-exporter deployment. | `[]` |
|
||||
| `deployment.volumes` | Additional volumes to mount into the pods of the prometheus-exporter deployment. | `[]` |
|
||||
|
||||
### Grafana
|
||||
|
||||
| Name | Description | Value |
|
||||
| ------------------------------------ | --------------------------------------------------------- | ------- |
|
||||
| `grafana.enabled` | Enable integration into Grafana. | `false` |
|
||||
| `grafana.dashboards.businessMetrics` | Enable deployment of Grafana dashboard `businessMetrics`. | `true` |
|
||||
| Name | Description | Value |
|
||||
| ------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | ----------- |
|
||||
| `grafana.enabled` | Enable integration into Grafana. Require the Prometheus operator deployment. | `false` |
|
||||
| `grafana.dashboardDiscoveryLabels` | Labels that Grafana uses to discover resources. The labels may vary depending on the Grafana deployment. | `undefined` |
|
||||
| `grafana.dashboards.postgresExporter.enabled` | Enable deployment of Grafana dashboard `postgresExporter`. | `true` |
|
||||
| `grafana.dashboards.postgresExporter.annotations` | Additional configmap annotations. | `{}` |
|
||||
| `grafana.dashboards.postgresExporter.labels` | Additional configmap labels. | `{}` |
|
||||
|
||||
### Ingress
|
||||
|
||||
@@ -208,11 +429,17 @@ replaced:
|
||||
| --------------------- | ---------------------- | ----- |
|
||||
| `podDisruptionBudget` | Pod disruption budget. | `{}` |
|
||||
|
||||
### Network
|
||||
### NetworkPolicies
|
||||
|
||||
| Name | Description | Value |
|
||||
| ----------------- | ------------------------------------------------------------------------------------------------------------------ | ----- |
|
||||
| `networkPolicies` | Deploy network policies based on the used container network interface (CNI) implementation - like calico or weave. | `{}` |
|
||||
| Name | Description | Value |
|
||||
| ------------------------------------- | ----------------------------------------------------------------------------------------------------- | ------- |
|
||||
| `networkPolicies.enabled` | Enable network policies in general. | `false` |
|
||||
| `networkPolicies.default.enabled` | Enable the network policy for accessing the application by default. For example to scape the metrics. | `false` |
|
||||
| `networkPolicies.default.annotations` | Additional network policy annotations. | `{}` |
|
||||
| `networkPolicies.default.labels` | Additional network policy labels. | `{}` |
|
||||
| `networkPolicies.default.policyTypes` | List of policy types. Supported is ingress, egress or ingress and egress. | `[]` |
|
||||
| `networkPolicies.default.egress` | Concrete egress network policy implementation. | `[]` |
|
||||
| `networkPolicies.default.ingress` | Concrete ingress network policy implementation. | `[]` |
|
||||
|
||||
### Prometheus
|
||||
|
||||
@@ -221,7 +448,7 @@ replaced:
|
||||
| `prometheus.metrics.enabled` | Enable of scraping metrics by Prometheus. | `true` |
|
||||
| `prometheus.metrics.podMonitor.enabled` | Enable creation of a podMonitor. Excludes the existence of a serviceMonitor resource. | `false` |
|
||||
| `prometheus.metrics.podMonitor.annotations` | Additional podMonitor annotations. | `{}` |
|
||||
| `prometheus.metrics.podMonitor.enableHttp2` | Enable HTTP2. | `false` |
|
||||
| `prometheus.metrics.podMonitor.enableHttp2` | Enable HTTP2. | `true` |
|
||||
| `prometheus.metrics.podMonitor.followRedirects` | FollowRedirects configures whether scrape requests follow HTTP 3xx redirects. | `false` |
|
||||
| `prometheus.metrics.podMonitor.honorLabels` | Honor labels. | `false` |
|
||||
| `prometheus.metrics.podMonitor.labels` | Additional podMonitor labels. | `{}` |
|
||||
@@ -234,12 +461,11 @@ replaced:
|
||||
| `prometheus.metrics.serviceMonitor.enabled` | Enable creation of a serviceMonitor. Excludes the existence of a podMonitor resource. | `false` |
|
||||
| `prometheus.metrics.serviceMonitor.annotations` | Additional serviceMonitor annotations. | `{}` |
|
||||
| `prometheus.metrics.serviceMonitor.labels` | Additional serviceMonitor labels. | `{}` |
|
||||
| `prometheus.metrics.serviceMonitor.enableHttp2` | Enable HTTP2. | `false` |
|
||||
| `prometheus.metrics.serviceMonitor.enableHttp2` | Enable HTTP2. | `true` |
|
||||
| `prometheus.metrics.serviceMonitor.followRedirects` | FollowRedirects configures whether scrape requests follow HTTP 3xx redirects. | `false` |
|
||||
| `prometheus.metrics.serviceMonitor.honorLabels` | Honor labels. | `false` |
|
||||
| `prometheus.metrics.serviceMonitor.interval` | Interval at which metrics should be scraped. If not specified Prometheus' global scrape interval is used. | `60s` |
|
||||
| `prometheus.metrics.serviceMonitor.path` | HTTP path for scraping Prometheus metrics. | `/metrics` |
|
||||
| `prometheus.metrics.serviceMonitor.port` | HTTP port for scraping Prometheus metrics. | `9187` |
|
||||
| `prometheus.metrics.serviceMonitor.relabelings` | RelabelConfigs to apply to samples before scraping. Prometheus Operator automatically adds relabelings for a few standard Kubernetes fields. | `[]` |
|
||||
| `prometheus.metrics.serviceMonitor.scrapeTimeout` | Timeout after which the scrape is ended. If not specified, global Prometheus scrape timeout is used. | `30s` |
|
||||
| `prometheus.metrics.serviceMonitor.scheme` | HTTP scheme to use for scraping. For example `http` or `https`. | `http` |
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
repositoryID: d4d5f778-e029-4401-81a3-29a0f689ee08
|
||||
Generated
+1766
-442
File diff suppressed because it is too large.
Load diff
+5
-3
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "qu-seed-chart",
|
||||
"homepage": "https://github.com/dedalus-cis4u/qu-seed-chart.git",
|
||||
"name": "prometheus-postgres-exporter",
|
||||
"homepage": "https://git.cryptic.systems/volker.raschek/prometheus-postgres-exporter.git",
|
||||
"license": "MIT",
|
||||
"private": true,
|
||||
"engineStrict": true,
|
||||
@@ -9,11 +9,13 @@
|
||||
"npm": ">=8.0.0"
|
||||
},
|
||||
"scripts": {
|
||||
"readme:link": "markdown-link-check *.md",
|
||||
"readme:lint": "markdownlint *.md -f",
|
||||
"readme:parameters": "readme-generator -v values.yaml -r README.md"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@bitnami/readme-generator-for-helm": "^2.5.0",
|
||||
"markdownlint-cli": "^0.41.0"
|
||||
"markdown-link-check": "^3.13.6",
|
||||
"markdownlint-cli": "^0.48.0"
|
||||
}
|
||||
}
|
||||
+62
-20
@@ -1,9 +1,16 @@
|
||||
{
|
||||
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
|
||||
"assignees": [ "volker.raschek" ],
|
||||
"extends": [
|
||||
"local>volker.raschek/renovate-config:default#master",
|
||||
"local>volker.raschek/renovate-config:container#master",
|
||||
"local>volker.raschek/renovate-config:actions#master",
|
||||
"local>volker.raschek/renovate-config:helm#master",
|
||||
"local>volker.raschek/renovate-config:npm#master",
|
||||
"local>volker.raschek/renovate-config:regexp#master"
|
||||
],
|
||||
"customManagers": [
|
||||
{
|
||||
"description": "Update container image reference",
|
||||
"customType": "regex",
|
||||
"fileMatch": [
|
||||
"^Chart\\.yaml$"
|
||||
],
|
||||
@@ -11,26 +18,61 @@
|
||||
"appVersion: \"(?<currentValue>.*?)\"\\s+"
|
||||
],
|
||||
"datasourceTemplate": "docker",
|
||||
"depNameTemplate": "prometheus-postgres-exporter",
|
||||
"lookupNameTemplate": "quay.io/prometheuscommunity/postgres-exporter"
|
||||
}
|
||||
],
|
||||
"labels": [ "renovate" ],
|
||||
"packageRules": [
|
||||
{
|
||||
"addLabels": [ "renovate/droneci", "renovate/automerge" ],
|
||||
"automerge": true,
|
||||
"matchManagers": "droneci",
|
||||
"matchUpdateTypes": [ "minor", "patch"]
|
||||
"depNameTemplate": "prometheuscommunity/postgres-exporter",
|
||||
"lookupNameTemplate": "quay.io/prometheuscommunity/postgres-exporter",
|
||||
"versioningTemplate": "semver"
|
||||
},
|
||||
{
|
||||
"addLabels": [ "renovate/markdownlint", "renovate/automerge" ],
|
||||
"automerge": true,
|
||||
"matchPackageNames": [ "markdownlint-cli", "@bitnami/readme-generator-for-helm" ],
|
||||
"matchManagers": [ "npm" ],
|
||||
"matchUpdateTypes": [ "minor", "patch"]
|
||||
"customType": "regex",
|
||||
"fileMatch": ["^README\\.md$"],
|
||||
"matchStrings": [
|
||||
"CHART_VERSION=(?<currentValue>.*)"
|
||||
],
|
||||
"depNameTemplate": "volker.raschek/prometheus-postgres-exporter",
|
||||
"packageNameTemplate": "https://git.cryptic.systems/volker.raschek/prometheus-postgres-exporter",
|
||||
"datasourceTemplate": "git-tags",
|
||||
"versioningTemplate": "semver"
|
||||
}
|
||||
],
|
||||
"rebaseLabel": "renovate/rebase",
|
||||
"rebaseWhen": "behind-base-branch"
|
||||
"packageRules": [
|
||||
{
|
||||
"groupName": "Update docker.io/library/node",
|
||||
"matchDepNames": [
|
||||
"docker.io/library/node",
|
||||
"library/node"
|
||||
]
|
||||
},
|
||||
{
|
||||
"addLabels": [
|
||||
"renovate/automerge",
|
||||
"renovate/container"
|
||||
],
|
||||
"automerge": true,
|
||||
"excludePackagePatterns": [
|
||||
"prometheuscommunity/postgres-exporter"
|
||||
],
|
||||
"matchDatasources": [
|
||||
"docker"
|
||||
],
|
||||
"matchUpdateTypes": [
|
||||
"minor",
|
||||
"patch"
|
||||
]
|
||||
},
|
||||
{
|
||||
"addLabels": [
|
||||
"renovate/automerge",
|
||||
"renovate/documentation"
|
||||
],
|
||||
"automerge": true,
|
||||
"matchDepNames": [
|
||||
"volker.raschek/prometheus-postgres-exporter"
|
||||
],
|
||||
"matchUpdateTypes": [
|
||||
"major",
|
||||
"minor",
|
||||
"patch"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
File renamed without changes.
@@ -0,0 +1,20 @@
|
||||
{{/* vim: set filetype=mustache: */}}
|
||||
|
||||
{{/* annotations */}}
|
||||
|
||||
{{- define "prometheus-postgres-exporter.configMap.grafanaDashboards.postgresExporter.annotations" -}}
|
||||
{{ include "prometheus-postgres-exporter.annotations" . }}
|
||||
{{- if .Values.grafana.dashboards.postgresExporter.annotations }}
|
||||
{{ toYaml .Values.grafana.dashboards.postgresExporter.annotations }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/* labels */}}
|
||||
|
||||
{{- define "prometheus-postgres-exporter.configMap.grafanaDashboards.postgresExporter.labels" -}}
|
||||
{{ include "prometheus-postgres-exporter.labels" . }}
|
||||
{{- if .Values.grafana.dashboards.postgresExporter.labels }}
|
||||
{{ toYaml .Values.grafana.dashboards.postgresExporter.labels }}
|
||||
{{- end }}
|
||||
{{ toYaml .Values.grafana.dashboardDiscoveryLabels }}
|
||||
{{- end }}
|
||||
+17
-6
@@ -9,6 +9,17 @@
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/* env */}}
|
||||
|
||||
{{- define "prometheus-postgres-exporter.deployment.env" -}}
|
||||
{{- $env := dict "env" (.Values.deployment.postgresExporter.env | default (list) ) }}
|
||||
{{- if and (hasKey .Values.deployment.postgresExporter.resources "limits") (hasKey .Values.deployment.postgresExporter.resources.limits "cpu") }}
|
||||
{{- $env = merge $env (dict "env" (list (dict "name" "GOMAXPROCS" "valueFrom" (dict "resourceFieldRef" (dict "divisor" "1" "resource" "limits.cpu"))))) }}
|
||||
{{- end }}
|
||||
{{ toYaml $env }}
|
||||
{{- end -}}
|
||||
|
||||
|
||||
{{/* envFrom */}}
|
||||
|
||||
{{- define "prometheus-postgres-exporter.deployment.envFrom" -}}
|
||||
@@ -52,15 +63,15 @@
|
||||
{{/* volumeMounts */}}
|
||||
|
||||
{{- define "prometheus-postgres-exporter.deployment.volumeMounts" -}}
|
||||
{{- $volumeMounts := dict "volumeMounts" (.Values.deployment.postgresExporter.volumeMounts | default (list) ) }}
|
||||
{{- $volumeMounts = merge $volumeMounts (dict "volumeMounts" (list (dict "name" "config.d" "mountPath" "/etc/prometheus-postgres-exporter/config.d" ))) }}
|
||||
{{ toYaml $volumeMounts }}
|
||||
{{- $volumeMounts := .Values.deployment.postgresExporter.volumeMounts | default list }}
|
||||
{{- $volumeMounts = concat $volumeMounts (list (dict "name" "config-d" "mountPath" "/etc/prometheus-postgres-exporter/config.d" )) }}
|
||||
{{ toYaml (dict "volumeMounts" $volumeMounts) }}
|
||||
{{- end -}}
|
||||
|
||||
{{/* volumes */}}
|
||||
|
||||
{{- define "prometheus-postgres-exporter.deployment.volumes" -}}
|
||||
{{- $volumes := dict "volumes" (.Values.deployment.volumes | default (list) ) }}
|
||||
{{- $volumes := .Values.deployment.volumes | default list }}
|
||||
|
||||
{{- $exporterSecretName := .Values.config.exporterConfig.existingSecret.secretName -}}
|
||||
{{- if not .Values.config.exporterConfig.existingSecret.enabled }}
|
||||
@@ -72,8 +83,8 @@
|
||||
{{- $webConfigSecretName = printf "%s-web-config" (include "prometheus-postgres-exporter.fullname" . ) }}
|
||||
{{- end }}
|
||||
|
||||
{{- $volumes = merge $volumes (dict "volumes" (list (dict "name" "config.d" "projected" (dict "defaultMode" "0444" "sources" (list (dict "secret" (dict "name" $exporterSecretName)) (dict "secret" (dict "name" $webConfigSecretName))))))) }}
|
||||
{{- $volumes = concat $volumes (list (dict "name" "config-d" "projected" (dict "defaultMode" 444 "sources" (list (dict "secret" (dict "name" $exporterSecretName)) (dict "secret" (dict "name" $webConfigSecretName)))))) }}
|
||||
|
||||
{{ toYaml $volumes }}
|
||||
{{ toYaml (dict "volumes" $volumes) }}
|
||||
|
||||
{{- end -}}
|
||||
File renamed without changes.
@@ -0,0 +1,19 @@
|
||||
{{/* vim: set filetype=mustache: */}}
|
||||
|
||||
{{/* annotations */}}
|
||||
|
||||
{{- define "prometheus-postgres-exporter.networkPolicies.annotations" -}}
|
||||
{{ include "prometheus-postgres-exporter.annotations" .context }}
|
||||
{{- if .networkPolicy.annotations }}
|
||||
{{ toYaml .networkPolicy.annotations }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/* labels */}}
|
||||
|
||||
{{- define "prometheus-postgres-exporter.networkPolicies.labels" -}}
|
||||
{{ include "prometheus-postgres-exporter.labels" .context }}
|
||||
{{- if .networkPolicy.labels }}
|
||||
{{ toYaml .networkPolicy.labels }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,48 @@
|
||||
---
|
||||
|
||||
{{/* annotations */}}
|
||||
|
||||
{{- define "prometheus-postgres-exporter.pod.annotations" -}}
|
||||
{{ include "prometheus-postgres-exporter.annotations" . }}
|
||||
|
||||
# The following annotations are required to trigger a rolling update. Further information can be found in the official
|
||||
# documentation of helm:
|
||||
#
|
||||
# https://helm.sh/docs/howto/charts_tips_and_tricks/#automatically-roll-deployments
|
||||
#
|
||||
|
||||
{{/* database */}}
|
||||
{{- if and .Values.config.database.existingSecret.enabled .Values.config.database.existingSecret.secretName }}
|
||||
{{- $secret := default (dict "data" (dict)) (lookup "v1" "Secret" .Release.Namespace .Values.config.database.existingSecret.secretName ) }}
|
||||
checksum/secret-database: {{ print $secret.spec | sha256sum }}
|
||||
{{- else }}
|
||||
checksum/secret-database: {{ include (print $.Template.BasePath "/secretDatabase.yaml") . | sha256sum }}
|
||||
{{- end }}
|
||||
|
||||
{{/* exporter config */}}
|
||||
{{- if and .Values.config.exporterConfig.existingSecret.enabled .Values.config.exporterConfig.existingSecret.secretName }}
|
||||
{{- $secret := default (dict "data" (dict)) (lookup "v1" "Secret" .Release.Namespace .Values.config.exporterConfig.existingSecret.secretName ) }}
|
||||
checksum/secret-exporter-config: {{ print $secret.spec | sha256sum }}
|
||||
{{- else }}
|
||||
checksum/secret-exporter-config: {{ include (print $.Template.BasePath "/secretExporterConfig.yaml") . | sha256sum }}
|
||||
{{- end }}
|
||||
|
||||
{{/* web config */}}
|
||||
{{- if and .Values.config.webConfig.existingSecret.enabled .Values.config.webConfig.existingSecret.secretName }}
|
||||
{{- $secret := default (dict "data" (dict)) (lookup "v1" "Secret" .Release.Namespace .Values.config.webConfig.existingSecret.secretName ) }}
|
||||
checksum/secret-web-config: {{ print $secret.spec | sha256sum }}
|
||||
{{- else }}
|
||||
checksum/secret-web-config: {{ include (print $.Template.BasePath "/secretWebConfig.yaml") . | sha256sum }}
|
||||
{{- end }}
|
||||
|
||||
{{- end }}
|
||||
|
||||
{{/* labels */}}
|
||||
|
||||
{{- define "prometheus-postgres-exporter.pod.labels" -}}
|
||||
{{ include "prometheus-postgres-exporter.labels" . }}
|
||||
{{- end }}
|
||||
|
||||
{{- define "prometheus-postgres-exporter.pod.selectorLabels" -}}
|
||||
{{ include "prometheus-postgres-exporter.selectorLabels" . }}
|
||||
{{- end }}
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File diff suppressed because it is too large.
Load diff
+16
-4
@@ -3,7 +3,7 @@ kind: Deployment
|
||||
metadata:
|
||||
{{- with (include "prometheus-postgres-exporter.deployment.annotations" . | fromYaml) }}
|
||||
annotations:
|
||||
{{- tpl (. | toYaml) $ | nindent 4 }}
|
||||
{{- tpl (toYaml .) $ | nindent 4 }}
|
||||
{{- end }}
|
||||
{{- with (include "prometheus-postgres-exporter.deployment.labels" . | fromYaml) }}
|
||||
labels:
|
||||
@@ -12,26 +12,34 @@ metadata:
|
||||
name: {{ include "prometheus-postgres-exporter.fullname" . }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
spec:
|
||||
replicas: {{ .Values.deployment.replicas }}
|
||||
selector:
|
||||
matchLabels:
|
||||
{{- include "prometheus-postgres-exporter.pod.selectorLabels" . | nindent 6 }}
|
||||
template:
|
||||
metadata:
|
||||
annotations:
|
||||
{{- include "prometheus-postgres-exporter.pod.annotations" . | nindent 8 }}
|
||||
labels:
|
||||
{{- include "prometheus-postgres-exporter.pod.labels" . | nindent 8 }}
|
||||
spec:
|
||||
{{- with .Values.deployment.affinity }}
|
||||
affinity:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
containers:
|
||||
- name: postgres-exporter
|
||||
args:
|
||||
- "--config.file=/etc/prometheus-postgres-exporter/config.d/exporterConfig.yaml"
|
||||
- "--web.config.file=/etc/prometheus-postgres-exporter/config.d/web-config.yaml"
|
||||
- "--web.config.file=/etc/prometheus-postgres-exporter/config.d/webConfig.yaml"
|
||||
- "--web.listen-address=:9187"
|
||||
{{- range .Values.deployment.postgresExporter.args }}
|
||||
- {{ . | quote }}
|
||||
{{- end }}
|
||||
{{- with .Values.deployment.postgresExporter.env }}
|
||||
{{- $env := (include "prometheus-postgres-exporter.deployment.env" . | fromYaml) }}
|
||||
{{- if and (hasKey $env "env") (gt (len $env.env) 0) }}
|
||||
env:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- toYaml $env.env | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- $envFrom := (include "prometheus-postgres-exporter.deployment.envFrom" . | fromYaml) }}
|
||||
{{- if hasKey $envFrom "envFrom" }}
|
||||
@@ -120,3 +128,7 @@ spec:
|
||||
volumes:
|
||||
{{- toYaml $volumes.volumes | nindent 6 }}
|
||||
{{- end }}
|
||||
{{- with .Values.deployment.strategy }}
|
||||
strategy:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
@@ -5,7 +5,7 @@ kind: Ingress
|
||||
metadata:
|
||||
{{- with (include "prometheus-postgres-exporter.ingress.annotations" . | fromYaml) }}
|
||||
annotations:
|
||||
{{- tpl (. | toYaml) $ | nindent 4 }}
|
||||
{{- tpl (toYaml .) $ | nindent 4 }}
|
||||
{{- end }}
|
||||
{{- with (include "prometheus-postgres-exporter.ingress.labels" . | fromYaml) }}
|
||||
labels:
|
||||
@@ -0,0 +1,36 @@
|
||||
{{- if .Values.networkPolicies.enabled }}
|
||||
{{- range $key, $value := .Values.networkPolicies -}}
|
||||
{{- if and (not (eq $key "enabled")) $value.enabled }}
|
||||
---
|
||||
apiVersion: networking.k8s.io/v1
|
||||
kind: NetworkPolicy
|
||||
metadata:
|
||||
{{- with (include "prometheus-postgres-exporter.networkPolicies.annotations" (dict "networkPolicy" $value "context" $) | fromYaml) }}
|
||||
annotations:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
{{- with (include "prometheus-postgres-exporter.networkPolicies.labels" (dict "networkPolicy" $value "context" $) | fromYaml) }}
|
||||
labels:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
name: {{ printf "%s-%s" (include "prometheus-postgres-exporter.fullname" $ ) $key }}
|
||||
namespace: {{ $.Release.Namespace }}
|
||||
spec:
|
||||
podSelector:
|
||||
matchLabels:
|
||||
{{- include "prometheus-postgres-exporter.pod.selectorLabels" $ | nindent 6 }}
|
||||
{{- with $value.policyTypes }}
|
||||
policyTypes:
|
||||
{{- toYaml . | nindent 2 }}
|
||||
{{- end }}
|
||||
{{- with $value.egress }}
|
||||
egress:
|
||||
{{- toYaml . | nindent 2 }}
|
||||
{{- end }}
|
||||
{{- with $value.ingress }}
|
||||
ingress:
|
||||
{{- toYaml . | nindent 2 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
File renamed without changes.
@@ -1,17 +0,0 @@
|
||||
---
|
||||
|
||||
{{/* annotations */}}
|
||||
|
||||
{{- define "prometheus-postgres-exporter.pod.annotations" -}}
|
||||
{{ include "prometheus-postgres-exporter.annotations" . }}
|
||||
{{- end }}
|
||||
|
||||
{{/* labels */}}
|
||||
|
||||
{{- define "prometheus-postgres-exporter.pod.labels" -}}
|
||||
{{ include "prometheus-postgres-exporter.labels" . }}
|
||||
{{- end }}
|
||||
|
||||
{{- define "prometheus-postgres-exporter.pod.selectorLabels" -}}
|
||||
{{ include "prometheus-postgres-exporter.selectorLabels" . }}
|
||||
{{- end }}
|
||||
+1
-1
@@ -16,7 +16,7 @@ metadata:
|
||||
spec:
|
||||
{{- with .Values.prometheus.rules }}
|
||||
groups:
|
||||
- name: {{ template "prometheus-postgres-exporter.name" $ }}
|
||||
- name: {{ template "prometheus-postgres-exporter.fullname" $ }}
|
||||
rules:
|
||||
{{ toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
File renamed without changes.
File renamed without changes.
+1
-1
@@ -11,7 +11,7 @@ metadata:
|
||||
labels:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
name: {{ include "prometheus-postgres-exporter.fullname" . }}-webconfig
|
||||
name: {{ include "prometheus-postgres-exporter.fullname" . }}-web-config
|
||||
namespace: {{ .Release.Namespace }}
|
||||
stringData:
|
||||
webConfig.yaml: |
|
||||
File renamed without changes.
File renamed without changes.
+1
-1
@@ -25,7 +25,7 @@ spec:
|
||||
{{- toYaml . | nindent 6 }}
|
||||
{{- end }}
|
||||
scrapeTimeout: {{ required "The scrape timeout of the serviceMonitor is not defined!" .Values.prometheus.metrics.serviceMonitor.scrapeTimeout }}
|
||||
scheme: {{ required "The scheme of the serviceMonitor is not defined!" .Values.prometheus.metrics.serviceMonitor.scheme}}
|
||||
scheme: {{ required "The scheme of the serviceMonitor is not defined!" .Values.prometheus.metrics.serviceMonitor.scheme }}
|
||||
targetPort: {{ required "The port of the service is not defined!" .Values.services.http.port }}
|
||||
{{- with .Values.prometheus.metrics.serviceMonitor.tlsConfig }}
|
||||
tlsConfig:
|
||||
@@ -0,0 +1,79 @@
|
||||
chart:
|
||||
appVersion: 0.1.0
|
||||
version: 0.1.0
|
||||
suite: ConfigMap template (Grafana Dashboard PostgresExporter)
|
||||
release:
|
||||
name: prometheus-postgres-exporter-unittest
|
||||
namespace: testing
|
||||
templates:
|
||||
- templates/configMapGrafanaDashboardPostgresExporter.yaml
|
||||
tests:
|
||||
- it: Rendering postgresExporter
|
||||
asserts:
|
||||
- hasDocuments:
|
||||
count: 0
|
||||
|
||||
- it: Rendering
|
||||
set:
|
||||
grafana.enabled: true
|
||||
asserts:
|
||||
- hasDocuments:
|
||||
count: 1
|
||||
- containsDocument:
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
name: prometheus-postgres-exporter-unittest-grafana-dashboard-postgres-exporter
|
||||
namespace: testing
|
||||
- notExists:
|
||||
path: metadata.annotations
|
||||
- equal:
|
||||
path: metadata.labels
|
||||
value:
|
||||
app.kubernetes.io/instance: prometheus-postgres-exporter-unittest
|
||||
app.kubernetes.io/managed-by: Helm
|
||||
app.kubernetes.io/name: prometheus-postgres-exporter
|
||||
app.kubernetes.io/version: 0.1.0
|
||||
grafana_dashboard: "1"
|
||||
helm.sh/chart: prometheus-postgres-exporter-0.1.0
|
||||
- exists:
|
||||
path: data["postgresExporter.json"]
|
||||
|
||||
- it: Test custom annotations and labels
|
||||
set:
|
||||
grafana.enabled: true
|
||||
grafana.dashboards.postgresExporter.annotations:
|
||||
foo: bar
|
||||
grafana.dashboards.postgresExporter.labels:
|
||||
bar: foo
|
||||
asserts:
|
||||
- equal:
|
||||
path: metadata.annotations
|
||||
value:
|
||||
foo: bar
|
||||
- equal:
|
||||
path: metadata.labels
|
||||
value:
|
||||
app.kubernetes.io/instance: prometheus-postgres-exporter-unittest
|
||||
app.kubernetes.io/managed-by: Helm
|
||||
app.kubernetes.io/name: prometheus-postgres-exporter
|
||||
app.kubernetes.io/version: 0.1.0
|
||||
grafana_dashboard: "1"
|
||||
helm.sh/chart: prometheus-postgres-exporter-0.1.0
|
||||
bar: foo
|
||||
|
||||
- it: Test custom grafana discovery labels
|
||||
set:
|
||||
grafana.enabled: true
|
||||
grafana.dashboardDiscoveryLabels:
|
||||
grafana_dashboard: null
|
||||
my-custom-discovery-label: my-value
|
||||
asserts:
|
||||
- equal:
|
||||
path: metadata.labels
|
||||
value:
|
||||
app.kubernetes.io/instance: prometheus-postgres-exporter-unittest
|
||||
app.kubernetes.io/managed-by: Helm
|
||||
app.kubernetes.io/name: prometheus-postgres-exporter
|
||||
app.kubernetes.io/version: 0.1.0
|
||||
my-custom-discovery-label: my-value
|
||||
helm.sh/chart: prometheus-postgres-exporter-0.1.0
|
||||
@@ -6,19 +6,30 @@ release:
|
||||
name: prometheus-postgres-exporter-unittest
|
||||
namespace: testing
|
||||
templates:
|
||||
- templates/prometheus-postgres-exporter/deployment.yaml
|
||||
- templates/deployment.yaml
|
||||
- templates/secretDatabase.yaml
|
||||
- templates/secretExporterConfig.yaml
|
||||
- templates/secretWebConfig.yaml
|
||||
tests:
|
||||
- it: Rendering default
|
||||
set:
|
||||
# Ensure that the secrets and config maps are well configured.
|
||||
config.database.secret.databaseUsername: "postgres"
|
||||
config.database.secret.databasePassword: "postgres"
|
||||
config.database.secret.databaseConnectionUrl: "localhost:5432/postgres?sslmode=disable"
|
||||
asserts:
|
||||
- hasDocuments:
|
||||
count: 1
|
||||
template: templates/deployment.yaml
|
||||
- containsDocument:
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
name: prometheus-postgres-exporter-unittest
|
||||
namespace: testing
|
||||
template: templates/deployment.yaml
|
||||
- notExists:
|
||||
path: metadata.annotations
|
||||
template: templates/deployment.yaml
|
||||
- equal:
|
||||
path: metadata.labels
|
||||
value:
|
||||
@@ -27,72 +38,180 @@ tests:
|
||||
app.kubernetes.io/name: prometheus-postgres-exporter
|
||||
app.kubernetes.io/version: 0.1.0
|
||||
helm.sh/chart: prometheus-postgres-exporter-0.1.0
|
||||
template: templates/deployment.yaml
|
||||
- equal:
|
||||
path: spec.replicas
|
||||
value: 1
|
||||
template: templates/deployment.yaml
|
||||
- exists:
|
||||
path: spec.template.metadata.annotations.checksum/secret-database
|
||||
template: templates/deployment.yaml
|
||||
- exists:
|
||||
path: spec.template.metadata.annotations.checksum/secret-exporter-config
|
||||
template: templates/deployment.yaml
|
||||
- exists:
|
||||
path: spec.template.metadata.annotations.checksum/secret-web-config
|
||||
template: templates/deployment.yaml
|
||||
- equal:
|
||||
path: spec.template.metadata.labels
|
||||
value:
|
||||
app.kubernetes.io/instance: prometheus-postgres-exporter-unittest
|
||||
app.kubernetes.io/managed-by: Helm
|
||||
app.kubernetes.io/name: prometheus-postgres-exporter
|
||||
app.kubernetes.io/version: 0.1.0
|
||||
helm.sh/chart: prometheus-postgres-exporter-0.1.0
|
||||
template: templates/deployment.yaml
|
||||
- notExists:
|
||||
path: spec.template.spec.affinity
|
||||
template: templates/deployment.yaml
|
||||
- contains:
|
||||
path: spec.template.spec.containers[0].envFrom
|
||||
content:
|
||||
secretRef:
|
||||
name: prometheus-postgres-exporter-unittest-database-env
|
||||
template: templates/deployment.yaml
|
||||
- equal:
|
||||
path: spec.template.spec.containers[0].args
|
||||
value:
|
||||
- --config.file=/etc/prometheus-postgres-exporter/config.d/exporterConfig.yaml
|
||||
- --web.config.file=/etc/prometheus-postgres-exporter/config.d/web-config.yaml
|
||||
- --web.config.file=/etc/prometheus-postgres-exporter/config.d/webConfig.yaml
|
||||
- --web.listen-address=:9187
|
||||
template: templates/deployment.yaml
|
||||
- equal:
|
||||
path: spec.template.spec.containers[0].volumeMounts
|
||||
value:
|
||||
- mountPath: /etc/prometheus-postgres-exporter/config.d
|
||||
name: config.d
|
||||
name: config-d
|
||||
template: templates/deployment.yaml
|
||||
- equal:
|
||||
path: spec.template.spec.volumes
|
||||
value:
|
||||
- name: config.d
|
||||
- name: config-d
|
||||
projected:
|
||||
defaultMode: "0444"
|
||||
defaultMode: 444
|
||||
sources:
|
||||
- secret:
|
||||
name: prometheus-postgres-exporter-unittest-exporter-config
|
||||
- secret:
|
||||
name: prometheus-postgres-exporter-unittest-web-config
|
||||
template: templates/deployment.yaml
|
||||
- equal:
|
||||
path: spec.template.spec.containers[0].image
|
||||
value: quay.io/prometheuscommunity/postgres-exporter:v0.1.0
|
||||
template: templates/deployment.yaml
|
||||
- equal:
|
||||
path: spec.template.spec.containers[0].imagePullPolicy
|
||||
value: IfNotPresent
|
||||
template: templates/deployment.yaml
|
||||
- notExists:
|
||||
path: spec.template.spec.containers[0].resources
|
||||
template: templates/deployment.yaml
|
||||
- notExists:
|
||||
path: spec.template.spec.containers[0].securityContext
|
||||
template: templates/deployment.yaml
|
||||
- notExists:
|
||||
path: spec.template.spec.dnsConfig
|
||||
template: templates/deployment.yaml
|
||||
- notExists:
|
||||
path: spec.template.spec.dnsPolicy
|
||||
template: templates/deployment.yaml
|
||||
- notExists:
|
||||
path: spec.template.spec.hostname
|
||||
template: templates/deployment.yaml
|
||||
- equal:
|
||||
path: spec.template.spec.hostNetwork
|
||||
value: false
|
||||
template: templates/deployment.yaml
|
||||
- notExists:
|
||||
path: spec.template.spec.imagePullSecrets
|
||||
template: templates/deployment.yaml
|
||||
- notExists:
|
||||
path: spec.template.spec.nodeSelector
|
||||
template: templates/deployment.yaml
|
||||
- notExists:
|
||||
path: spec.template.spec.priorityClassName
|
||||
template: templates/deployment.yaml
|
||||
- notExists:
|
||||
path: spec.template.spec.restartPolicy
|
||||
template: templates/deployment.yaml
|
||||
- notExists:
|
||||
path: spec.template.spec.subdomain
|
||||
template: templates/deployment.yaml
|
||||
- equal:
|
||||
path: spec.template.spec.terminationGracePeriodSeconds
|
||||
value: 60
|
||||
template: templates/deployment.yaml
|
||||
- notExists:
|
||||
path: spec.template.spec.tolerations
|
||||
template: templates/deployment.yaml
|
||||
- notExists:
|
||||
path: spec.template.spec.topologySpreadConstraints
|
||||
template: templates/deployment.yaml
|
||||
- equal:
|
||||
path: spec.strategy
|
||||
value:
|
||||
type: "RollingUpdate"
|
||||
rollingUpdate:
|
||||
maxSurge: 1
|
||||
maxUnavailable: 1
|
||||
template: templates/deployment.yaml
|
||||
|
||||
- it: Test custom replicas
|
||||
set:
|
||||
# Ensure that the secrets and config maps are well configured.
|
||||
config.database.secret.databaseUsername: "postgres"
|
||||
config.database.secret.databasePassword: "postgres"
|
||||
config.database.secret.databaseConnectionUrl: "localhost:5432/postgres?sslmode=disable"
|
||||
|
||||
# Normal test values
|
||||
deployment.replicas: 3
|
||||
asserts:
|
||||
- equal:
|
||||
path: spec.replicas
|
||||
value: 3
|
||||
template: templates/deployment.yaml
|
||||
|
||||
- it: Test custom affinity
|
||||
set:
|
||||
# Ensure that the secrets and config maps are well configured.
|
||||
config.database.secret.databaseUsername: "postgres"
|
||||
config.database.secret.databasePassword: "postgres"
|
||||
config.database.secret.databaseConnectionUrl: "localhost:5432/postgres?sslmode=disable"
|
||||
|
||||
# Normal test values
|
||||
deployment.affinity:
|
||||
nodeAffinity:
|
||||
requiredDuringSchedulingIgnoredDuringExecution:
|
||||
nodeSelectorTerms:
|
||||
- matchExpressions:
|
||||
- key: topology.kubernetes.io/zone
|
||||
operator: In
|
||||
values:
|
||||
- antarctica-east1
|
||||
- antarctica-west1
|
||||
asserts:
|
||||
- equal:
|
||||
path: spec.template.spec.affinity
|
||||
value:
|
||||
nodeAffinity:
|
||||
requiredDuringSchedulingIgnoredDuringExecution:
|
||||
nodeSelectorTerms:
|
||||
- matchExpressions:
|
||||
- key: topology.kubernetes.io/zone
|
||||
operator: In
|
||||
values:
|
||||
- antarctica-east1
|
||||
- antarctica-west1
|
||||
template: templates/deployment.yaml
|
||||
|
||||
- it: Test additional arguments
|
||||
set:
|
||||
# Ensure that the secrets and config maps are well configured.
|
||||
config.database.secret.databaseUsername: "postgres"
|
||||
config.database.secret.databasePassword: "postgres"
|
||||
config.database.secret.databaseConnectionUrl: "localhost:5432/postgres?sslmode=disable"
|
||||
|
||||
# Normal test values
|
||||
deployment.postgresExporter.args:
|
||||
- "--foo=bar"
|
||||
- "--bar=foo"
|
||||
@@ -101,30 +220,46 @@ tests:
|
||||
path: spec.template.spec.containers[0].args
|
||||
value:
|
||||
- --config.file=/etc/prometheus-postgres-exporter/config.d/exporterConfig.yaml
|
||||
- --web.config.file=/etc/prometheus-postgres-exporter/config.d/web-config.yaml
|
||||
- --web.config.file=/etc/prometheus-postgres-exporter/config.d/webConfig.yaml
|
||||
- --web.listen-address=:9187
|
||||
- --foo=bar
|
||||
- --bar=foo
|
||||
template: templates/deployment.yaml
|
||||
|
||||
- it: Test custom imageRegistry and imageRepository
|
||||
set:
|
||||
# Ensure that the secrets and config maps are well configured.
|
||||
config.database.secret.databaseUsername: "postgres"
|
||||
config.database.secret.databasePassword: "postgres"
|
||||
config.database.secret.databaseConnectionUrl: "localhost:5432/postgres?sslmode=disable"
|
||||
|
||||
# Normal test values
|
||||
deployment.postgresExporter.image.registry: registry.example.local
|
||||
deployment.postgresExporter.image.repository: path/special/prometheus-postgres-exporter
|
||||
asserts:
|
||||
- equal:
|
||||
path: spec.template.spec.containers[0].image
|
||||
value: registry.example.local/path/special/prometheus-postgres-exporter:v0.1.0
|
||||
template: templates/deployment.yaml
|
||||
|
||||
- it: Test custom imagePullPolicy
|
||||
set:
|
||||
# Ensure that the secrets and config maps are well configured.
|
||||
config.database.secret.databaseUsername: "postgres"
|
||||
config.database.secret.databasePassword: "postgres"
|
||||
config.database.secret.databaseConnectionUrl: "localhost:5432/postgres?sslmode=disable"
|
||||
|
||||
# Normal test values
|
||||
deployment.postgresExporter.image.pullPolicy: Always
|
||||
asserts:
|
||||
- equal:
|
||||
path: spec.template.spec.containers[0].imagePullPolicy
|
||||
value: Always
|
||||
template: templates/deployment.yaml
|
||||
|
||||
- it: Test config.database.existingSecret
|
||||
set:
|
||||
# Normal test values
|
||||
config.database.existingSecret.enabled: true
|
||||
config.database.existingSecret.secretName: custom-database-secret
|
||||
asserts:
|
||||
@@ -133,9 +268,16 @@ tests:
|
||||
content:
|
||||
secretRef:
|
||||
name: custom-database-secret
|
||||
template: templates/deployment.yaml
|
||||
|
||||
- it: Test config.exporterConfig.existingSecret
|
||||
set:
|
||||
# Ensure that the secrets and config maps are well configured.
|
||||
config.database.secret.databaseUsername: "postgres"
|
||||
config.database.secret.databasePassword: "postgres"
|
||||
config.database.secret.databaseConnectionUrl: "localhost:5432/postgres?sslmode=disable"
|
||||
|
||||
# Normal test values
|
||||
config.exporterConfig.existingSecret.enabled: true
|
||||
config.exporterConfig.existingSecret.secretName: exporter-config-secret
|
||||
asserts:
|
||||
@@ -143,21 +285,29 @@ tests:
|
||||
path: spec.template.spec.containers[0].volumeMounts
|
||||
value:
|
||||
- mountPath: /etc/prometheus-postgres-exporter/config.d
|
||||
name: config.d
|
||||
name: config-d
|
||||
template: templates/deployment.yaml
|
||||
- equal:
|
||||
path: spec.template.spec.volumes
|
||||
value:
|
||||
- name: config.d
|
||||
- name: config-d
|
||||
projected:
|
||||
defaultMode: "0444"
|
||||
defaultMode: 444
|
||||
sources:
|
||||
- secret:
|
||||
name: exporter-config-secret
|
||||
- secret:
|
||||
name: prometheus-postgres-exporter-unittest-web-config
|
||||
template: templates/deployment.yaml
|
||||
|
||||
- it: Test config.webConfig.existingSecret
|
||||
set:
|
||||
# Ensure that the secrets and config maps are well configured.
|
||||
config.database.secret.databaseUsername: "postgres"
|
||||
config.database.secret.databasePassword: "postgres"
|
||||
config.database.secret.databaseConnectionUrl: "localhost:5432/postgres?sslmode=disable"
|
||||
|
||||
# Normal test values
|
||||
config.webConfig.existingSecret.enabled: true
|
||||
config.webConfig.existingSecret.secretName: web-config-secret
|
||||
asserts:
|
||||
@@ -165,21 +315,29 @@ tests:
|
||||
path: spec.template.spec.containers[0].volumeMounts
|
||||
value:
|
||||
- mountPath: /etc/prometheus-postgres-exporter/config.d
|
||||
name: config.d
|
||||
name: config-d
|
||||
template: templates/deployment.yaml
|
||||
- equal:
|
||||
path: spec.template.spec.volumes
|
||||
value:
|
||||
- name: config.d
|
||||
- name: config-d
|
||||
projected:
|
||||
defaultMode: "0444"
|
||||
defaultMode: 444
|
||||
sources:
|
||||
- secret:
|
||||
name: prometheus-postgres-exporter-unittest-exporter-config
|
||||
- secret:
|
||||
name: web-config-secret
|
||||
template: templates/deployment.yaml
|
||||
|
||||
- it: Test custom resource limits and requests
|
||||
set:
|
||||
# Ensure that the secrets and config maps are well configured.
|
||||
config.database.secret.databaseUsername: "postgres"
|
||||
config.database.secret.databasePassword: "postgres"
|
||||
config.database.secret.databaseConnectionUrl: "localhost:5432/postgres?sslmode=disable"
|
||||
|
||||
# Normal test values
|
||||
deployment.postgresExporter.resources:
|
||||
limits:
|
||||
cpu: 100m
|
||||
@@ -188,6 +346,15 @@ tests:
|
||||
cpu: 25m
|
||||
memory: 100MB
|
||||
asserts:
|
||||
- equal:
|
||||
path: spec.template.spec.containers[0].env
|
||||
value:
|
||||
- name: GOMAXPROCS
|
||||
valueFrom:
|
||||
resourceFieldRef:
|
||||
divisor: "1"
|
||||
resource: limits.cpu
|
||||
template: templates/deployment.yaml
|
||||
- equal:
|
||||
path: spec.template.spec.containers[0].resources
|
||||
value:
|
||||
@@ -197,9 +364,16 @@ tests:
|
||||
requests:
|
||||
cpu: 25m
|
||||
memory: 100MB
|
||||
template: templates/deployment.yaml
|
||||
|
||||
- it: Test custom securityContext
|
||||
set:
|
||||
# Ensure that the secrets and config maps are well configured.
|
||||
config.database.secret.databaseUsername: "postgres"
|
||||
config.database.secret.databasePassword: "postgres"
|
||||
config.database.secret.databaseConnectionUrl: "localhost:5432/postgres?sslmode=disable"
|
||||
|
||||
# Normal test values
|
||||
deployment.postgresExporter.securityContext:
|
||||
capabilities:
|
||||
add:
|
||||
@@ -223,9 +397,16 @@ tests:
|
||||
readOnlyRootFilesystem: true
|
||||
runAsNonRoot: true
|
||||
runAsUser: 1000
|
||||
template: templates/deployment.yaml
|
||||
|
||||
- it: Test dnsConfig
|
||||
set:
|
||||
# Ensure that the secrets and config maps are well configured.
|
||||
config.database.secret.databaseUsername: "postgres"
|
||||
config.database.secret.databasePassword: "postgres"
|
||||
config.database.secret.databaseConnectionUrl: "localhost:5432/postgres?sslmode=disable"
|
||||
|
||||
# Normal test values
|
||||
deployment.dnsConfig:
|
||||
nameservers:
|
||||
- "8.8.8.8"
|
||||
@@ -237,17 +418,31 @@ tests:
|
||||
nameservers:
|
||||
- "8.8.8.8"
|
||||
- "8.8.4.4"
|
||||
template: templates/deployment.yaml
|
||||
|
||||
- it: Test dnsPolicy
|
||||
set:
|
||||
# Ensure that the secrets and config maps are well configured.
|
||||
config.database.secret.databaseUsername: "postgres"
|
||||
config.database.secret.databasePassword: "postgres"
|
||||
config.database.secret.databaseConnectionUrl: "localhost:5432/postgres?sslmode=disable"
|
||||
|
||||
# Normal test values
|
||||
deployment.dnsPolicy: ClusterFirst
|
||||
asserts:
|
||||
- equal:
|
||||
path: spec.template.spec.dnsPolicy
|
||||
value: ClusterFirst
|
||||
template: templates/deployment.yaml
|
||||
|
||||
- it: Test hostNetwork, hostname, subdomain
|
||||
set:
|
||||
# Ensure that the secrets and config maps are well configured.
|
||||
config.database.secret.databaseUsername: "postgres"
|
||||
config.database.secret.databasePassword: "postgres"
|
||||
config.database.secret.databaseConnectionUrl: "localhost:5432/postgres?sslmode=disable"
|
||||
|
||||
# Normal test values
|
||||
deployment.hostNetwork: true
|
||||
deployment.hostname: pg-exporter
|
||||
deployment.subdomain: exporters.internal
|
||||
@@ -255,15 +450,24 @@ tests:
|
||||
- equal:
|
||||
path: spec.template.spec.hostNetwork
|
||||
value: true
|
||||
template: templates/deployment.yaml
|
||||
- equal:
|
||||
path: spec.template.spec.hostname
|
||||
value: pg-exporter
|
||||
template: templates/deployment.yaml
|
||||
- equal:
|
||||
path: spec.template.spec.subdomain
|
||||
value: exporters.internal
|
||||
template: templates/deployment.yaml
|
||||
|
||||
- it: Test imagePullSecrets
|
||||
set:
|
||||
# Ensure that the secrets and config maps are well configured.
|
||||
config.database.secret.databaseUsername: "postgres"
|
||||
config.database.secret.databasePassword: "postgres"
|
||||
config.database.secret.databaseConnectionUrl: "localhost:5432/postgres?sslmode=disable"
|
||||
|
||||
# Normal test values
|
||||
deployment.imagePullSecrets:
|
||||
- name: my-pull-secret
|
||||
- name: my-special-secret
|
||||
@@ -273,9 +477,16 @@ tests:
|
||||
value:
|
||||
- name: my-pull-secret
|
||||
- name: my-special-secret
|
||||
template: templates/deployment.yaml
|
||||
|
||||
- it: Test nodeSelector
|
||||
set:
|
||||
# Ensure that the secrets and config maps are well configured.
|
||||
config.database.secret.databaseUsername: "postgres"
|
||||
config.database.secret.databasePassword: "postgres"
|
||||
config.database.secret.databaseConnectionUrl: "localhost:5432/postgres?sslmode=disable"
|
||||
|
||||
# Normal test values
|
||||
deployment.nodeSelector:
|
||||
foo: bar
|
||||
asserts:
|
||||
@@ -283,33 +494,61 @@ tests:
|
||||
path: spec.template.spec.nodeSelector
|
||||
value:
|
||||
foo: bar
|
||||
template: templates/deployment.yaml
|
||||
|
||||
- it: Test priorityClassName
|
||||
set:
|
||||
# Ensure that the secrets and config maps are well configured.
|
||||
config.database.secret.databaseUsername: "postgres"
|
||||
config.database.secret.databasePassword: "postgres"
|
||||
config.database.secret.databaseConnectionUrl: "localhost:5432/postgres?sslmode=disable"
|
||||
|
||||
# Normal test values
|
||||
deployment.priorityClassName: my-priority
|
||||
asserts:
|
||||
- equal:
|
||||
path: spec.template.spec.priorityClassName
|
||||
value: my-priority
|
||||
template: templates/deployment.yaml
|
||||
|
||||
- it: Test restartPolicy
|
||||
set:
|
||||
# Ensure that the secrets and config maps are well configured.
|
||||
config.database.secret.databaseUsername: "postgres"
|
||||
config.database.secret.databasePassword: "postgres"
|
||||
config.database.secret.databaseConnectionUrl: "localhost:5432/postgres?sslmode=disable"
|
||||
|
||||
# Normal test values
|
||||
deployment.restartPolicy: Always
|
||||
asserts:
|
||||
- equal:
|
||||
path: spec.template.spec.restartPolicy
|
||||
value: Always
|
||||
template: templates/deployment.yaml
|
||||
|
||||
- it: Test terminationGracePeriodSeconds
|
||||
set:
|
||||
# Ensure that the secrets and config maps are well configured.
|
||||
config.database.secret.databaseUsername: "postgres"
|
||||
config.database.secret.databasePassword: "postgres"
|
||||
config.database.secret.databaseConnectionUrl: "localhost:5432/postgres?sslmode=disable"
|
||||
|
||||
# Normal test values
|
||||
deployment.terminationGracePeriodSeconds: 120
|
||||
asserts:
|
||||
- equal:
|
||||
path: spec.template.spec.terminationGracePeriodSeconds
|
||||
value: 120
|
||||
template: templates/deployment.yaml
|
||||
|
||||
- it: Test tolerations
|
||||
set:
|
||||
# Ensure that the secrets and config maps are well configured.
|
||||
config.database.secret.databaseUsername: "postgres"
|
||||
config.database.secret.databasePassword: "postgres"
|
||||
config.database.secret.databaseConnectionUrl: "localhost:5432/postgres?sslmode=disable"
|
||||
|
||||
# Normal test values
|
||||
deployment.tolerations:
|
||||
- key: database/type
|
||||
operator: Equal
|
||||
@@ -323,9 +562,16 @@ tests:
|
||||
operator: Equal
|
||||
value: postgres
|
||||
effect: NoSchedule
|
||||
template: templates/deployment.yaml
|
||||
|
||||
- it: Test topologySpreadConstraints
|
||||
set:
|
||||
# Ensure that the secrets and config maps are well configured.
|
||||
config.database.secret.databaseUsername: "postgres"
|
||||
config.database.secret.databasePassword: "postgres"
|
||||
config.database.secret.databaseConnectionUrl: "localhost:5432/postgres?sslmode=disable"
|
||||
|
||||
# Normal test values
|
||||
deployment.topologySpreadConstraints:
|
||||
- topologyKey: kubernetes.io/hostname
|
||||
whenUnsatisfiable: DoNotSchedule
|
||||
@@ -341,9 +587,16 @@ tests:
|
||||
labelSelector:
|
||||
matchLabels:
|
||||
app.kubernetes.io/instance: prometheus-postgres-exporter
|
||||
template: templates/deployment.yaml
|
||||
|
||||
- it: Test additional volumeMounts and volumes
|
||||
set:
|
||||
# Ensure that the secrets and config maps are well configured.
|
||||
config.database.secret.databaseUsername: "postgres"
|
||||
config.database.secret.databasePassword: "postgres"
|
||||
config.database.secret.databaseConnectionUrl: "localhost:5432/postgres?sslmode=disable"
|
||||
|
||||
# Normal test values
|
||||
deployment.postgresExporter.volumeMounts:
|
||||
- name: data
|
||||
mountPath: /usr/lib/prometheus-postgres-exporter/data
|
||||
@@ -352,14 +605,26 @@ tests:
|
||||
hostPath:
|
||||
path: /usr/lib/prometheus-postgres-exporter/data
|
||||
asserts:
|
||||
- contains:
|
||||
- equal:
|
||||
path: spec.template.spec.containers[0].volumeMounts
|
||||
content:
|
||||
name: data
|
||||
value:
|
||||
- name: data
|
||||
mountPath: /usr/lib/prometheus-postgres-exporter/data
|
||||
- contains:
|
||||
- name: config-d
|
||||
mountPath: /etc/prometheus-postgres-exporter/config.d
|
||||
template: templates/deployment.yaml
|
||||
- equal:
|
||||
path: spec.template.spec.volumes
|
||||
content:
|
||||
name: data
|
||||
value:
|
||||
- name: data
|
||||
hostPath:
|
||||
path: /usr/lib/prometheus-postgres-exporter/data
|
||||
- name: config-d
|
||||
projected:
|
||||
defaultMode: 444
|
||||
sources:
|
||||
- secret:
|
||||
name: prometheus-postgres-exporter-unittest-exporter-config
|
||||
- secret:
|
||||
name: prometheus-postgres-exporter-unittest-web-config
|
||||
template: templates/deployment.yaml
|
||||
@@ -6,7 +6,7 @@ release:
|
||||
name: prometheus-postgres-exporter-unittest
|
||||
namespace: testing
|
||||
templates:
|
||||
- templates/prometheus-postgres-exporter/ingress.yaml
|
||||
- templates/ingress.yaml
|
||||
tests:
|
||||
- it: Skip ingress by default.
|
||||
asserts:
|
||||
|
||||
@@ -0,0 +1,118 @@
|
||||
chart:
|
||||
appVersion: 0.1.0
|
||||
version: 0.1.0
|
||||
suite: NetworkPolicies template (basic)
|
||||
release:
|
||||
name: prometheus-postgres-exporter-unittest
|
||||
namespace: testing
|
||||
templates:
|
||||
- templates/networkPolicies.yaml
|
||||
tests:
|
||||
- it: Skip networkPolicies in general disabled.
|
||||
set:
|
||||
networkPolicies.enabled: false
|
||||
asserts:
|
||||
- hasDocuments:
|
||||
count: 0
|
||||
|
||||
- it: Skip networkPolicy 'default' when disabled.
|
||||
set:
|
||||
networkPolicies.enabled: true
|
||||
networkPolicies.default.enabled: false
|
||||
asserts:
|
||||
- hasDocuments:
|
||||
count: 0
|
||||
|
||||
- it: Loop over networkPolicies
|
||||
set:
|
||||
networkPolicies.enabled: true
|
||||
networkPolicies.default.enabled: false
|
||||
networkPolicies.nginx.enabled: true
|
||||
networkPolicies.prometheus.enabled: true
|
||||
asserts:
|
||||
- hasDocuments:
|
||||
count: 2
|
||||
|
||||
- it: Template networkPolicy 'default' without policyTypes, egress and ingress configuration
|
||||
set:
|
||||
networkPolicies.enabled: true
|
||||
networkPolicies.default.enabled: true
|
||||
asserts:
|
||||
- hasDocuments:
|
||||
count: 1
|
||||
- containsDocument:
|
||||
apiVersion: networking.k8s.io/v1
|
||||
kind: NetworkPolicy
|
||||
name: prometheus-postgres-exporter-unittest-default
|
||||
namespace: testing
|
||||
- notExists:
|
||||
path: metadata.annotations
|
||||
- equal:
|
||||
path: metadata.labels
|
||||
value:
|
||||
app.kubernetes.io/instance: prometheus-postgres-exporter-unittest
|
||||
app.kubernetes.io/managed-by: Helm
|
||||
app.kubernetes.io/name: prometheus-postgres-exporter
|
||||
app.kubernetes.io/version: 0.1.0
|
||||
helm.sh/chart: prometheus-postgres-exporter-0.1.0
|
||||
- equal:
|
||||
path: spec.podSelector.matchLabels
|
||||
value:
|
||||
app.kubernetes.io/instance: prometheus-postgres-exporter-unittest
|
||||
app.kubernetes.io/name: prometheus-postgres-exporter
|
||||
- notExists:
|
||||
path: spec.policyTypes
|
||||
- notExists:
|
||||
path: spec.egress
|
||||
- notExists:
|
||||
path: spec.ingress
|
||||
|
||||
- it: Template networkPolicy 'default' with policyTypes, egress and ingress configuration
|
||||
set:
|
||||
networkPolicies.enabled: true
|
||||
networkPolicies.default.enabled: true
|
||||
networkPolicies.default.policyTypes:
|
||||
- Egress
|
||||
- Ingress
|
||||
networkPolicies.default.ingress:
|
||||
- from:
|
||||
- namespaceSelector:
|
||||
matchLabels:
|
||||
kubernetes.io/metadata.name: khv-production
|
||||
podSelector:
|
||||
matchLabels:
|
||||
app.kubernetes.io/name: prometheus
|
||||
networkPolicies.default.egress:
|
||||
- to:
|
||||
- namespaceSelector:
|
||||
matchLabels:
|
||||
kubernetes.io/metadata.name: database
|
||||
podSelector:
|
||||
matchLabels:
|
||||
app.kubernetes.io/name: oracle
|
||||
asserts:
|
||||
- equal:
|
||||
path: spec.policyTypes
|
||||
value:
|
||||
- Egress
|
||||
- Ingress
|
||||
- equal:
|
||||
path: spec.egress
|
||||
value:
|
||||
- to:
|
||||
- namespaceSelector:
|
||||
matchLabels:
|
||||
kubernetes.io/metadata.name: database
|
||||
podSelector:
|
||||
matchLabels:
|
||||
app.kubernetes.io/name: oracle
|
||||
- equal:
|
||||
path: spec.ingress
|
||||
value:
|
||||
- from:
|
||||
- namespaceSelector:
|
||||
matchLabels:
|
||||
kubernetes.io/metadata.name: khv-production
|
||||
podSelector:
|
||||
matchLabels:
|
||||
app.kubernetes.io/name: prometheus
|
||||
@@ -6,7 +6,7 @@ release:
|
||||
name: prometheus-postgres-exporter-unittest
|
||||
namespace: testing
|
||||
templates:
|
||||
- templates/prometheus-postgres-exporter/podMonitor.yaml
|
||||
- templates/podMonitor.yaml
|
||||
tests:
|
||||
- it: Skip podMonitor when metrics are disabled.
|
||||
set:
|
||||
@@ -58,7 +58,7 @@ tests:
|
||||
helm.sh/chart: prometheus-postgres-exporter-0.1.0
|
||||
- equal:
|
||||
path: spec.podMetricsEndpoints[0].enableHttp2
|
||||
value: false
|
||||
value: true
|
||||
- equal:
|
||||
path: spec.podMetricsEndpoints[0].followRedirects
|
||||
value: false
|
||||
@@ -119,7 +119,7 @@ tests:
|
||||
set:
|
||||
prometheus.metrics.enabled: true
|
||||
prometheus.metrics.podMonitor.enabled: true
|
||||
prometheus.metrics.podMonitor.enableHttp2: true
|
||||
prometheus.metrics.podMonitor.enableHttp2: false
|
||||
prometheus.metrics.podMonitor.followRedirects: true
|
||||
prometheus.metrics.podMonitor.honorLabels: true
|
||||
prometheus.metrics.podMonitor.interval: "180s"
|
||||
@@ -137,7 +137,7 @@ tests:
|
||||
count: 1
|
||||
- equal:
|
||||
path: spec.podMetricsEndpoints[0].enableHttp2
|
||||
value: true
|
||||
value: false
|
||||
- equal:
|
||||
path: spec.podMetricsEndpoints[0].followRedirects
|
||||
value: true
|
||||
|
||||
@@ -6,7 +6,7 @@ release:
|
||||
name: prometheus-postgres-exporter-unittest
|
||||
namespace: testing
|
||||
templates:
|
||||
- templates/prometheus-postgres-exporter/secretDatabase.yaml
|
||||
- templates/secretDatabase.yaml
|
||||
tests:
|
||||
- it: Skip rendering by using existing secret.
|
||||
set:
|
||||
|
||||
@@ -6,7 +6,7 @@ release:
|
||||
name: prometheus-postgres-exporter-unittest
|
||||
namespace: testing
|
||||
templates:
|
||||
- templates/prometheus-postgres-exporter/secretExporterConfig.yaml
|
||||
- templates/secretExporterConfig.yaml
|
||||
tests:
|
||||
- it: Skip rendering by using existing secret.
|
||||
set:
|
||||
|
||||
@@ -6,7 +6,7 @@ release:
|
||||
name: prometheus-postgres-exporter-unittest
|
||||
namespace: testing
|
||||
templates:
|
||||
- templates/prometheus-postgres-exporter/secretWebConfig.yaml
|
||||
- templates/secretWebConfig.yaml
|
||||
tests:
|
||||
- it: Rendering default secret.
|
||||
asserts:
|
||||
@@ -15,7 +15,7 @@ tests:
|
||||
- containsDocument:
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
name: prometheus-postgres-exporter-unittest-webconfig
|
||||
name: prometheus-postgres-exporter-unittest-web-config
|
||||
namespace: testing
|
||||
- notExists:
|
||||
path: metadata.annotations
|
||||
|
||||
@@ -6,7 +6,7 @@ release:
|
||||
name: prometheus-postgres-exporter-unittest
|
||||
namespace: testing
|
||||
templates:
|
||||
- templates/prometheus-postgres-exporter/serviceAccount.yaml
|
||||
- templates/serviceAccount.yaml
|
||||
tests:
|
||||
- it: Skip rendering.
|
||||
set:
|
||||
|
||||
@@ -6,7 +6,7 @@ release:
|
||||
name: prometheus-postgres-exporter-unittest
|
||||
namespace: testing
|
||||
templates:
|
||||
- templates/prometheus-postgres-exporter/serviceMonitorHTTP.yaml
|
||||
- templates/serviceMonitorHTTP.yaml
|
||||
tests:
|
||||
- it: Skip serviceMonitor when service is disabled.
|
||||
set:
|
||||
@@ -59,7 +59,7 @@ tests:
|
||||
helm.sh/chart: prometheus-postgres-exporter-0.1.0
|
||||
- equal:
|
||||
path: spec.endpoints[0].enableHttp2
|
||||
value: false
|
||||
value: true
|
||||
- equal:
|
||||
path: spec.endpoints[0].followRedirects
|
||||
value: false
|
||||
@@ -121,7 +121,7 @@ tests:
|
||||
set:
|
||||
prometheus.metrics.enabled: true
|
||||
prometheus.metrics.serviceMonitor.enabled: true
|
||||
prometheus.metrics.serviceMonitor.enableHttp2: true
|
||||
prometheus.metrics.serviceMonitor.enableHttp2: false
|
||||
prometheus.metrics.serviceMonitor.followRedirects: true
|
||||
prometheus.metrics.serviceMonitor.honorLabels: true
|
||||
prometheus.metrics.serviceMonitor.interval: "180s"
|
||||
@@ -139,7 +139,7 @@ tests:
|
||||
count: 1
|
||||
- equal:
|
||||
path: spec.endpoints[0].enableHttp2
|
||||
value: true
|
||||
value: false
|
||||
- equal:
|
||||
path: spec.endpoints[0].followRedirects
|
||||
value: true
|
||||
|
||||
@@ -6,7 +6,7 @@ release:
|
||||
name: prometheus-postgres-exporter-unittest
|
||||
namespace: testing
|
||||
templates:
|
||||
- templates/prometheus-postgres-exporter/serviceHTTP.yaml
|
||||
- templates/serviceHTTP.yaml
|
||||
tests:
|
||||
- it: Skip service when disabled.
|
||||
set:
|
||||
|
||||
@@ -0,0 +1,700 @@
|
||||
{
|
||||
"$schema": "http://json-schema.org/draft-04/schema#",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"nameOverride": {
|
||||
"type": "string"
|
||||
},
|
||||
"fullnameOverride": {
|
||||
"type": "string"
|
||||
},
|
||||
"config": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"database": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"existingSecret": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"enabled": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"secretName": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"enabled",
|
||||
"secretName"
|
||||
]
|
||||
},
|
||||
"secret": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"annotations": {
|
||||
"type": "object"
|
||||
},
|
||||
"labels": {
|
||||
"type": "object"
|
||||
},
|
||||
"databaseUsername": {
|
||||
"type": "string"
|
||||
},
|
||||
"databasePassword": {
|
||||
"type": "string"
|
||||
},
|
||||
"databaseConnectionUrl": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"annotations",
|
||||
"labels",
|
||||
"databaseUsername",
|
||||
"databasePassword",
|
||||
"databaseConnectionUrl"
|
||||
]
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"existingSecret",
|
||||
"secret"
|
||||
]
|
||||
},
|
||||
"exporterConfig": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"existingSecret": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"enabled": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"secretName": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"enabled",
|
||||
"secretName"
|
||||
]
|
||||
},
|
||||
"secret": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"annotations": {
|
||||
"type": "object"
|
||||
},
|
||||
"labels": {
|
||||
"type": "object"
|
||||
},
|
||||
"exporterConfig": {
|
||||
"type": "object"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"annotations",
|
||||
"labels",
|
||||
"exporterConfig"
|
||||
]
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"existingSecret",
|
||||
"secret"
|
||||
]
|
||||
},
|
||||
"webConfig": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"existingSecret": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"enabled": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"secretName": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"enabled",
|
||||
"secretName"
|
||||
]
|
||||
},
|
||||
"secret": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"annotations": {
|
||||
"type": "object"
|
||||
},
|
||||
"labels": {
|
||||
"type": "object"
|
||||
},
|
||||
"webConfig": {
|
||||
"type": "object"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"annotations",
|
||||
"labels",
|
||||
"webConfig"
|
||||
]
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"existingSecret",
|
||||
"secret"
|
||||
]
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"database",
|
||||
"exporterConfig",
|
||||
"webConfig"
|
||||
]
|
||||
},
|
||||
"deployment": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"annotations": {
|
||||
"type": "object"
|
||||
},
|
||||
"labels": {
|
||||
"type": "object"
|
||||
},
|
||||
"additionalContainers": {
|
||||
"type": "array",
|
||||
"items": {}
|
||||
},
|
||||
"affinity": {
|
||||
"type": "object"
|
||||
},
|
||||
"initContainers": {
|
||||
"type": "array",
|
||||
"items": {}
|
||||
},
|
||||
"dnsConfig": {
|
||||
"type": "object"
|
||||
},
|
||||
"dnsPolicy": {
|
||||
"type": "string"
|
||||
},
|
||||
"hostname": {
|
||||
"type": "string"
|
||||
},
|
||||
"subdomain": {
|
||||
"type": "string"
|
||||
},
|
||||
"hostNetwork": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"imagePullSecrets": {
|
||||
"type": "array",
|
||||
"items": {}
|
||||
},
|
||||
"postgresExporter": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"args": {
|
||||
"type": "array",
|
||||
"items": {}
|
||||
},
|
||||
"env": {
|
||||
"type": "array",
|
||||
"items": {}
|
||||
},
|
||||
"envFrom": {
|
||||
"type": "array",
|
||||
"items": {}
|
||||
},
|
||||
"image": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"registry": {
|
||||
"type": "string"
|
||||
},
|
||||
"repository": {
|
||||
"type": "string"
|
||||
},
|
||||
"tag": {
|
||||
"type": "string"
|
||||
},
|
||||
"pullPolicy": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"registry",
|
||||
"repository",
|
||||
"tag",
|
||||
"pullPolicy"
|
||||
]
|
||||
},
|
||||
"resources": {
|
||||
"type": "object"
|
||||
},
|
||||
"securityContext": {
|
||||
"type": "object"
|
||||
},
|
||||
"volumeMounts": {
|
||||
"type": "array",
|
||||
"items": {}
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"args",
|
||||
"env",
|
||||
"envFrom",
|
||||
"image",
|
||||
"resources",
|
||||
"securityContext",
|
||||
"volumeMounts"
|
||||
]
|
||||
},
|
||||
"nodeSelector": {
|
||||
"type": "object"
|
||||
},
|
||||
"priorityClassName": {
|
||||
"type": "string"
|
||||
},
|
||||
"replicas": {
|
||||
"type": "integer"
|
||||
},
|
||||
"restartPolicy": {
|
||||
"type": "string"
|
||||
},
|
||||
"securityContext": {
|
||||
"type": "object"
|
||||
},
|
||||
"strategy": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"type": {
|
||||
"type": "string"
|
||||
},
|
||||
"rollingUpdate": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"maxSurge": {
|
||||
"type": "integer"
|
||||
},
|
||||
"maxUnavailable": {
|
||||
"type": "integer"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"maxSurge",
|
||||
"maxUnavailable"
|
||||
]
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"type",
|
||||
"rollingUpdate"
|
||||
]
|
||||
},
|
||||
"terminationGracePeriodSeconds": {
|
||||
"type": "integer"
|
||||
},
|
||||
"tolerations": {
|
||||
"type": "array",
|
||||
"items": {}
|
||||
},
|
||||
"topologySpreadConstraints": {
|
||||
"type": "array",
|
||||
"items": {}
|
||||
},
|
||||
"volumes": {
|
||||
"type": "array",
|
||||
"items": {}
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"annotations",
|
||||
"labels",
|
||||
"additionalContainers",
|
||||
"affinity",
|
||||
"initContainers",
|
||||
"dnsConfig",
|
||||
"dnsPolicy",
|
||||
"hostname",
|
||||
"subdomain",
|
||||
"hostNetwork",
|
||||
"imagePullSecrets",
|
||||
"postgresExporter",
|
||||
"nodeSelector",
|
||||
"priorityClassName",
|
||||
"replicas",
|
||||
"restartPolicy",
|
||||
"securityContext",
|
||||
"strategy",
|
||||
"terminationGracePeriodSeconds",
|
||||
"tolerations",
|
||||
"topologySpreadConstraints",
|
||||
"volumes"
|
||||
]
|
||||
},
|
||||
"grafana": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"enabled": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"dashboardDiscoveryLabels": {
|
||||
"type": "object"
|
||||
},
|
||||
"dashboards": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"postgresExporter": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"enabled": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"annotations": {
|
||||
"type": "object"
|
||||
},
|
||||
"labels": {
|
||||
"type": "object"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"enabled",
|
||||
"annotations",
|
||||
"labels"
|
||||
]
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"postgresExporter"
|
||||
]
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"enabled",
|
||||
"dashboardDiscoveryLabels",
|
||||
"dashboards"
|
||||
]
|
||||
},
|
||||
"ingress": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"enabled": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"className": {
|
||||
"type": "string"
|
||||
},
|
||||
"annotations": {
|
||||
"type": "object"
|
||||
},
|
||||
"labels": {
|
||||
"type": "object"
|
||||
},
|
||||
"hosts": {
|
||||
"type": "array",
|
||||
"items": {}
|
||||
},
|
||||
"tls": {
|
||||
"type": "array",
|
||||
"items": {}
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"enabled",
|
||||
"className",
|
||||
"annotations",
|
||||
"labels",
|
||||
"hosts",
|
||||
"tls"
|
||||
]
|
||||
},
|
||||
"podDisruptionBudget": {
|
||||
"type": "object"
|
||||
},
|
||||
"networkPolicies": {
|
||||
"type": "object"
|
||||
},
|
||||
"prometheus": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"metrics": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"enabled": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"podMonitor": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"enabled": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"annotations": {
|
||||
"type": "object"
|
||||
},
|
||||
"enableHttp2": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"followRedirects": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"honorLabels": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"labels": {
|
||||
"type": "object"
|
||||
},
|
||||
"interval": {
|
||||
"type": "string"
|
||||
},
|
||||
"path": {
|
||||
"type": "string"
|
||||
},
|
||||
"relabelings": {
|
||||
"type": "array",
|
||||
"items": {}
|
||||
},
|
||||
"scrapeTimeout": {
|
||||
"type": "string"
|
||||
},
|
||||
"scheme": {
|
||||
"type": "string"
|
||||
},
|
||||
"tlsConfig": {
|
||||
"type": "object"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"enabled",
|
||||
"annotations",
|
||||
"enableHttp2",
|
||||
"followRedirects",
|
||||
"honorLabels",
|
||||
"labels",
|
||||
"interval",
|
||||
"path",
|
||||
"relabelings",
|
||||
"scrapeTimeout",
|
||||
"scheme",
|
||||
"tlsConfig"
|
||||
]
|
||||
},
|
||||
"serviceMonitor": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"enabled": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"annotations": {
|
||||
"type": "object"
|
||||
},
|
||||
"labels": {
|
||||
"type": "object"
|
||||
},
|
||||
"enableHttp2": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"followRedirects": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"honorLabels": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"interval": {
|
||||
"type": "string"
|
||||
},
|
||||
"path": {
|
||||
"type": "string"
|
||||
},
|
||||
"relabelings": {
|
||||
"type": "array",
|
||||
"items": {}
|
||||
},
|
||||
"scrapeTimeout": {
|
||||
"type": "string"
|
||||
},
|
||||
"scheme": {
|
||||
"type": "string"
|
||||
},
|
||||
"tlsConfig": {
|
||||
"type": "object"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"enabled",
|
||||
"annotations",
|
||||
"labels",
|
||||
"enableHttp2",
|
||||
"followRedirects",
|
||||
"honorLabels",
|
||||
"interval",
|
||||
"path",
|
||||
"relabelings",
|
||||
"scrapeTimeout",
|
||||
"scheme",
|
||||
"tlsConfig"
|
||||
]
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"enabled",
|
||||
"podMonitor",
|
||||
"serviceMonitor"
|
||||
]
|
||||
},
|
||||
"rules": {
|
||||
"type": "array",
|
||||
"items": {}
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"metrics",
|
||||
"rules"
|
||||
]
|
||||
},
|
||||
"services": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"http": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"enabled": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"annotations": {
|
||||
"type": "object"
|
||||
},
|
||||
"externalIPs": {
|
||||
"type": "array",
|
||||
"items": {}
|
||||
},
|
||||
"externalTrafficPolicy": {
|
||||
"type": "string"
|
||||
},
|
||||
"internalTrafficPolicy": {
|
||||
"type": "string"
|
||||
},
|
||||
"ipFamilies": {
|
||||
"type": "array",
|
||||
"items": {}
|
||||
},
|
||||
"labels": {
|
||||
"type": "object"
|
||||
},
|
||||
"loadBalancerClass": {
|
||||
"type": "string"
|
||||
},
|
||||
"loadBalancerIP": {
|
||||
"type": "string"
|
||||
},
|
||||
"loadBalancerSourceRanges": {
|
||||
"type": "array",
|
||||
"items": {}
|
||||
},
|
||||
"port": {
|
||||
"type": "integer"
|
||||
},
|
||||
"sessionAffinity": {
|
||||
"type": "string"
|
||||
},
|
||||
"sessionAffinityConfig": {
|
||||
"type": "object"
|
||||
},
|
||||
"type": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"enabled",
|
||||
"annotations",
|
||||
"externalIPs",
|
||||
"externalTrafficPolicy",
|
||||
"internalTrafficPolicy",
|
||||
"ipFamilies",
|
||||
"labels",
|
||||
"loadBalancerClass",
|
||||
"loadBalancerIP",
|
||||
"loadBalancerSourceRanges",
|
||||
"port",
|
||||
"sessionAffinity",
|
||||
"sessionAffinityConfig",
|
||||
"type"
|
||||
]
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"http"
|
||||
]
|
||||
},
|
||||
"serviceAccount": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"existing": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"enabled": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"serviceAccountName": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"enabled",
|
||||
"serviceAccountName"
|
||||
]
|
||||
},
|
||||
"new": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"annotations": {
|
||||
"type": "object"
|
||||
},
|
||||
"labels": {
|
||||
"type": "object"
|
||||
},
|
||||
"automountServiceAccountToken": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"imagePullSecrets": {
|
||||
"type": "array",
|
||||
"items": {}
|
||||
},
|
||||
"secrets": {
|
||||
"type": "array",
|
||||
"items": {}
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"annotations",
|
||||
"labels",
|
||||
"automountServiceAccountToken",
|
||||
"imagePullSecrets",
|
||||
"secrets"
|
||||
]
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"existing",
|
||||
"new"
|
||||
]
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"nameOverride",
|
||||
"fullnameOverride",
|
||||
"config",
|
||||
"deployment",
|
||||
"grafana",
|
||||
"ingress",
|
||||
"podDisruptionBudget",
|
||||
"networkPolicies",
|
||||
"prometheus",
|
||||
"services",
|
||||
"serviceAccount"
|
||||
]
|
||||
}
|
||||
+115
-22
@@ -1,7 +1,5 @@
|
||||
# Default values for qu-seed.
|
||||
# This is a YAML-formatted file.
|
||||
|
||||
# Declare variables to be passed into your templates.
|
||||
|
||||
## @section Global
|
||||
## @param nameOverride Individual release name suffix.
|
||||
## @param fullnameOverride Override the complete release name logic.
|
||||
@@ -38,7 +36,7 @@ config:
|
||||
|
||||
## @param config.exporterConfig.secret.annotations Additional annotations of the secret containing the `exporterConfig.yaml`.
|
||||
## @param config.exporterConfig.secret.labels Additional labels of the secret containing the `exporterConfig.yaml`.
|
||||
## @param config.exporterConfig.secret.exporterConfig Content of the `exporterConfig.yaml`. Further information can be found [here](https://prometheus.io/docs/prometheus/latest/configuration/https/).
|
||||
## @param config.exporterConfig.secret.exporterConfig Content of the `exporterConfig.yaml`. Further information can be found in the [README](https://github.com/prometheus-community/postgres_exporter?tab=readme-ov-file#multi-target-support-beta) file of the Postgres exporter binary.
|
||||
## @skip config.exporterConfig.secret.exporterConfig Skip individual postgres exporter configuration.
|
||||
secret:
|
||||
annotations: {}
|
||||
@@ -62,7 +60,7 @@ config:
|
||||
|
||||
## @param config.webConfig.secret.annotations Additional annotations of the secret containing the `webConfig.yaml`.
|
||||
## @param config.webConfig.secret.labels Additional labels of the secret containing the `webConfig.yaml`.
|
||||
## @param config.webConfig.secret.webConfig Content of the `webConfig.yaml`. Further information can be found [here](https://prometheus.io/docs/prometheus/latest/configuration/https/).
|
||||
## @param config.webConfig.secret.webConfig Content of the `webConfig.yaml`. Further [documentation](https://prometheus.io/docs/prometheus/latest/configuration/https/) is available on the official Prometheus website.
|
||||
## @skip config.webConfig.secret.webConfig Skip individual web configuration.
|
||||
secret:
|
||||
annotations: {}
|
||||
@@ -84,7 +82,7 @@ config:
|
||||
## @section Deployment
|
||||
deployment:
|
||||
## @param deployment.annotations Additional deployment annotations.
|
||||
## @param deployment.labels Additional ingress labels.
|
||||
## @param deployment.labels Additional deployment labels.
|
||||
annotations: {}
|
||||
labels: {}
|
||||
|
||||
@@ -96,6 +94,22 @@ deployment:
|
||||
|
||||
## @param deployment.affinity Affinity for the postgres-exporter deployment.
|
||||
affinity: {}
|
||||
# nodeAffinity:
|
||||
# requiredDuringSchedulingIgnoredDuringExecution:
|
||||
# nodeSelectorTerms:
|
||||
# - matchExpressions:
|
||||
# - key: kubernetes.io/os
|
||||
# operator: In
|
||||
# values:
|
||||
# - linux
|
||||
# preferredDuringSchedulingIgnoredDuringExecution:
|
||||
# - weight: 20
|
||||
# preference:
|
||||
# matchExpressions:
|
||||
# - key: kubernetes.io/arch
|
||||
# operator: In
|
||||
# values:
|
||||
# - amd64
|
||||
|
||||
## @param deployment.initContainers List of additional init containers.
|
||||
initContainers: []
|
||||
@@ -201,8 +215,8 @@ deployment:
|
||||
## @param deployment.priorityClassName PriorityClassName of the postgres-exporter deployment.
|
||||
priorityClassName: ""
|
||||
|
||||
## @param deployment.replicaCount Number of replicas for the postgres-exporter deployment.
|
||||
replicaCount: 1
|
||||
## @param deployment.replicas Number of replicas for the postgres-exporter deployment.
|
||||
replicas: 1
|
||||
|
||||
## @param deployment.restartPolicy Restart policy of the postgres-exporter deployment.
|
||||
restartPolicy: ""
|
||||
@@ -211,11 +225,11 @@ deployment:
|
||||
securityContext: {}
|
||||
# fsGroup: 2000
|
||||
|
||||
## @param deployment.strategy.type Strategy type - `Recreate` or `Rollingupdate`.
|
||||
## @param deployment.strategy.type Strategy type - `Recreate` or `RollingUpdate`.
|
||||
## @param deployment.strategy.rollingUpdate.maxSurge The maximum number of pods that can be scheduled above the desired number of pods during a rolling update.
|
||||
## @param deployment.strategy.rollingUpdate.maxUnavailable The maximum number of pods that can be unavailable during a rolling update.
|
||||
strategy:
|
||||
type: "Recreate"
|
||||
type: "RollingUpdate"
|
||||
rollingUpdate:
|
||||
maxSurge: 1
|
||||
maxUnavailable: 1
|
||||
@@ -248,12 +262,23 @@ deployment:
|
||||
# secretName: my-secret
|
||||
|
||||
## @section Grafana
|
||||
## @param grafana.enabled Enable integration into Grafana.
|
||||
## @param grafana.dashboards.businessMetrics Enable deployment of Grafana dashboard `businessMetrics`.
|
||||
## @param grafana.enabled Enable integration into Grafana. Require the Prometheus operator deployment.
|
||||
grafana:
|
||||
enabled: false
|
||||
|
||||
## @param grafana.dashboardDiscoveryLabels Labels that Grafana uses to discover resources. The labels may vary depending on the Grafana deployment.
|
||||
## @skip grafana.dashboardDiscoveryLabels Skip individual configuration.
|
||||
dashboardDiscoveryLabels:
|
||||
grafana_dashboard: "1"
|
||||
|
||||
dashboards:
|
||||
businessMetrics: true
|
||||
## @param grafana.dashboards.postgresExporter.enabled Enable deployment of Grafana dashboard `postgresExporter`.
|
||||
## @param grafana.dashboards.postgresExporter.annotations Additional configmap annotations.
|
||||
## @param grafana.dashboards.postgresExporter.labels Additional configmap labels.
|
||||
postgresExporter:
|
||||
enabled: true
|
||||
annotations: {}
|
||||
labels: {}
|
||||
|
||||
## @section Ingress
|
||||
ingress:
|
||||
@@ -287,9 +312,77 @@ podDisruptionBudget: {}
|
||||
# maxUnavailable: 1
|
||||
# minAvailable: 1
|
||||
|
||||
## @section Network
|
||||
## @param networkPolicies Deploy network policies based on the used container network interface (CNI) implementation - like calico or weave.
|
||||
networkPolicies: {}
|
||||
## @section NetworkPolicies
|
||||
## @param networkPolicies.enabled Enable network policies in general.
|
||||
networkPolicies:
|
||||
enabled: false
|
||||
|
||||
## @param networkPolicies.default.enabled Enable the network policy for accessing the application by default. For example to scape the metrics.
|
||||
## @param networkPolicies.default.annotations Additional network policy annotations.
|
||||
## @param networkPolicies.default.labels Additional network policy labels.
|
||||
## @param networkPolicies.default.policyTypes List of policy types. Supported is ingress, egress or ingress and egress.
|
||||
## @param networkPolicies.default.egress Concrete egress network policy implementation.
|
||||
## @skip networkPolicies.default.egress Skip individual egress configuration.
|
||||
## @param networkPolicies.default.ingress Concrete ingress network policy implementation.
|
||||
## @skip networkPolicies.default.ingress Skip individual ingress configuration.
|
||||
default:
|
||||
enabled: false
|
||||
annotations: {}
|
||||
labels: {}
|
||||
policyTypes: []
|
||||
# - Egress
|
||||
# - Ingress
|
||||
egress: []
|
||||
# Allow outgoing traffic to database host
|
||||
#
|
||||
# - to:
|
||||
# - ipBlock:
|
||||
# cidr: 192.168.179.1/32
|
||||
# ports:
|
||||
# - port: 5432
|
||||
# protocol: TCP
|
||||
|
||||
# Allow outgoing DNS traffic to the internal running DNS-Server. For example core-dns.
|
||||
#
|
||||
# - to:
|
||||
# - namespaceSelector:
|
||||
# matchLabels:
|
||||
# kubernetes.io/metadata.name: kube-system
|
||||
# podSelector:
|
||||
# matchLabels:
|
||||
# k8s-app: kube-dns
|
||||
# ports:
|
||||
# - port: 53
|
||||
# protocol: TCP
|
||||
# - port: 53
|
||||
# protocol: UDP
|
||||
|
||||
ingress: []
|
||||
# Allow incoming HTTP traffic from prometheus.
|
||||
#
|
||||
# - from:
|
||||
# - namespaceSelector:
|
||||
# matchLabels:
|
||||
# kubernetes.io/metadata.name: monitoring
|
||||
# podSelector:
|
||||
# matchLabels:
|
||||
# app.kubernetes.io/name: prometheus
|
||||
# ports:
|
||||
# - port: http
|
||||
# protocol: TCP
|
||||
|
||||
# Allow incoming HTTP traffic from ingress-nginx.
|
||||
#
|
||||
# - from:
|
||||
# - namespaceSelector:
|
||||
# matchLabels:
|
||||
# kubernetes.io/metadata.name: ingress-nginx
|
||||
# podSelector:
|
||||
# matchLabels:
|
||||
# app.kubernetes.io/name: ingress-nginx
|
||||
# ports:
|
||||
# - port: http
|
||||
# protocol: TCP
|
||||
|
||||
## @section Prometheus
|
||||
prometheus:
|
||||
@@ -304,7 +397,7 @@ prometheus:
|
||||
## @param prometheus.metrics.podMonitor.honorLabels Honor labels.
|
||||
## @param prometheus.metrics.podMonitor.labels Additional podMonitor labels.
|
||||
## @param prometheus.metrics.podMonitor.interval Interval at which metrics should be scraped. If not specified Prometheus' global scrape interval is used.
|
||||
## @param prometheus.metrics.podMonitor.path HTTP path for scraping prometheus metrics.
|
||||
## @param prometheus.metrics.podMonitor.path HTTP path for scraping Prometheus metrics.
|
||||
## @param prometheus.metrics.podMonitor.relabelings RelabelConfigs to apply to samples before scraping. Prometheus Operator automatically adds relabelings for a few standard Kubernetes fields.
|
||||
## @param prometheus.metrics.podMonitor.scrapeTimeout Timeout after which the scrape is ended. If not specified, global Prometheus scrape timeout is used.
|
||||
## @param prometheus.metrics.podMonitor.scheme HTTP scheme to use for scraping. For example `http` or `https`.
|
||||
@@ -313,7 +406,7 @@ prometheus:
|
||||
podMonitor:
|
||||
enabled: false
|
||||
annotations: {}
|
||||
enableHttp2: false
|
||||
enableHttp2: true
|
||||
followRedirects: false
|
||||
honorLabels: false
|
||||
labels: {}
|
||||
@@ -331,7 +424,7 @@ prometheus:
|
||||
## @param prometheus.metrics.serviceMonitor.followRedirects FollowRedirects configures whether scrape requests follow HTTP 3xx redirects.
|
||||
## @param prometheus.metrics.serviceMonitor.honorLabels Honor labels.
|
||||
## @param prometheus.metrics.serviceMonitor.interval Interval at which metrics should be scraped. If not specified Prometheus' global scrape interval is used.
|
||||
## @param prometheus.metrics.serviceMonitor.path HTTP path for scraping prometheus metrics.
|
||||
## @param prometheus.metrics.serviceMonitor.path HTTP path for scraping Prometheus metrics.
|
||||
## @param prometheus.metrics.serviceMonitor.relabelings RelabelConfigs to apply to samples before scraping. Prometheus Operator automatically adds relabelings for a few standard Kubernetes fields.
|
||||
## @param prometheus.metrics.serviceMonitor.scrapeTimeout Timeout after which the scrape is ended. If not specified, global Prometheus scrape timeout is used.
|
||||
## @param prometheus.metrics.serviceMonitor.scheme HTTP scheme to use for scraping. For example `http` or `https`.
|
||||
@@ -341,7 +434,7 @@ prometheus:
|
||||
enabled: false
|
||||
annotations: {}
|
||||
labels: {}
|
||||
enableHttp2: false
|
||||
enableHttp2: true
|
||||
followRedirects: false
|
||||
honorLabels: false
|
||||
interval: "60s"
|
||||
@@ -351,8 +444,8 @@ prometheus:
|
||||
scheme: "http"
|
||||
tlsConfig: {}
|
||||
|
||||
## @param prometheus.rules Array of prometheus rules for monitoring the application and triggering alerts.
|
||||
## @skip prometheus.rules Skip individual prometheus rules.
|
||||
## @param prometheus.rules Array of Prometheus rules for monitoring the application and triggering alerts.
|
||||
## @skip prometheus.rules Skip individual Prometheus rules.
|
||||
rules: []
|
||||
# - alert: ExporterErrors
|
||||
# expr: pg_exporter_last_scrape_error == 1
|
||||
|
||||
Reference in new issue
Block a user