96 Commits
0.2.0 ... 0.5.1

Author SHA1 Message Date
3c8fb86231 fix(deployment): define annotations to automatically roll deployments
All checks were successful
Helm / helm-lint (push) Successful in 11s
Helm / helm-unittest (push) Successful in 27s
Release / publish-chart (push) Successful in 7s
The following patch extends the chart to automatically roll the deployment, when
one of the configurations, stored in a config map or secret, has been changed.

The implementation add annotations which triggers `helm update` or ArgoCD to
roll the deployment. Further information can be found on the official helm
website:

  https://helm.sh/docs/howto/charts_tips_and_tricks/#automatically-roll-deployments
2025-05-29 11:22:05 +02:00
0cf63593e9 revert: automatically roll deployments
The annotations must be defined as part of the Pod and not the Deployment.
2025-05-29 11:13:46 +02:00
81fb535128 feat: automatically roll deployments
All checks were successful
Helm / helm-lint (push) Successful in 25s
Helm / helm-unittest (push) Successful in 24s
Release / publish-chart (push) Successful in 26s
The following patch extends the chart to automatically roll the deployment, when
one of the configurations, stored in a config map or secret, has been changed.

The implementation add annotations which triggers `helm update` or ArgoCD to
roll the deployment. Further information can be found on the official helm
website:

  https://helm.sh/docs/howto/charts_tips_and_tricks/#automatically-roll-deployments
2025-05-29 11:01:13 +02:00
e5b0965373 Merge pull request 'chore(deps): update docker.io/library/node docker tag to v24' (#50) from renovate/docker.io-library-node-24.x into master
All checks were successful
Helm / helm-lint (push) Successful in 12s
Helm / helm-unittest (push) Successful in 14s
Reviewed-on: #50
2025-05-28 07:06:14 +00:00
40712d3c7f chore(deps): update docker.io/library/node docker tag to v24
All checks were successful
Generate README / generate-parameters (push) Successful in 9s
Helm / helm-unittest (push) Successful in 6s
Markdown linter / markdown-lint (push) Successful in 8s
Helm / helm-lint (push) Successful in 16s
Helm / helm-lint (pull_request) Successful in 6s
Helm / helm-unittest (pull_request) Successful in 14s
Markdown linter / markdown-link-checker (push) Successful in 48s
2025-05-27 22:11:34 +00:00
1ebde5500d chore(renovate): merge library/node packages
All checks were successful
Helm / helm-unittest (push) Successful in 6s
Helm / helm-lint (push) Successful in 22s
2025-05-27 22:54:45 +02:00
99ac3e0b6b docs(README): be compliant with markdownlint MD044
All checks were successful
Generate README / generate-parameters (push) Successful in 9s
Helm / helm-unittest (push) Successful in 16s
Markdown linter / markdown-link-checker (push) Successful in 11s
Helm / helm-lint (push) Successful in 22s
Markdown linter / markdown-lint (push) Successful in 28s
2025-05-27 22:21:43 +02:00
3cea56ef58 docs(README): remove drone badge
Some checks failed
Generate README / generate-parameters (push) Successful in 14s
Helm / helm-unittest (push) Successful in 14s
Markdown linter / markdown-link-checker (push) Successful in 10s
Helm / helm-lint (push) Successful in 25s
Markdown linter / markdown-lint (push) Failing after 39s
2025-05-27 16:53:40 +02:00
608ded18c7 chore(deps): update container images
All checks were successful
Helm / helm-unittest (pull_request) Successful in 7s
Helm / helm-lint (pull_request) Successful in 14s
Helm / helm-unittest (push) Successful in 14s
Helm / helm-lint (push) Successful in 25s
2025-05-21 19:12:45 +00:00
d62cc4beae chore(deps): update docker.io/volkerraschek/helm docker tag to v3.18.0
All checks were successful
Helm / helm-unittest (pull_request) Successful in 6s
Helm / helm-lint (pull_request) Successful in 25s
Helm / helm-lint (push) Successful in 6s
Helm / helm-unittest (push) Successful in 16s
2025-05-21 16:11:50 +00:00
89ef3c929e chore(deps): update dependency markdownlint-cli to ^0.45.0
All checks were successful
Helm / helm-lint (pull_request) Successful in 5s
Helm / helm-unittest (pull_request) Successful in 6s
Helm / helm-lint (push) Successful in 6s
Helm / helm-unittest (push) Successful in 14s
2025-05-18 01:12:53 +00:00
9840520b71 chore(deps): update library/node docker tag to v22.15.1
All checks were successful
Helm / helm-lint (pull_request) Successful in 6s
Helm / helm-unittest (pull_request) Successful in 24s
Helm / helm-lint (push) Successful in 6s
Helm / helm-unittest (push) Successful in 16s
2025-05-15 19:12:56 +00:00
3940ea39c5 chore(deps): update docker.io/library/node docker tag to v23.11.1
All checks were successful
Helm / helm-lint (pull_request) Successful in 6s
Helm / helm-unittest (pull_request) Successful in 17s
Helm / helm-lint (push) Successful in 16s
Helm / helm-unittest (push) Successful in 17s
2025-05-15 16:11:42 +00:00
a6ec076ce6 chore(deps): update volkerraschek/helm docker tag to v3.17.3
All checks were successful
Helm / helm-lint (pull_request) Successful in 15s
Helm / helm-unittest (pull_request) Successful in 19s
Helm / helm-lint (push) Successful in 18s
Helm / helm-unittest (push) Successful in 19s
2025-05-09 16:12:13 +00:00
12970b3820 chore(deps): update docker.io/volkerraschek/helm docker tag to v3.17.3
All checks were successful
Helm / helm-lint (pull_request) Successful in 23s
Helm / helm-unittest (pull_request) Successful in 19s
Helm / helm-lint (push) Successful in 16s
Helm / helm-unittest (push) Successful in 19s
2025-05-09 13:11:15 +00:00
dbd6b83218 chore(deps): update volkerraschek/helm docker tag to v3.17.2
All checks were successful
Helm / helm-lint (pull_request) Successful in 15s
Helm / helm-unittest (pull_request) Successful in 17s
Helm / helm-lint (push) Successful in 14s
Helm / helm-unittest (push) Successful in 19s
2025-05-09 01:11:37 +00:00
e466c50e35 chore(deps): update docker.io/volkerraschek/helm docker tag to v3.17.2
All checks were successful
Helm / helm-lint (pull_request) Successful in 16s
Helm / helm-unittest (pull_request) Successful in 17s
Helm / helm-lint (push) Successful in 18s
Helm / helm-unittest (push) Successful in 17s
2025-05-08 22:13:05 +00:00
19d683d712 style: avoid control operator of toYaml
All checks were successful
Helm / helm-lint (push) Successful in 15s
Helm / helm-unittest (push) Successful in 16s
2025-04-26 22:59:11 +02:00
69f068c406 chore(deps): update library/node docker tag to v22.15.0
All checks were successful
Helm / helm-lint (pull_request) Successful in 19s
Helm / helm-unittest (pull_request) Successful in 17s
Helm / helm-lint (push) Successful in 20s
Helm / helm-unittest (push) Successful in 20s
2025-04-23 16:28:19 +00:00
1edd96e3e1 chore(deps): update docker.io/library/node docker tag to v23.11.0
All checks were successful
Helm / helm-lint (pull_request) Successful in 26s
Helm / helm-unittest (pull_request) Successful in 28s
Helm / helm-lint (push) Successful in 19s
Helm / helm-unittest (push) Successful in 17s
2025-04-01 19:51:43 +00:00
80819f16ef chore(deps): update container images
All checks were successful
Helm / helm-lint (pull_request) Successful in 17s
Helm / helm-unittest (pull_request) Successful in 17s
Helm / helm-lint (push) Successful in 17s
Helm / helm-unittest (push) Successful in 16s
2025-03-30 22:29:59 +00:00
3dcb8173e3 chore(renovate): use configuration preset
All checks were successful
Helm / helm-lint (push) Successful in 16s
Helm / helm-unittest (push) Successful in 18s
2025-03-30 22:53:14 +02:00
5c20ed5f31 chore(deps): lock file maintenance
All checks were successful
Helm / helm-lint (pull_request) Successful in 16s
Helm / helm-unittest (pull_request) Successful in 17s
Helm / helm-lint (push) Successful in 16s
Helm / helm-unittest (push) Successful in 17s
2025-03-17 02:29:51 +00:00
39534a06dc chore(deps): update docker.io/library/node docker tag to v23.10.0
All checks were successful
Helm / helm-lint (pull_request) Successful in 15s
Helm / helm-unittest (pull_request) Successful in 18s
Helm / helm-lint (push) Successful in 16s
Helm / helm-unittest (push) Successful in 22s
2025-03-14 17:27:23 +00:00
34b5e27456 chore(deps): update dependency markdown-link-check to v3.13.7
All checks were successful
Helm / helm-lint (pull_request) Successful in 20s
Helm / helm-unittest (pull_request) Successful in 17s
Helm / helm-lint (push) Successful in 23s
Helm / helm-unittest (push) Successful in 18s
2025-03-11 08:29:54 +00:00
74b6ddf46d chore(deps): lock file maintenance
All checks were successful
Helm / helm-lint (pull_request) Successful in 16s
Helm / helm-unittest (pull_request) Successful in 18s
Helm / helm-lint (push) Successful in 16s
Helm / helm-unittest (push) Successful in 22s
2025-03-10 02:27:48 +00:00
7323ba09bf chore(deps): lock file maintenance
All checks were successful
Helm / helm-lint (pull_request) Successful in 17s
Helm / helm-unittest (pull_request) Successful in 17s
Helm / helm-lint (push) Successful in 15s
Helm / helm-unittest (push) Successful in 16s
2025-03-03 02:28:16 +00:00
3f4c459d43 chore(deps): update dependency volker.raschek/prometheus-postgres-exporter to v0.4.2
All checks were successful
Generate README / generate-parameters (pull_request) Successful in 30s
Helm / helm-lint (pull_request) Successful in 15s
Helm / helm-unittest (pull_request) Successful in 17s
Markdown linter / markdown-link-checker (pull_request) Successful in 33s
Markdown linter / markdown-lint (pull_request) Successful in 28s
Generate README / generate-parameters (push) Successful in 30s
Helm / helm-lint (push) Successful in 16s
Helm / helm-unittest (push) Successful in 18s
Markdown linter / markdown-link-checker (push) Successful in 33s
Markdown linter / markdown-lint (push) Successful in 29s
2025-03-02 14:25:15 +00:00
304139cb6d Merge pull request 'chore(deps): update prometheuscommunity/postgres-exporter docker tag to v0.17.1' (#32) from renovate/prometheuscommunity-postgres-exporter-0.x into master
All checks were successful
Helm / helm-lint (push) Successful in 16s
Helm / helm-unittest (push) Successful in 17s
Release / publish-chart (push) Successful in 18s
Reviewed-on: #32
2025-03-02 12:26:19 +00:00
08ca70c65c chore(deps): update prometheuscommunity/postgres-exporter docker tag to v0.17.1
All checks were successful
Helm / helm-lint (push) Successful in 17s
Helm / helm-unittest (push) Successful in 17s
Helm / helm-lint (pull_request) Successful in 16s
Helm / helm-unittest (pull_request) Successful in 25s
2025-02-27 02:28:17 +00:00
6f954dfdf6 chore(deps): update docker.io/library/node docker tag to v23.9.0
All checks were successful
Helm / helm-lint (pull_request) Successful in 16s
Helm / helm-unittest (pull_request) Successful in 17s
Helm / helm-lint (push) Successful in 16s
Helm / helm-unittest (push) Successful in 17s
2025-02-26 23:27:28 +00:00
b88ae944e6 chore(deps): lock file maintenance
All checks were successful
Helm / helm-lint (pull_request) Successful in 15s
Helm / helm-unittest (pull_request) Successful in 17s
Helm / helm-lint (push) Successful in 19s
Helm / helm-unittest (push) Successful in 28s
2025-02-24 02:30:49 +00:00
29b908f8da chore(deps): update dependency volker.raschek/prometheus-postgres-exporter to v0.4.1
All checks were successful
Helm / helm-lint (pull_request) Successful in 17s
Helm / helm-unittest (pull_request) Successful in 17s
Markdown linter / markdown-link-checker (pull_request) Successful in 33s
Markdown linter / markdown-lint (pull_request) Successful in 29s
Generate README / generate-parameters (pull_request) Successful in 29s
Generate README / generate-parameters (push) Successful in 33s
Helm / helm-lint (push) Successful in 15s
Helm / helm-unittest (push) Successful in 20s
Markdown linter / markdown-link-checker (push) Successful in 33s
Markdown linter / markdown-lint (push) Successful in 29s
2025-02-22 23:26:34 +00:00
76134921b8 Merge pull request 'chore(deps): update prometheuscommunity/postgres-exporter docker tag to v0.17.0' (#29) from renovate/prometheuscommunity-postgres-exporter-0.x into master
All checks were successful
Helm / helm-lint (push) Successful in 15s
Helm / helm-unittest (push) Successful in 17s
Release / publish-chart (push) Successful in 18s
Reviewed-on: #29
2025-02-22 21:49:33 +00:00
7ebfd12593 chore(deps): update prometheuscommunity/postgres-exporter docker tag to v0.17.0
All checks were successful
Helm / helm-lint (push) Successful in 17s
Helm / helm-unittest (push) Successful in 18s
Helm / helm-lint (pull_request) Successful in 15s
Helm / helm-unittest (pull_request) Successful in 20s
2025-02-22 02:25:18 +00:00
74ef3835f4 docs(README): hint of CPU limit lower than 1000m
All checks were successful
Generate README / generate-parameters (push) Successful in 41s
Helm / helm-lint (push) Successful in 17s
Helm / helm-unittest (push) Successful in 18s
Markdown linter / markdown-link-checker (push) Successful in 34s
Markdown linter / markdown-lint (push) Successful in 29s
2025-02-15 18:06:36 +01:00
80c8ff0d3b chore(deps): update docker.io/volkerraschek/helm docker tag to v3.17.1
All checks were successful
Helm / helm-lint (pull_request) Successful in 16s
Helm / helm-unittest (pull_request) Successful in 17s
Helm / helm-lint (push) Successful in 15s
Helm / helm-unittest (push) Successful in 18s
2025-02-14 20:30:39 +00:00
de379ec1ef chore(deps): update dependency volker.raschek/prometheus-postgres-exporter to v0.4.0
All checks were successful
Generate README / generate-parameters (pull_request) Successful in 30s
Helm / helm-lint (pull_request) Successful in 16s
Helm / helm-unittest (pull_request) Successful in 17s
Markdown linter / markdown-link-checker (pull_request) Successful in 32s
Markdown linter / markdown-lint (pull_request) Successful in 31s
Generate README / generate-parameters (push) Successful in 29s
Helm / helm-lint (push) Successful in 16s
Helm / helm-unittest (push) Successful in 19s
Markdown linter / markdown-link-checker (push) Successful in 33s
Markdown linter / markdown-lint (push) Successful in 29s
2025-02-14 17:42:10 +00:00
9275bca045 chore(renovate): automerge lockFileMaintenance
All checks were successful
Helm / helm-lint (push) Successful in 15s
Helm / helm-unittest (push) Successful in 16s
2025-02-14 18:27:22 +01:00
a33f92e63d test(deployment): typo of RollingUpdate
All checks were successful
Helm / helm-lint (push) Successful in 51s
Helm / helm-unittest (push) Successful in 18s
2025-02-14 18:04:58 +01:00
db3fbb9497 doc(README): adapt description of network policy section
Some checks failed
Generate README / generate-parameters (push) Successful in 30s
Helm / helm-lint (push) Successful in 16s
Helm / helm-unittest (push) Failing after 17s
Markdown linter / markdown-link-checker (push) Successful in 32s
Markdown linter / markdown-lint (push) Successful in 28s
Release / publish-chart (push) Successful in 20s
2025-02-14 17:55:34 +01:00
4d349c36ff chore(deps): lock file maintenance
Some checks failed
Helm / helm-lint (push) Successful in 15s
Helm / helm-unittest (push) Failing after 19s
2025-02-14 17:52:58 +01:00
a3038a75c8 feat(networkPolicies): template custom network policies
Some checks failed
Generate README / generate-parameters (push) Successful in 31s
Helm / helm-lint (push) Successful in 16s
Helm / helm-unittest (push) Failing after 18s
Markdown linter / markdown-link-checker (push) Successful in 33s
Markdown linter / markdown-lint (push) Successful in 31s
2025-02-14 17:51:04 +01:00
c497a31ecc chore(deps): update docker.io/library/node docker tag to v23.8.0
All checks were successful
Helm / helm-lint (pull_request) Successful in 17s
Helm / helm-unittest (pull_request) Successful in 18s
Helm / helm-lint (push) Successful in 20s
Helm / helm-unittest (push) Successful in 18s
2025-02-13 23:34:28 +00:00
c7a07eb7d1 chore(renovate): update renovate configuration
All checks were successful
Helm / helm-lint (push) Successful in 16s
Helm / helm-unittest (push) Successful in 17s
2025-02-13 22:48:39 +01:00
4b19f57ac5 chore(deps): update docker.io/library/node docker tag to v23.7.0
All checks were successful
Helm / helm-lint (pull_request) Successful in 16s
Helm / helm-unittest (pull_request) Successful in 20s
Helm / helm-lint (push) Successful in 15s
Helm / helm-unittest (push) Successful in 17s
2025-02-02 23:34:35 +00:00
310cdfaffe chore(deps): update dependency @bitnami/readme-generator-for-helm to v2.7.0
All checks were successful
Helm / helm-lint (pull_request) Successful in 16s
Helm / helm-unittest (pull_request) Successful in 19s
Helm / helm-lint (push) Successful in 16s
Helm / helm-unittest (push) Successful in 17s
2025-02-02 20:34:12 +00:00
8c2665fdc6 chore(renovate): add lockFileMaintenance
All checks were successful
Helm / helm-lint (push) Successful in 17s
Helm / helm-unittest (push) Successful in 18s
2025-02-02 18:51:25 +01:00
bb9d71d233 chore(deps): update dependency markdownlint-cli to ^0.44.0
All checks were successful
Helm / helm-lint (pull_request) Successful in 16s
Helm / helm-unittest (pull_request) Successful in 17s
2025-01-25 02:38:21 +00:00
ded6c55521 chore(deps): update docker.io/library/node docker tag to v23.6.1
All checks were successful
Helm / helm-lint (pull_request) Successful in 16s
Helm / helm-unittest (pull_request) Successful in 19s
2025-01-22 17:41:47 +00:00
b3a9ddd487 chore(deps): update dependency volker.raschek/prometheus-postgres-exporter to v0.3.2
All checks were successful
Generate README / generate-parameters (pull_request) Successful in 29s
Helm / helm-lint (pull_request) Successful in 16s
Helm / helm-unittest (pull_request) Successful in 19s
Markdown linter / markdown-link-checker (pull_request) Successful in 37s
Markdown linter / markdown-lint (pull_request) Successful in 28s
Generate README / generate-parameters (push) Successful in 29s
Helm / helm-lint (push) Successful in 17s
Helm / helm-unittest (push) Successful in 17s
Markdown linter / markdown-link-checker (push) Successful in 32s
Markdown linter / markdown-lint (push) Successful in 27s
2025-01-19 21:17:50 +00:00
f87d417e73 doc(README): typo
All checks were successful
Generate README / generate-parameters (push) Successful in 28s
Helm / helm-lint (push) Successful in 15s
Helm / helm-unittest (push) Successful in 18s
Markdown linter / markdown-link-checker (push) Successful in 33s
Markdown linter / markdown-lint (push) Successful in 28s
2025-01-19 22:06:27 +01:00
fb218484d0 fix(deployment): add missing rolling release strategy
All checks were successful
Generate README / generate-parameters (push) Successful in 28s
Helm / helm-lint (push) Successful in 16s
Helm / helm-unittest (push) Successful in 18s
Markdown linter / markdown-link-checker (push) Successful in 30s
Markdown linter / markdown-lint (push) Successful in 26s
Release / publish-chart (push) Successful in 20s
2025-01-19 21:45:16 +01:00
b29f79370c doc(values): add missing dot
All checks were successful
Generate README / generate-parameters (push) Successful in 42s
Helm / helm-lint (push) Successful in 18s
Helm / helm-unittest (push) Successful in 19s
2025-01-19 21:39:56 +01:00
814dd01995 fix(ci): run on all branches
All checks were successful
Helm / helm-lint (push) Successful in 27s
Helm / helm-unittest (push) Successful in 17s
2025-01-19 21:22:54 +01:00
75292a54ca Merge pull request 'chore(deps): update docker.io/library/node docker tag to v23' (#17) from renovate/docker.io-library-node-23.x into master
Reviewed-on: #17
2025-01-19 15:04:34 +00:00
744e0141e4 chore(deps): update docker.io/library/node docker tag to v23
All checks were successful
Helm / helm-lint (pull_request) Successful in 15s
Helm / helm-unittest (pull_request) Successful in 18s
2025-01-16 02:32:52 +00:00
cc61720a11 chore(deps): update dependency volker.raschek/prometheus-postgres-exporter to v0.3.1
All checks were successful
Generate README / generate-parameters (pull_request) Successful in 45s
Helm / helm-lint (pull_request) Successful in 17s
Helm / helm-unittest (pull_request) Successful in 17s
Markdown linter / markdown-link-checker (pull_request) Successful in 33s
Markdown linter / markdown-lint (pull_request) Successful in 28s
2025-01-15 23:33:05 +00:00
90d48f8450 fix(renovate): adapt configuration to update README 2025-01-15 22:09:05 +01:00
ad69f02f8f fix(deployment): set resourceFieldRef.divisor
All checks were successful
Release / publish-chart (push) Successful in 28s
2025-01-15 21:13:30 +01:00
3ea3f94429 chore(deps): update docker.io/library/node docker tag to v22.13.0
All checks were successful
Helm / helm-lint (pull_request) Successful in 22s
Helm / helm-unittest (pull_request) Successful in 19s
Release / publish-chart (push) Successful in 21s
2025-01-14 23:38:20 +00:00
11c58d99fa chore(deps): update docker.io/volkerraschek/helm docker tag to v3.16.4
All checks were successful
Helm / helm-lint (pull_request) Successful in 18s
Helm / helm-unittest (pull_request) Successful in 18s
2025-01-14 22:22:29 +00:00
2958540cf7 fix(renovate): add automerge of public container images 2025-01-14 22:36:18 +01:00
b0a16dc214 fix(renovate): remove droneci config 2025-01-14 22:28:19 +01:00
2a04fb1966 fix(deployment): automatically set GOMAXPROCS 2025-01-14 22:26:28 +01:00
fcf64a215d fix(renovate): adapt automerge config 2025-01-12 22:57:59 +01:00
2b6f0dbda4 fix(renovate): adapt configuration 2025-01-12 18:13:25 +01:00
93884a4f51 chore(ci): install npm 2025-01-12 16:55:02 +01:00
42ca0a7370 chore(ci): typo in vi variable
All checks were successful
Release / publish-chart (push) Successful in 17s
2025-01-12 16:43:50 +01:00
a4875f9488 chore(ci): replace drone-ci with act
Some checks failed
Release / publish-chart (push) Failing after 14s
2025-01-12 16:40:07 +01:00
a976273cbc fix(drone): disable release pipeline
All checks were successful
continuous-integration/drone/push Build is passing
2025-01-12 15:27:12 +01:00
5646ebfa8c chore(deps): update docker.io/library/node docker tag to v23.6.0
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2025-01-08 02:22:25 +00:00
4a4650cdc2 fix(Makefile): remove markdownlink-check target
All checks were successful
continuous-integration/drone/push Build is passing
2025-01-04 22:28:02 +01:00
b73455b657 doc(values): add affinity example
All checks were successful
continuous-integration/drone/tag Build is passing
continuous-integration/drone/push Build is passing
2025-01-04 21:54:50 +01:00
79062bc1c3 chore(deps): update docker.io/library/node docker tag to v23.5.0
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-12-20 17:23:19 +00:00
3b0a815203 chore(deps): update git.cryptic.systems/volker.raschek/helm docker tag to v3.16.4
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-12-17 11:27:45 +00:00
ffa8271684 chore(deps): update docker.io/library/node docker tag to v23.4.0
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-12-10 20:23:17 +00:00
f59f6aa94d doc(README): update parameters
All checks were successful
continuous-integration/drone/tag Build is passing
continuous-integration/drone/push Build is passing
2024-12-06 23:58:57 +01:00
ce4065bda8 fix(deployment): template affinity
Some checks failed
continuous-integration/drone/tag Build is passing
continuous-integration/drone/push Build is failing
2024-12-06 23:57:09 +01:00
1581617daf fix(deployment): number of replicas 2024-12-06 23:45:36 +01:00
a3e4c0c0e7 core(renovate): use packageNameTemplate
All checks were successful
continuous-integration/drone/push Build is passing
2024-12-05 23:24:59 +01:00
2e8bc16f1e core(renovate): update regexp
All checks were successful
continuous-integration/drone/push Build is passing
2024-12-05 23:18:47 +01:00
a07c602c44 core(renocate): use gitea-tags
All checks were successful
continuous-integration/drone/push Build is passing
2024-12-05 22:36:21 +01:00
b96736bc69 core(renovate): use lookupNameTemplate
All checks were successful
continuous-integration/drone/push Build is passing
2024-12-05 22:31:53 +01:00
4cd6988b38 core(renovate): update config
All checks were successful
continuous-integration/drone/push Build is passing
2024-12-05 22:19:07 +01:00
b5fc1b7575 doc(values): remove obsolete line
All checks were successful
continuous-integration/drone/push Build is passing
2024-12-03 09:48:30 +01:00
316b9b236b doc(README): apply proper names
All checks were successful
continuous-integration/drone/push Build is passing
2024-12-03 09:41:52 +01:00
5bf8a132eb chore(ci): execute markdown-link-check as npm module in single step
Some checks failed
continuous-integration/drone/push Build is failing
2024-12-03 09:37:55 +01:00
489c616e9a chore(ci): execute markdown-link-check as npm module
Some checks failed
continuous-integration/drone/push Build is failing
2024-12-03 09:34:39 +01:00
631bd72480 chore(ci): add markdown-link-check
Some checks failed
continuous-integration/drone/push Build is failing
2024-12-03 09:23:44 +01:00
33cf9e8fc0 chore(markdown-link-check): adapt FQIN
All checks were successful
continuous-integration/drone/push Build is passing
2024-12-03 09:21:10 +01:00
e462e5a002 doc(README): Avoid deploying on same node / bare metal host
All checks were successful
continuous-integration/drone/push Build is passing
2024-12-03 09:18:14 +01:00
76ec5a66ff chore(deps): update git.cryptic.systems/volker.raschek/helm docker tag to v3.16.3
All checks were successful
continuous-integration/drone/push Build is passing
2024-12-02 12:59:54 +00:00
686e43668c core(markdownlint): add proper name
All checks were successful
continuous-integration/drone/push Build is passing
2024-12-02 13:56:04 +01:00
7ce70de51c doc(README): deploy Grafana dashboard
Some checks failed
continuous-integration/drone/push Build is failing
2024-12-02 13:54:02 +01:00
3434c5a737 fix(dashboards): rename postgresExporter.yaml to .json
All checks were successful
continuous-integration/drone/tag Build is passing
continuous-integration/drone/push Build is passing
2024-12-02 13:33:06 +01:00
24 changed files with 2839 additions and 431 deletions

View File

@ -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:23.3.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

View File

@ -0,0 +1,32 @@
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:24.1.0-alpine
runs-on:
- ubuntu-latest
steps:
- name: Install tooling
run: |
apk update
apk add git npm
- uses: actions/checkout@v4.2.2
- 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

View File

@ -0,0 +1,42 @@
name: Helm
on:
pull_request:
types: [ "opened", "reopened", "synchronize" ]
push:
branches:
- '**'
tags-ignore:
- '**'
workflow_dispatch: {}
jobs:
helm-lint:
container:
image: docker.io/volkerraschek/helm:3.18.0
runs-on:
- ubuntu-latest
steps:
- name: Install tooling
run: |
apk update
apk add git npm
- uses: actions/checkout@v4.2.2
- name: Lint helm files
run: |
helm lint --values values.yaml .
helm-unittest:
container:
image: docker.io/volkerraschek/helm:3.18.0
runs-on:
- ubuntu-latest
steps:
- name: Install tooling
run: |
apk update
apk add git npm
- uses: actions/checkout@v4.2.2
- name: Unittest
run: |
helm unittest --strict --file 'unittests/**/*.yaml' ./

View File

@ -0,0 +1,46 @@
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:24.1.0-alpine
runs-on:
- ubuntu-latest
steps:
- name: Install tooling
run: |
apk update
apk add git npm
- uses: actions/checkout@v4.2.2
- name: Verify links in markdown files
run: |
npm install
npm run readme:link
markdown-lint:
container:
image: docker.io/library/node:24.1.0-alpine
runs-on:
- ubuntu-latest
steps:
- name: Install tooling
run: |
apk update
apk add git
- uses: actions/checkout@v4.2.2
- name: Lint markdown files
run: |
npm install
npm run readme:lint

View File

@ -0,0 +1,46 @@
name: Release
on:
push:
tags:
- "**"
jobs:
publish-chart:
container:
image: docker.io/volkerraschek/helm:3.18.0
runs-on: ubuntu-latest
steps:
- name: Install tooling
run: |
apk update
apk add git npm
- uses: actions/checkout@v4
- name: Package chart
env:
HELM_REPO_NAME: upload
CHARTMUSEUM_PASSWORD: ${{ secrets.CHARTMUSEUM_PASSWORD }}
CHARTMUSEUM_REPOSITORY: ${{ vars.CHARTMUSEUM_REPOSITORY }}
CHARTMUSEUM_USERNAME: ${{ secrets.CHARTMUSEUM_USERNAME }}
CHARTMUSEUM_HOSTNAME: ${{ vars.CHARTMUSEUM_HOSTNAME }}
GITEA_PACKAGE_REGISTRY_TOKEN: ${{ secrets.GIT_CRYPTIC_SYSTEMS_PACKAGE_REGISTRY_TOKEN }}
GITEA_SERVER_URL: ${{ github.server_url }}
run: |
PACKAGE_VERSION=${GITHUB_REF#refs/tags/}
REPOSITORY_NAME=$(echo ${GITHUB_REPOSITORY} | cut -d '/' -f 2)
REPOSITORY_OWNER=$(echo ${GITHUB_REPOSITORY} | cut -d '/' -f 1)
helm dependency build
helm package --version "${PACKAGE_VERSION}" ./
# chart-museum
helm repo add --username ${CHARTMUSEUM_USERNAME} --password ${CHARTMUSEUM_PASSWORD} chartmuseum https://${CHARTMUSEUM_HOSTNAME}/${CHARTMUSEUM_REPOSITORY}
helm cm-push ${REPOSITORY_NAME}-${PACKAGE_VERSION}.tgz chartmuseum
helm repo remove chartmuseum
# gitea
helm repo add --username ${REPOSITORY_OWNER} --password ${GITEA_PACKAGE_REGISTRY_TOKEN} gitea ${GITEA_SERVER_URL}/api/packages/${REPOSITORY_OWNER}/helm
helm cm-push ${REPOSITORY_NAME}-${PACKAGE_VERSION}.tgz gitea
helm repo remove gitea

View File

@ -128,16 +128,18 @@ MD044:
# List of proper names # List of proper names
names: names:
- Git - Git
- Gitea
- GitDevOps - GitDevOps
- Gitea
- GitHub - GitHub
- GitLab - GitLab
- GitOps - GitOps
- kube-prometheus-stack
- Memcached - Memcached
- Oracle - Oracle
- ORBIS U - ORBIS U
- PostgreSQL - PostgreSQL
- Prometheus - Prometheus
- prometheus-exporter
- SSL - SSL
- TLS - TLS
# Include code blocks # Include code blocks

View File

@ -4,7 +4,7 @@ description: Prometheus metric exporter for PostgreSQL
type: application type: application
kubeVersion: ">=1.20.0" kubeVersion: ">=1.20.0"
version: "0.1.0" version: "0.1.0"
appVersion: "0.16.0" appVersion: "0.17.1"
# icon: https://annotations.example.com/icon.png # icon: https://annotations.example.com/icon.png

View File

@ -3,20 +3,14 @@ CONTAINER_RUNTIME?=$(shell which podman)
# HELM_IMAGE # HELM_IMAGE
HELM_IMAGE_REGISTRY_HOST?=docker.io HELM_IMAGE_REGISTRY_HOST?=docker.io
HELM_IMAGE_REPOSITORY=volkerraschek/helm HELM_IMAGE_REPOSITORY?=volkerraschek/helm
HELM_IMAGE_VERSION?=3.16.1 # renovate: datasource=docker registryUrl=https://docker.io depName=volkerraschek/helm HELM_IMAGE_VERSION?=3.18.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} 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
NODE_IMAGE_REGISTRY_HOST?=docker.io NODE_IMAGE_REGISTRY_HOST?=docker.io
NODE_IMAGE_REPOSITORY=library/node NODE_IMAGE_REPOSITORY?=library/node
NODE_IMAGE_VERSION?=22.9.0-alpine # renovate: datasource=docker registryUrl=https://docker.io depName=library/node NODE_IMAGE_VERSION?=24.1.0-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} NODE_IMAGE_FULLY_QUALIFIED=${NODE_IMAGE_REGISTRY_HOST}/${NODE_IMAGE_REPOSITORY}:${NODE_IMAGE_VERSION}
# MISSING DOT # MISSING DOT
@ -24,16 +18,34 @@ NODE_IMAGE_FULLY_QUALIFIED=${NODE_IMAGE_REGISTRY_HOST}/${NODE_IMAGE_REPOSITORY}:
missing-dot: missing-dot:
grep --perl-regexp '## @(param|skip).*[^.]$$' values.yaml grep --perl-regexp '## @(param|skip).*[^.]$$' values.yaml
# CONTAINER RUN - PREPARE ENVIRONMENT # CONTAINER RUN - README
# ============================================================================== # ==============================================================================
PHONY+=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 \ ${CONTAINER_RUNTIME} run \
--rm \ --rm \
--volume $(shell pwd):$(shell pwd) \ --volume $(shell pwd):$(shell pwd) \
--workdir $(shell pwd) \ --workdir $(shell pwd) \
${NODE_IMAGE_FULLY_QUALIFIED} \ ${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 # CONTAINER RUN - HELM UNITTESTS
# ============================================================================== # ==============================================================================
@ -72,16 +84,6 @@ container-run/helm-lint:
${HELM_IMAGE_FULLY_QUALIFIED} \ ${HELM_IMAGE_FULLY_QUALIFIED} \
lint --values values.yaml . 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 # PHONY
# ============================================================================== # ==============================================================================
# Declare the contents of the PHONY variable as phony. We keep that information # Declare the contents of the PHONY variable as phony. We keep that information

182
README.md
View File

@ -1,11 +1,12 @@
# Prometheus PostgreSQL exporter # Prometheus PostgreSQL exporter
[![Build Status](https://drone.cryptic.systems/api/badges/volker.raschek/prometheus-postgres-exporter/status.svg)](https://drone.cryptic.systems/volker.raschek/prometheus-postgres-exporter)
[![Artifact Hub](https://img.shields.io/endpoint?url=https://artifacthub.io/badge/repository/prometheus-exporters)](https://artifacthub.io/packages/search?repo=prometheus-exporters) [![Artifact Hub](https://img.shields.io/endpoint?url=https://artifacthub.io/badge/repository/prometheus-exporters)](https://artifacthub.io/packages/search?repo=prometheus-exporters)
> [!NOTE] > [!NOTE]
> This is not the official *community* helm chart of the Prometheus metric exporter for PostgreSQL databases. You can > This is not the official *community* helm chart of the Prometheus metric exporter for PostgreSQL databases. If you are
> find the official community chart [here](https://github.com/prometheus-community/helm-charts). > 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 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 individual configuration of additional containers/initContainers, mounting of volumes, defining additional environment
@ -20,7 +21,7 @@ helm chart is tested for deployment scenarios with **ArgoCD**.
## Helm: configuration and installation ## Helm: configuration and installation
1. A helm chart repository must be configured, to pull the helm charts from. 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 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` `--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. repository and use the `--set` flag for a basic deployment.
@ -46,7 +47,8 @@ version of the chart must be in sync with the `values.yaml`. Newer *minor* versi
versions can break something! versions can break something!
```bash ```bash
helm show values prometheus-exporters/prometheus-postgres-exporter --version 0.1.0 > values.yaml CHART_VERSION=0.4.2
helm show values prometheus-exporters/prometheus-postgres-exporter --version "${CHART_VERSION}" > values.yaml
``` ```
A complete list of available helm chart versions can be displayed via the following command: A complete list of available helm chart versions can be displayed via the following command:
@ -62,7 +64,39 @@ 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. 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
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
helm install 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 first example shows how to deploy the metric exporter with TLS encryption. The verification of the custom TLS The first example shows how to deploy the metric exporter with TLS encryption. The verification of the custom TLS
certification will be skipped by Prometheus. certification will be skipped by Prometheus.
@ -116,6 +150,116 @@ replaced:
+ --set 'prometheus.metrics.serviceMonitor.tlsConfig.keyFile=/etc/prometheus/tls/tls.key' + --set 'prometheus.metrics.serviceMonitor.tlsConfig.keyFile=/etc/prometheus/tls/tls.key'
``` ```
#### 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
helm install 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
```
## Parameters ## Parameters
### Global ### Global
@ -128,7 +272,7 @@ replaced:
### Configuration ### Configuration
| Name | Description | Value | | Name | Description | Value |
| ------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | | ------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------- |
| `config.database.existingSecret.enabled` | Mount an existing secret containing the application specific `DATA_SOURCE_` prefixed environment variables. | `false` | | `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.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.annotations` | Additional annotations of the secret containing the database credentials. | `{}` |
@ -140,19 +284,19 @@ replaced:
| `config.exporterConfig.existingSecret.secretName` | Name of the existing secret containing the key `exporterConfig.yaml`. | `""` | | `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.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.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://github.com/prometheus-community/postgres_exporter?tab=readme-ov-file#multi-target-support-beta). | `{}` | | `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.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.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.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.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/). | `{}` | | `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 ### Deployment
| Name | Description | Value | | Name | Description | Value |
| -------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | --------------------------------------- | | -------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | --------------------------------------- |
| `deployment.annotations` | Additional deployment annotations. | `{}` | | `deployment.annotations` | Additional deployment annotations. | `{}` |
| `deployment.labels` | Additional ingress labels. | `{}` | | `deployment.labels` | Additional deployment labels. | `{}` |
| `deployment.additionalContainers` | List of additional containers. | `[]` | | `deployment.additionalContainers` | List of additional containers. | `[]` |
| `deployment.affinity` | Affinity for the postgres-exporter deployment. | `{}` | | `deployment.affinity` | Affinity for the postgres-exporter deployment. | `{}` |
| `deployment.initContainers` | List of additional init containers. | `[]` | | `deployment.initContainers` | List of additional init containers. | `[]` |
@ -174,16 +318,16 @@ replaced:
| `deployment.postgresExporter.volumeMounts` | Additional volume mounts. | `[]` | | `deployment.postgresExporter.volumeMounts` | Additional volume mounts. | `[]` |
| `deployment.nodeSelector` | NodeSelector of the postgres-exporter deployment. | `{}` | | `deployment.nodeSelector` | NodeSelector of the postgres-exporter deployment. | `{}` |
| `deployment.priorityClassName` | PriorityClassName 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.restartPolicy` | Restart policy of the postgres-exporter deployment. | `""` |
| `deployment.securityContext` | Security context 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.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.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.terminationGracePeriodSeconds` | How long to wait until forcefully kill the pod. | `60` |
| `deployment.tolerations` | Tolerations of the postgres-exporter deployment. | `[]` | | `deployment.tolerations` | Tolerations of the postgres-exporter deployment. | `[]` |
| `deployment.topologySpreadConstraints` | TopologySpreadConstraints 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 ### Grafana
@ -212,11 +356,17 @@ replaced:
| --------------------- | ---------------------- | ----- | | --------------------- | ---------------------- | ----- |
| `podDisruptionBudget` | Pod disruption budget. | `{}` | | `podDisruptionBudget` | Pod disruption budget. | `{}` |
### Network ### NetworkPolicies
| Name | Description | Value | | Name | Description | Value |
| ----------------- | ------------------------------------------------------------------------------------------------------------------ | ----- | | ------------------------------------- | ----------------------------------------------------------------------------------------------------- | ------- |
| `networkPolicies` | Deploy network policies based on the used container network interface (CNI) implementation - like calico or weave. | `{}` | | `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 ### Prometheus

1921
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
{ {
"name": "qu-seed-chart", "name": "prometheus-postgres-exporter",
"homepage": "https://github.com/dedalus-cis4u/qu-seed-chart.git", "homepage": "https://git.cryptic.systems/volker.raschek/prometheus-postgres-exporter.git",
"license": "MIT", "license": "MIT",
"private": true, "private": true,
"engineStrict": true, "engineStrict": true,
@ -9,11 +9,13 @@
"npm": ">=8.0.0" "npm": ">=8.0.0"
}, },
"scripts": { "scripts": {
"readme:link": "markdown-link-check *.md",
"readme:lint": "markdownlint *.md -f", "readme:lint": "markdownlint *.md -f",
"readme:parameters": "readme-generator -v values.yaml -r README.md" "readme:parameters": "readme-generator -v values.yaml -r README.md"
}, },
"devDependencies": { "devDependencies": {
"@bitnami/readme-generator-for-helm": "^2.5.0", "@bitnami/readme-generator-for-helm": "^2.5.0",
"markdownlint-cli": "^0.43.0" "markdown-link-check": "^3.13.6",
"markdownlint-cli": "^0.45.0"
} }
} }

View File

@ -1,9 +1,14 @@
{ {
"$schema": "https://docs.renovatebot.com/renovate-schema.json", "$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:npm#master",
"local>volker.raschek/renovate-config:regexp#master"
],
"customManagers": [ "customManagers": [
{ {
"description": "Update container image reference",
"fileMatch": [ "fileMatch": [
"^Chart\\.yaml$" "^Chart\\.yaml$"
], ],
@ -11,26 +16,53 @@
"appVersion: \"(?<currentValue>.*?)\"\\s+" "appVersion: \"(?<currentValue>.*?)\"\\s+"
], ],
"datasourceTemplate": "docker", "datasourceTemplate": "docker",
"depNameTemplate": "prometheus-postgres-exporter", "depNameTemplate": "prometheuscommunity/postgres-exporter",
"lookupNameTemplate": "quay.io/prometheuscommunity/postgres-exporter" "lookupNameTemplate": "quay.io/prometheuscommunity/postgres-exporter",
} "versioningTemplate": "semver"
],
"labels": [ "renovate" ],
"packageRules": [
{
"addLabels": [ "renovate/droneci", "renovate/automerge" ],
"automerge": true,
"matchManagers": "droneci",
"matchUpdateTypes": [ "minor", "patch"]
}, },
{ {
"addLabels": [ "renovate/markdownlint", "renovate/automerge" ], "fileMatch": ["^README\\.md$"],
"automerge": true, "matchStrings": [
"matchPackageNames": [ "markdownlint-cli", "@bitnami/readme-generator-for-helm" ], "VERSION=(?<currentValue>.*)"
"matchManagers": [ "npm" ], ],
"matchUpdateTypes": [ "minor", "patch"] "depNameTemplate": "volker.raschek/prometheus-postgres-exporter",
"packageNameTemplate": "https://git.cryptic.systems/volker.raschek/prometheus-postgres-exporter",
"datasourceTemplate": "git-tags",
"versioningTemplate": "semver"
} }
], ],
"rebaseLabel": "renovate/rebase", "packageRules": [
"rebaseWhen": "behind-base-branch" {
"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"
]
}
]
} }

View File

@ -9,6 +9,17 @@
{{- end }} {{- end }}
{{- 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 */}} {{/* envFrom */}}
{{- define "prometheus-postgres-exporter.deployment.envFrom" -}} {{- define "prometheus-postgres-exporter.deployment.envFrom" -}}

View File

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

View File

@ -4,6 +4,37 @@
{{- define "prometheus-postgres-exporter.pod.annotations" -}} {{- define "prometheus-postgres-exporter.pod.annotations" -}}
{{ include "prometheus-postgres-exporter.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 "/prometheus-postgres-exporter/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 "/prometheus-postgres-exporter/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 "/prometheus-postgres-exporter/secretWebConfig.yaml") . | sha256sum }}
{{- end }}
{{- end }} {{- end }}
{{/* labels */}} {{/* labels */}}

View File

@ -5,7 +5,7 @@ kind: ConfigMap
metadata: metadata:
{{- with (include "prometheus-postgres-exporter.configMap.grafanaDashboards.postgresExporter.annotations" . | fromYaml) }} {{- with (include "prometheus-postgres-exporter.configMap.grafanaDashboards.postgresExporter.annotations" . | fromYaml) }}
annotations: annotations:
{{- tpl (. | toYaml) $ | nindent 4 }} {{- tpl (toYaml .) $ | nindent 4 }}
{{- end }} {{- end }}
{{- with (include "prometheus-postgres-exporter.configMap.grafanaDashboards.postgresExporter.labels" . | fromYaml) }} {{- with (include "prometheus-postgres-exporter.configMap.grafanaDashboards.postgresExporter.labels" . | fromYaml) }}
labels: labels:
@ -14,7 +14,7 @@ metadata:
name: {{ include "prometheus-postgres-exporter.fullname" . }}-grafana-dashboard-postgres-exporter name: {{ include "prometheus-postgres-exporter.fullname" . }}-grafana-dashboard-postgres-exporter
namespace: {{ .Release.Namespace }} namespace: {{ .Release.Namespace }}
data: data:
postgresExporter.yaml: |- postgresExporter.json: |-
{{`{ {{`{
"__inputs": [ "__inputs": [
{ {

View File

@ -3,7 +3,7 @@ kind: Deployment
metadata: metadata:
{{- with (include "prometheus-postgres-exporter.deployment.annotations" . | fromYaml) }} {{- with (include "prometheus-postgres-exporter.deployment.annotations" . | fromYaml) }}
annotations: annotations:
{{- tpl (. | toYaml) $ | nindent 4 }} {{- tpl (toYaml .) $ | nindent 4 }}
{{- end }} {{- end }}
{{- with (include "prometheus-postgres-exporter.deployment.labels" . | fromYaml) }} {{- with (include "prometheus-postgres-exporter.deployment.labels" . | fromYaml) }}
labels: labels:
@ -12,14 +12,21 @@ metadata:
name: {{ include "prometheus-postgres-exporter.fullname" . }} name: {{ include "prometheus-postgres-exporter.fullname" . }}
namespace: {{ .Release.Namespace }} namespace: {{ .Release.Namespace }}
spec: spec:
replicas: {{ .Values.deployment.replicas }}
selector: selector:
matchLabels: matchLabels:
{{- include "prometheus-postgres-exporter.pod.selectorLabels" . | nindent 6 }} {{- include "prometheus-postgres-exporter.pod.selectorLabels" . | nindent 6 }}
template: template:
metadata: metadata:
annotations:
{{- include "prometheus-postgres-exporter.pod.annotations" . | nindent 8 }}
labels: labels:
{{- include "prometheus-postgres-exporter.pod.labels" . | nindent 8 }} {{- include "prometheus-postgres-exporter.pod.labels" . | nindent 8 }}
spec: spec:
{{- with .Values.deployment.affinity }}
affinity:
{{- toYaml . | nindent 8 }}
{{- end }}
containers: containers:
- name: postgres-exporter - name: postgres-exporter
args: args:
@ -29,9 +36,10 @@ spec:
{{- range .Values.deployment.postgresExporter.args }} {{- range .Values.deployment.postgresExporter.args }}
- {{ . | quote }} - {{ . | quote }}
{{- end }} {{- 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: env:
{{- toYaml . | nindent 8 }} {{- toYaml $env.env | nindent 8 }}
{{- end }} {{- end }}
{{- $envFrom := (include "prometheus-postgres-exporter.deployment.envFrom" . | fromYaml) }} {{- $envFrom := (include "prometheus-postgres-exporter.deployment.envFrom" . | fromYaml) }}
{{- if hasKey $envFrom "envFrom" }} {{- if hasKey $envFrom "envFrom" }}
@ -120,3 +128,7 @@ spec:
volumes: volumes:
{{- toYaml $volumes.volumes | nindent 6 }} {{- toYaml $volumes.volumes | nindent 6 }}
{{- end }} {{- end }}
{{- with .Values.deployment.strategy }}
strategy:
{{- toYaml . | nindent 4 }}
{{- end }}

View File

@ -5,7 +5,7 @@ kind: Ingress
metadata: metadata:
{{- with (include "prometheus-postgres-exporter.ingress.annotations" . | fromYaml) }} {{- with (include "prometheus-postgres-exporter.ingress.annotations" . | fromYaml) }}
annotations: annotations:
{{- tpl (. | toYaml) $ | nindent 4 }} {{- tpl (toYaml .) $ | nindent 4 }}
{{- end }} {{- end }}
{{- with (include "prometheus-postgres-exporter.ingress.labels" . | fromYaml) }} {{- with (include "prometheus-postgres-exporter.ingress.labels" . | fromYaml) }}
labels: labels:

View File

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

View File

@ -36,7 +36,7 @@ tests:
grafana_dashboard: "1" grafana_dashboard: "1"
helm.sh/chart: prometheus-postgres-exporter-0.1.0 helm.sh/chart: prometheus-postgres-exporter-0.1.0
- exists: - exists:
path: data["postgresExporter.yaml"] path: data["postgresExporter.json"]
- it: Test custom annotations and labels - it: Test custom annotations and labels
set: set:

View File

@ -7,18 +7,29 @@ release:
namespace: testing namespace: testing
templates: templates:
- templates/prometheus-postgres-exporter/deployment.yaml - templates/prometheus-postgres-exporter/deployment.yaml
- templates/prometheus-postgres-exporter/secretDatabase.yaml
- templates/prometheus-postgres-exporter/secretExporterConfig.yaml
- templates/prometheus-postgres-exporter/secretWebConfig.yaml
tests: tests:
- it: Rendering default - 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: asserts:
- hasDocuments: - hasDocuments:
count: 1 count: 1
template: templates/prometheus-postgres-exporter/deployment.yaml
- containsDocument: - containsDocument:
apiVersion: apps/v1 apiVersion: apps/v1
kind: Deployment kind: Deployment
name: prometheus-postgres-exporter-unittest name: prometheus-postgres-exporter-unittest
namespace: testing namespace: testing
template: templates/prometheus-postgres-exporter/deployment.yaml
- notExists: - notExists:
path: metadata.annotations path: metadata.annotations.checksum/secret-database
template: templates/prometheus-postgres-exporter/deployment.yaml
- equal: - equal:
path: metadata.labels path: metadata.labels
value: value:
@ -27,22 +38,51 @@ tests:
app.kubernetes.io/name: prometheus-postgres-exporter app.kubernetes.io/name: prometheus-postgres-exporter
app.kubernetes.io/version: 0.1.0 app.kubernetes.io/version: 0.1.0
helm.sh/chart: prometheus-postgres-exporter-0.1.0 helm.sh/chart: prometheus-postgres-exporter-0.1.0
template: templates/prometheus-postgres-exporter/deployment.yaml
- equal:
path: spec.replicas
value: 1
template: templates/prometheus-postgres-exporter/deployment.yaml
- exists:
path: spec.template.metadata.annotations.checksum/secret-database
template: templates/prometheus-postgres-exporter/deployment.yaml
- exists:
path: spec.template.metadata.annotations.checksum/secret-exporter-config
template: templates/prometheus-postgres-exporter/deployment.yaml
- exists:
path: spec.template.metadata.annotations.checksum/secret-web-config
template: templates/prometheus-postgres-exporter/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/prometheus-postgres-exporter/deployment.yaml
- notExists:
path: spec.template.spec.affinity
template: templates/prometheus-postgres-exporter/deployment.yaml
- contains: - contains:
path: spec.template.spec.containers[0].envFrom path: spec.template.spec.containers[0].envFrom
content: content:
secretRef: secretRef:
name: prometheus-postgres-exporter-unittest-database-env name: prometheus-postgres-exporter-unittest-database-env
template: templates/prometheus-postgres-exporter/deployment.yaml
- equal: - equal:
path: spec.template.spec.containers[0].args path: spec.template.spec.containers[0].args
value: value:
- --config.file=/etc/prometheus-postgres-exporter/config.d/exporterConfig.yaml - --config.file=/etc/prometheus-postgres-exporter/config.d/exporterConfig.yaml
- --web.config.file=/etc/prometheus-postgres-exporter/config.d/webConfig.yaml - --web.config.file=/etc/prometheus-postgres-exporter/config.d/webConfig.yaml
- --web.listen-address=:9187 - --web.listen-address=:9187
template: templates/prometheus-postgres-exporter/deployment.yaml
- equal: - equal:
path: spec.template.spec.containers[0].volumeMounts path: spec.template.spec.containers[0].volumeMounts
value: value:
- mountPath: /etc/prometheus-postgres-exporter/config.d - mountPath: /etc/prometheus-postgres-exporter/config.d
name: config-d name: config-d
template: templates/prometheus-postgres-exporter/deployment.yaml
- equal: - equal:
path: spec.template.spec.volumes path: spec.template.spec.volumes
value: value:
@ -54,45 +94,124 @@ tests:
name: prometheus-postgres-exporter-unittest-exporter-config name: prometheus-postgres-exporter-unittest-exporter-config
- secret: - secret:
name: prometheus-postgres-exporter-unittest-web-config name: prometheus-postgres-exporter-unittest-web-config
template: templates/prometheus-postgres-exporter/deployment.yaml
- equal: - equal:
path: spec.template.spec.containers[0].image path: spec.template.spec.containers[0].image
value: quay.io/prometheuscommunity/postgres-exporter:v0.1.0 value: quay.io/prometheuscommunity/postgres-exporter:v0.1.0
template: templates/prometheus-postgres-exporter/deployment.yaml
- equal: - equal:
path: spec.template.spec.containers[0].imagePullPolicy path: spec.template.spec.containers[0].imagePullPolicy
value: IfNotPresent value: IfNotPresent
template: templates/prometheus-postgres-exporter/deployment.yaml
- notExists: - notExists:
path: spec.template.spec.containers[0].resources path: spec.template.spec.containers[0].resources
template: templates/prometheus-postgres-exporter/deployment.yaml
- notExists: - notExists:
path: spec.template.spec.containers[0].securityContext path: spec.template.spec.containers[0].securityContext
template: templates/prometheus-postgres-exporter/deployment.yaml
- notExists: - notExists:
path: spec.template.spec.dnsConfig path: spec.template.spec.dnsConfig
template: templates/prometheus-postgres-exporter/deployment.yaml
- notExists: - notExists:
path: spec.template.spec.dnsPolicy path: spec.template.spec.dnsPolicy
template: templates/prometheus-postgres-exporter/deployment.yaml
- notExists: - notExists:
path: spec.template.spec.hostname path: spec.template.spec.hostname
template: templates/prometheus-postgres-exporter/deployment.yaml
- equal: - equal:
path: spec.template.spec.hostNetwork path: spec.template.spec.hostNetwork
value: false value: false
template: templates/prometheus-postgres-exporter/deployment.yaml
- notExists: - notExists:
path: spec.template.spec.imagePullSecrets path: spec.template.spec.imagePullSecrets
template: templates/prometheus-postgres-exporter/deployment.yaml
- notExists: - notExists:
path: spec.template.spec.nodeSelector path: spec.template.spec.nodeSelector
template: templates/prometheus-postgres-exporter/deployment.yaml
- notExists: - notExists:
path: spec.template.spec.priorityClassName path: spec.template.spec.priorityClassName
template: templates/prometheus-postgres-exporter/deployment.yaml
- notExists: - notExists:
path: spec.template.spec.restartPolicy path: spec.template.spec.restartPolicy
template: templates/prometheus-postgres-exporter/deployment.yaml
- notExists: - notExists:
path: spec.template.spec.subdomain path: spec.template.spec.subdomain
template: templates/prometheus-postgres-exporter/deployment.yaml
- equal: - equal:
path: spec.template.spec.terminationGracePeriodSeconds path: spec.template.spec.terminationGracePeriodSeconds
value: 60 value: 60
template: templates/prometheus-postgres-exporter/deployment.yaml
- notExists: - notExists:
path: spec.template.spec.tolerations path: spec.template.spec.tolerations
template: templates/prometheus-postgres-exporter/deployment.yaml
- notExists: - notExists:
path: spec.template.spec.topologySpreadConstraints path: spec.template.spec.topologySpreadConstraints
template: templates/prometheus-postgres-exporter/deployment.yaml
- equal:
path: spec.strategy
value:
type: "RollingUpdate"
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
template: templates/prometheus-postgres-exporter/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/prometheus-postgres-exporter/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/prometheus-postgres-exporter/deployment.yaml
- it: Test additional arguments - it: Test additional arguments
set: 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: deployment.postgresExporter.args:
- "--foo=bar" - "--foo=bar"
- "--bar=foo" - "--bar=foo"
@ -105,26 +224,42 @@ tests:
- --web.listen-address=:9187 - --web.listen-address=:9187
- --foo=bar - --foo=bar
- --bar=foo - --bar=foo
template: templates/prometheus-postgres-exporter/deployment.yaml
- it: Test custom imageRegistry and imageRepository - it: Test custom imageRegistry and imageRepository
set: 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.registry: registry.example.local
deployment.postgresExporter.image.repository: path/special/prometheus-postgres-exporter deployment.postgresExporter.image.repository: path/special/prometheus-postgres-exporter
asserts: asserts:
- equal: - equal:
path: spec.template.spec.containers[0].image path: spec.template.spec.containers[0].image
value: registry.example.local/path/special/prometheus-postgres-exporter:v0.1.0 value: registry.example.local/path/special/prometheus-postgres-exporter:v0.1.0
template: templates/prometheus-postgres-exporter/deployment.yaml
- it: Test custom imagePullPolicy - it: Test custom imagePullPolicy
set: 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 deployment.postgresExporter.image.pullPolicy: Always
asserts: asserts:
- equal: - equal:
path: spec.template.spec.containers[0].imagePullPolicy path: spec.template.spec.containers[0].imagePullPolicy
value: Always value: Always
template: templates/prometheus-postgres-exporter/deployment.yaml
- it: Test config.database.existingSecret - it: Test config.database.existingSecret
set: set:
# Normal test values
config.database.existingSecret.enabled: true config.database.existingSecret.enabled: true
config.database.existingSecret.secretName: custom-database-secret config.database.existingSecret.secretName: custom-database-secret
asserts: asserts:
@ -133,9 +268,16 @@ tests:
content: content:
secretRef: secretRef:
name: custom-database-secret name: custom-database-secret
template: templates/prometheus-postgres-exporter/deployment.yaml
- it: Test config.exporterConfig.existingSecret - it: Test config.exporterConfig.existingSecret
set: 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.enabled: true
config.exporterConfig.existingSecret.secretName: exporter-config-secret config.exporterConfig.existingSecret.secretName: exporter-config-secret
asserts: asserts:
@ -144,6 +286,7 @@ tests:
value: value:
- mountPath: /etc/prometheus-postgres-exporter/config.d - mountPath: /etc/prometheus-postgres-exporter/config.d
name: config-d name: config-d
template: templates/prometheus-postgres-exporter/deployment.yaml
- equal: - equal:
path: spec.template.spec.volumes path: spec.template.spec.volumes
value: value:
@ -155,9 +298,16 @@ tests:
name: exporter-config-secret name: exporter-config-secret
- secret: - secret:
name: prometheus-postgres-exporter-unittest-web-config name: prometheus-postgres-exporter-unittest-web-config
template: templates/prometheus-postgres-exporter/deployment.yaml
- it: Test config.webConfig.existingSecret - it: Test config.webConfig.existingSecret
set: 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.enabled: true
config.webConfig.existingSecret.secretName: web-config-secret config.webConfig.existingSecret.secretName: web-config-secret
asserts: asserts:
@ -166,6 +316,7 @@ tests:
value: value:
- mountPath: /etc/prometheus-postgres-exporter/config.d - mountPath: /etc/prometheus-postgres-exporter/config.d
name: config-d name: config-d
template: templates/prometheus-postgres-exporter/deployment.yaml
- equal: - equal:
path: spec.template.spec.volumes path: spec.template.spec.volumes
value: value:
@ -177,9 +328,16 @@ tests:
name: prometheus-postgres-exporter-unittest-exporter-config name: prometheus-postgres-exporter-unittest-exporter-config
- secret: - secret:
name: web-config-secret name: web-config-secret
template: templates/prometheus-postgres-exporter/deployment.yaml
- it: Test custom resource limits and requests - it: Test custom resource limits and requests
set: 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: deployment.postgresExporter.resources:
limits: limits:
cpu: 100m cpu: 100m
@ -188,6 +346,15 @@ tests:
cpu: 25m cpu: 25m
memory: 100MB memory: 100MB
asserts: asserts:
- equal:
path: spec.template.spec.containers[0].env
value:
- name: GOMAXPROCS
valueFrom:
resourceFieldRef:
divisor: "1"
resource: limits.cpu
template: templates/prometheus-postgres-exporter/deployment.yaml
- equal: - equal:
path: spec.template.spec.containers[0].resources path: spec.template.spec.containers[0].resources
value: value:
@ -197,9 +364,16 @@ tests:
requests: requests:
cpu: 25m cpu: 25m
memory: 100MB memory: 100MB
template: templates/prometheus-postgres-exporter/deployment.yaml
- it: Test custom securityContext - it: Test custom securityContext
set: 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: deployment.postgresExporter.securityContext:
capabilities: capabilities:
add: add:
@ -223,9 +397,16 @@ tests:
readOnlyRootFilesystem: true readOnlyRootFilesystem: true
runAsNonRoot: true runAsNonRoot: true
runAsUser: 1000 runAsUser: 1000
template: templates/prometheus-postgres-exporter/deployment.yaml
- it: Test dnsConfig - it: Test dnsConfig
set: 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: deployment.dnsConfig:
nameservers: nameservers:
- "8.8.8.8" - "8.8.8.8"
@ -237,17 +418,31 @@ tests:
nameservers: nameservers:
- "8.8.8.8" - "8.8.8.8"
- "8.8.4.4" - "8.8.4.4"
template: templates/prometheus-postgres-exporter/deployment.yaml
- it: Test dnsPolicy - it: Test dnsPolicy
set: 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 deployment.dnsPolicy: ClusterFirst
asserts: asserts:
- equal: - equal:
path: spec.template.spec.dnsPolicy path: spec.template.spec.dnsPolicy
value: ClusterFirst value: ClusterFirst
template: templates/prometheus-postgres-exporter/deployment.yaml
- it: Test hostNetwork, hostname, subdomain - it: Test hostNetwork, hostname, subdomain
set: 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.hostNetwork: true
deployment.hostname: pg-exporter deployment.hostname: pg-exporter
deployment.subdomain: exporters.internal deployment.subdomain: exporters.internal
@ -255,15 +450,24 @@ tests:
- equal: - equal:
path: spec.template.spec.hostNetwork path: spec.template.spec.hostNetwork
value: true value: true
template: templates/prometheus-postgres-exporter/deployment.yaml
- equal: - equal:
path: spec.template.spec.hostname path: spec.template.spec.hostname
value: pg-exporter value: pg-exporter
template: templates/prometheus-postgres-exporter/deployment.yaml
- equal: - equal:
path: spec.template.spec.subdomain path: spec.template.spec.subdomain
value: exporters.internal value: exporters.internal
template: templates/prometheus-postgres-exporter/deployment.yaml
- it: Test imagePullSecrets - it: Test imagePullSecrets
set: 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: deployment.imagePullSecrets:
- name: my-pull-secret - name: my-pull-secret
- name: my-special-secret - name: my-special-secret
@ -273,9 +477,16 @@ tests:
value: value:
- name: my-pull-secret - name: my-pull-secret
- name: my-special-secret - name: my-special-secret
template: templates/prometheus-postgres-exporter/deployment.yaml
- it: Test nodeSelector - it: Test nodeSelector
set: 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: deployment.nodeSelector:
foo: bar foo: bar
asserts: asserts:
@ -283,33 +494,61 @@ tests:
path: spec.template.spec.nodeSelector path: spec.template.spec.nodeSelector
value: value:
foo: bar foo: bar
template: templates/prometheus-postgres-exporter/deployment.yaml
- it: Test priorityClassName - it: Test priorityClassName
set: 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 deployment.priorityClassName: my-priority
asserts: asserts:
- equal: - equal:
path: spec.template.spec.priorityClassName path: spec.template.spec.priorityClassName
value: my-priority value: my-priority
template: templates/prometheus-postgres-exporter/deployment.yaml
- it: Test restartPolicy - it: Test restartPolicy
set: 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 deployment.restartPolicy: Always
asserts: asserts:
- equal: - equal:
path: spec.template.spec.restartPolicy path: spec.template.spec.restartPolicy
value: Always value: Always
template: templates/prometheus-postgres-exporter/deployment.yaml
- it: Test terminationGracePeriodSeconds - it: Test terminationGracePeriodSeconds
set: 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 deployment.terminationGracePeriodSeconds: 120
asserts: asserts:
- equal: - equal:
path: spec.template.spec.terminationGracePeriodSeconds path: spec.template.spec.terminationGracePeriodSeconds
value: 120 value: 120
template: templates/prometheus-postgres-exporter/deployment.yaml
- it: Test tolerations - it: Test tolerations
set: 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: deployment.tolerations:
- key: database/type - key: database/type
operator: Equal operator: Equal
@ -323,9 +562,16 @@ tests:
operator: Equal operator: Equal
value: postgres value: postgres
effect: NoSchedule effect: NoSchedule
template: templates/prometheus-postgres-exporter/deployment.yaml
- it: Test topologySpreadConstraints - it: Test topologySpreadConstraints
set: 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: deployment.topologySpreadConstraints:
- topologyKey: kubernetes.io/hostname - topologyKey: kubernetes.io/hostname
whenUnsatisfiable: DoNotSchedule whenUnsatisfiable: DoNotSchedule
@ -341,9 +587,16 @@ tests:
labelSelector: labelSelector:
matchLabels: matchLabels:
app.kubernetes.io/instance: prometheus-postgres-exporter app.kubernetes.io/instance: prometheus-postgres-exporter
template: templates/prometheus-postgres-exporter/deployment.yaml
- it: Test additional volumeMounts and volumes - it: Test additional volumeMounts and volumes
set: 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: deployment.postgresExporter.volumeMounts:
- name: data - name: data
mountPath: /usr/lib/prometheus-postgres-exporter/data mountPath: /usr/lib/prometheus-postgres-exporter/data
@ -359,6 +612,7 @@ tests:
mountPath: /usr/lib/prometheus-postgres-exporter/data mountPath: /usr/lib/prometheus-postgres-exporter/data
- name: config-d - name: config-d
mountPath: /etc/prometheus-postgres-exporter/config.d mountPath: /etc/prometheus-postgres-exporter/config.d
template: templates/prometheus-postgres-exporter/deployment.yaml
- equal: - equal:
path: spec.template.spec.volumes path: spec.template.spec.volumes
value: value:
@ -373,3 +627,4 @@ tests:
name: prometheus-postgres-exporter-unittest-exporter-config name: prometheus-postgres-exporter-unittest-exporter-config
- secret: - secret:
name: prometheus-postgres-exporter-unittest-web-config name: prometheus-postgres-exporter-unittest-web-config
template: templates/prometheus-postgres-exporter/deployment.yaml

View File

@ -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/prometheus-postgres-exporter/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

View File

@ -259,7 +259,7 @@
"priorityClassName": { "priorityClassName": {
"type": "string" "type": "string"
}, },
"replicaCount": { "replicas": {
"type": "integer" "type": "integer"
}, },
"restartPolicy": { "restartPolicy": {
@ -326,7 +326,7 @@
"postgresExporter", "postgresExporter",
"nodeSelector", "nodeSelector",
"priorityClassName", "priorityClassName",
"replicaCount", "replicas",
"restartPolicy", "restartPolicy",
"securityContext", "securityContext",
"strategy", "strategy",

View File

@ -1,6 +1,3 @@
# Default values for qu-seed.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates. # Declare variables to be passed into your templates.
## @section Global ## @section Global
## @param nameOverride Individual release name suffix. ## @param nameOverride Individual release name suffix.
@ -38,7 +35,7 @@ config:
## @param config.exporterConfig.secret.annotations Additional annotations of the secret containing the `exporterConfig.yaml`. ## @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.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://github.com/prometheus-community/postgres_exporter?tab=readme-ov-file#multi-target-support-beta). ## @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. ## @skip config.exporterConfig.secret.exporterConfig Skip individual postgres exporter configuration.
secret: secret:
annotations: {} annotations: {}
@ -62,7 +59,7 @@ config:
## @param config.webConfig.secret.annotations Additional annotations of the secret containing the `webConfig.yaml`. ## @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.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. ## @skip config.webConfig.secret.webConfig Skip individual web configuration.
secret: secret:
annotations: {} annotations: {}
@ -84,7 +81,7 @@ config:
## @section Deployment ## @section Deployment
deployment: deployment:
## @param deployment.annotations Additional deployment annotations. ## @param deployment.annotations Additional deployment annotations.
## @param deployment.labels Additional ingress labels. ## @param deployment.labels Additional deployment labels.
annotations: {} annotations: {}
labels: {} labels: {}
@ -96,6 +93,22 @@ deployment:
## @param deployment.affinity Affinity for the postgres-exporter deployment. ## @param deployment.affinity Affinity for the postgres-exporter deployment.
affinity: {} 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. ## @param deployment.initContainers List of additional init containers.
initContainers: [] initContainers: []
@ -201,8 +214,8 @@ deployment:
## @param deployment.priorityClassName PriorityClassName of the postgres-exporter deployment. ## @param deployment.priorityClassName PriorityClassName of the postgres-exporter deployment.
priorityClassName: "" priorityClassName: ""
## @param deployment.replicaCount Number of replicas for the postgres-exporter deployment. ## @param deployment.replicas Number of replicas for the postgres-exporter deployment.
replicaCount: 1 replicas: 1
## @param deployment.restartPolicy Restart policy of the postgres-exporter deployment. ## @param deployment.restartPolicy Restart policy of the postgres-exporter deployment.
restartPolicy: "" restartPolicy: ""
@ -211,11 +224,11 @@ deployment:
securityContext: {} securityContext: {}
# fsGroup: 2000 # 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.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. ## @param deployment.strategy.rollingUpdate.maxUnavailable The maximum number of pods that can be unavailable during a rolling update.
strategy: strategy:
type: "Recreate" type: "RollingUpdate"
rollingUpdate: rollingUpdate:
maxSurge: 1 maxSurge: 1
maxUnavailable: 1 maxUnavailable: 1
@ -248,12 +261,12 @@ deployment:
# secretName: my-secret # secretName: my-secret
## @section Grafana ## @section Grafana
## @param grafana.enabled Enable integration into Grafana. Require the prometheus operator deployment. ## @param grafana.enabled Enable integration into Grafana. Require the Prometheus operator deployment.
grafana: grafana:
enabled: false enabled: false
## @param grafana.dashboardDiscoveryLabels Labels that Grafana uses to discover resources. The labels may vary depending on the Grafana deployment. ## @param grafana.dashboardDiscoveryLabels Labels that Grafana uses to discover resources. The labels may vary depending on the Grafana deployment.
## @skip grafana.dashboardDiscoveryLabels ## @skip grafana.dashboardDiscoveryLabels Skip individual configuration.
dashboardDiscoveryLabels: dashboardDiscoveryLabels:
grafana_dashboard: "1" grafana_dashboard: "1"
@ -298,9 +311,77 @@ podDisruptionBudget: {}
# maxUnavailable: 1 # maxUnavailable: 1
# minAvailable: 1 # minAvailable: 1
## @section Network ## @section NetworkPolicies
## @param networkPolicies Deploy network policies based on the used container network interface (CNI) implementation - like calico or weave. ## @param networkPolicies.enabled Enable network policies in general.
networkPolicies: {} 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 ## @section Prometheus
prometheus: prometheus:
@ -315,7 +396,7 @@ prometheus:
## @param prometheus.metrics.podMonitor.honorLabels Honor labels. ## @param prometheus.metrics.podMonitor.honorLabels Honor labels.
## @param prometheus.metrics.podMonitor.labels Additional podMonitor 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.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.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.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`. ## @param prometheus.metrics.podMonitor.scheme HTTP scheme to use for scraping. For example `http` or `https`.
@ -342,7 +423,7 @@ prometheus:
## @param prometheus.metrics.serviceMonitor.followRedirects FollowRedirects configures whether scrape requests follow HTTP 3xx redirects. ## @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.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.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.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.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`. ## @param prometheus.metrics.serviceMonitor.scheme HTTP scheme to use for scraping. For example `http` or `https`.
@ -362,8 +443,8 @@ prometheus:
scheme: "http" scheme: "http"
tlsConfig: {} tlsConfig: {}
## @param prometheus.rules Array of prometheus rules for monitoring the application and triggering alerts. ## @param prometheus.rules Array of Prometheus rules for monitoring the application and triggering alerts.
## @skip prometheus.rules Skip individual prometheus rules. ## @skip prometheus.rules Skip individual Prometheus rules.
rules: [] rules: []
# - alert: ExporterErrors # - alert: ExporterErrors
# expr: pg_exporter_last_scrape_error == 1 # expr: pg_exporter_last_scrape_error == 1