36 Commits

Author SHA1 Message Date
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
1e9aeb802d feat(grafana): support dashboard deployment
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2024-12-02 13:10:15 +01:00
2e9eae9888 feat(values.schema): init
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2024-11-27 18:46:35 +01:00
0dcea5cfc4 core(Makefile): remove deploy to chart server
All checks were successful
continuous-integration/drone/push Build is passing
2024-11-27 18:35:52 +01:00
e38c4fbdfe doc(CONTRIBUTING): init 2024-11-27 18:35:37 +01:00
0a4d677938 fix(helmignore): extend ignore list
All checks were successful
continuous-integration/drone/push Build is passing
2024-11-27 18:03:06 +01:00
171d9a695e chore(deps): update dependency markdownlint-cli to ^0.43.0
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-11-27 11:26:12 +00:00
853c65a8ef Merge pull request 'chore(deps): update docker.io/library/node docker tag to v23' (#7) from renovate/docker.io-library-node-23.x into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #7
2024-11-27 10:02:29 +00:00
c93c4dd4eb chore(deps): update docker.io/library/node docker tag to v23
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-11-26 23:25:34 +00:00
4105bb9e0f doc(README): add badge of artifacthub.com
All checks were successful
continuous-integration/drone/push Build is passing
2024-11-26 22:44:58 +01:00
20 changed files with 5463 additions and 359 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:22.11.0-alpine
resources:
limits:
cpu: 150
memory: 150M
- name: detect diff
commands:
- git diff --exit-code --name-only README.md
image: git.cryptic.systems/volker.raschek/git:1.4.0
- name: email-notification
environment:
SMTP_FROM_ADDRESS:
from_secret: smtp_from_address
SMTP_FROM_NAME:
from_secret: smtp_from_name
SMTP_HOST:
from_secret: smtp_host
SMTP_USERNAME:
from_secret: smtp_username
SMTP_PASSWORD:
from_secret: smtp_password
image: git.cryptic.systems/volker.raschek/drone-email:0.1.5
resources:
limits:
cpu: 150
memory: 150M
when:
status:
- changed
- failure
trigger:
event:
exclude:
- tag
---
kind: pipeline
type: kubernetes
name: Release
clone:
disable: true
platform:
os: linux
steps:
- name: clone repository
image: git.cryptic.systems/volker.raschek/git:1.4.0
- name: release-helm-chart
commands:
- helm repo add prometheus-exporters https://charts.cryptic.systems/prometheus-exporters
- helm package --version ${DRONE_TAG} .
- helm cm-push ${DRONE_REPO_NAME}-${DRONE_TAG}.tgz prometheus-exporters
environment:
HELM_REPO_PASSWORD:
from_secret: helm_repo_password
HELM_REPO_USERNAME:
from_secret: helm_repo_username
image: git.cryptic.systems/volker.raschek/helm:3.16.1
resources:
limits:
cpu: 150
memory: 150M
trigger:
event:
- tag
repo:
- volker.raschek/prometheus-postgres-exporter

View File

@ -0,0 +1,30 @@
name: Generate README
on:
pull_request:
paths: [ "README.md", "values.yaml" ]
types: [ "opened", "reopened", "synchronize" ]
push:
paths: [ "README.md", "values.yaml" ]
tags-ignore:
- '**'
workflow_dispatch: {}
jobs:
generate-parameters:
container:
image: docker.io/library/node:22.9.0-alpine
runs-on:
- ubuntu-latest
steps:
- name: Install tooling
run: |
apk update
apk add git
- 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,40 @@
name: Helm
on:
pull_request:
types: [ "opened", "reopened", "synchronize" ]
push:
tags-ignore:
- '**'
workflow_dispatch: {}
jobs:
helm-lint:
container:
image: docker.io/volkerraschek/helm:3.16.1
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.16.1
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,44 @@
name: Markdown linter
on:
pull_request:
paths: [ "**/*.md" ]
types: [ "opened", "reopened", "synchronize" ]
push:
paths: [ "**/*.md" ]
tags-ignore:
- '**'
workflow_dispatch: {}
jobs:
markdown-link-checker:
container:
image: docker.io/library/node:22.9.0-alpine
runs-on:
- ubuntu-latest
steps:
- name: Install tooling
run: |
apk update
apk add git
- 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:22.9.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.16.1
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.CHARMUSEUM_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

@ -26,7 +26,7 @@
.vscode/
# drone
.drone.ya?ml
.drone.yml
# editorconfig
.editorconfig
@ -37,13 +37,24 @@ values2.yaml
# helm packages
*.tgz
.helmignore
unittests
# markdownlint
.markdownlint.yml
.markdownlint.yaml
.markdownlintignore
# maven
target
# npm
.prettierignore
.npmrc
package*
# serviceDescriptor (uctl-cluster)
serviceDescriptor.yaml
# yamllint
.yamllint.yaml
# Others
CONTRIBUTING.md
CODEOWNERS
Makefile
renovate.json

View File

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

View File

@ -1 +1,82 @@
# Contribution Guidelines
# Contributing
I am very happy if you would like to provide a pull request 👍
The content of this file describes which requirements contributors should fulfill before submitting a pull request (PR).
1. [Valid Git commits](#valid-git-commits)
## Valid Git commits
### Commit message
The repository is subject to a strict commit message template. This states that there are several types of commits. For
example, `fix`, `chore`, `refac`, `test` or `doc`. All types are described in more detail below.
| type | description |
| ------------------- | ----------------------------------------------------------------- |
| `feat` | New feature. |
| `fix` | Fixes a bug. |
| `refac` | Refactoring production code. |
| `style` | Fixes formatting issues. No production code change. |
| `docs` | Adapt documentation. No production code change. |
| `test` | Adds new or modifies existing tests. No production code change. |
| `chore` | Updating grunt tasks. Is everything which the user does not see. |
Based on these types, commit messaged can then be created. Here are a few examples:
```text
style(README): Wrong indentation
feat(deployment): support restartPolicy
fix(my-app): Add missing volume
docs(CONTRIBUTING): Describe how to commit correctly
```
This type of commit message makes it easier for me as maintainer to keep an overview and does not cause the commits of a
pull request PR to be combined into one commit (squashing).
### Smart commits
Smart commits are excellent when it comes to tracking bugs or issues. In this repository, however, the rebasing of
commits is prohibited, which means that only merge commits are possible. This means that a smart commit message only
needs to be added to the merge commit.
This has the advantage that the maintainer can use the smart commit to find the merge commit and undo the entire history
of a merge without having to select individual commits. The following history illustrates the correct use of smart commits.
```text
* 823edbc7 Volker Raschek (G) | [Close #2] feat(deployment): support additional containers
|\
| * 321aebc3 Volker Raschek (G) | doc(README): generate README with new deployment attributes
| * 8d101dd3 Volker Raschek (G) | test(deployment): Extend unittest of additional containers
| * 6f2abd93 Volker Raschek (G) | fix(deployment): Extend deployment of additional containers
|/
* aa5ebda bob (N) | [Close #1] feat(deployment): support initContainers
```
### Commit signing
Another problem with Git is the chain of trust. Git allows the configuration of any name and e-mail address. An attacker
can impersonate any person and submit pull requests under a false identity. For as Linux Torvalds, the maintainer of the
Linux kernel.
```bash
git config --global user.name 'Linux Torvalds'
git config --global user.email 'torvalds@linux-foundation.org'
```
To avoid this, some Git repositories expect signed commits. In particular, repositories that are subject to direct
delivery to customers. For this reason, the repository is subject to a branch protection rule that only allows signed
commits. *Until* there is *no verified* and *no signed* commit, the pull request is blocked.
The following articles describes how Git can be configured to sign commits. Please keep in mind, that the e-mail
address, which is used as UID of the GPG keyring must also be defined in the profile settings of your GitHub account.
Otherwise will be marked the Git commit as *Unverified*.
1. [Signing Commits](https://docs.github.com/en/authentication/managing-commit-signature-verification/signing-commits)
2. [Tell Git about your signing key](https://docs.github.com/en/authentication/managing-commit-signature-verification/telling-git-about-your-signing-key)
Inspect your Git commit via `git log`. There should be mentioned, that your commit is signed.
Furthermore, the GPG key is unique. **Don't loose your private GPG key**. Backup your private key on a safe device. For
example an external USB drive.

View File

@ -3,43 +3,49 @@ CONTAINER_RUNTIME?=$(shell which podman)
# HELM_IMAGE
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_FULLY_QUALIFIED=${HELM_IMAGE_REGISTRY_HOST}/${HELM_IMAGE_REPOSITORY}:${HELM_IMAGE_VERSION}
# MARKDOWNLINKCHECKER_IMAGE
MARKDOWNLINKCHECK_IMAGE_REGISTRY_HOST?=ghcr.io
MARKDOWNLINKCHECK_IMAGE_REPOSITORY=tcort/markdown-link-check
MARKDOWNLINKCHECK_IMAGE_VERSION?=3.12.2 # renovate: datasource=docker registryUrl=https://ghcr.io depName=tcort/markdown-link-check
MARKDOWNLINKCHECK_IMAGE_FULLY_QUALIFIED=${MARKDOWNLINT_IMAGE_REGISTRY_HOST}/${MARKDOWNLINT_IMAGE_REPOSITORY}:${MARKDOWNLINT_IMAGE_VERSION}
# NODE_IMAGE
NODE_IMAGE_REGISTRY_HOST?=docker.io
NODE_IMAGE_REPOSITORY=library/node
NODE_IMAGE_REPOSITORY?=library/node
NODE_IMAGE_VERSION?=22.9.0-alpine # renovate: datasource=docker registryUrl=https://docker.io depName=library/node
NODE_IMAGE_FULLY_QUALIFIED=${NODE_IMAGE_REGISTRY_HOST}/${NODE_IMAGE_REPOSITORY}:${NODE_IMAGE_VERSION}
# CHART_SERVER
CHART_SERVER_HOST?=charts.u.orbis-healthcare.com
CHART_SERVER_NAMESPACE?=orbis-u
CHART_SERVER_REPOSITORY?=qu-seed
CHART_VERSION?=0.1.0
# MISSING DOT
# ==============================================================================
missing-dot:
grep --perl-regexp '## @(param|skip).*[^.]$$' values.yaml
# CONTAINER RUN - PREPARE ENVIRONMENT
# CONTAINER RUN - README
# ==============================================================================
PHONY+=container-run/readme
container-run/readme:
container-run/readme: container-run/readme/link container-run/readme/lint container-run/readme/parameters
container-run/readme/link:
${CONTAINER_RUNTIME} run \
--rm \
--volume $(shell pwd):$(shell pwd) \
--workdir $(shell pwd) \
${NODE_IMAGE_FULLY_QUALIFIED} \
npm install && npm run readme:parameters && npm run readme:lint
npm install && npm run readme:link
container-run/readme/lint:
${CONTAINER_RUNTIME} run \
--rm \
--volume $(shell pwd):$(shell pwd) \
--workdir $(shell pwd) \
${NODE_IMAGE_FULLY_QUALIFIED} \
npm install && npm run readme:lint
container-run/readme/parameters:
${CONTAINER_RUNTIME} run \
--rm \
--volume $(shell pwd):$(shell pwd) \
--workdir $(shell pwd) \
${NODE_IMAGE_FULLY_QUALIFIED} \
npm install && npm run readme:parameters
# CONTAINER RUN - HELM UNITTESTS
# ==============================================================================
@ -67,19 +73,6 @@ container-run/helm-update-dependencies:
${HELM_IMAGE_FULLY_QUALIFIED} \
dependency update
# CONTAINER RUN - DEPLOY2CHART-REPO
# ==============================================================================
container-run/deploy2chart-repo:
${CONTAINER_RUNTIME} run \
--env HELM_REPO_PASSWORD=${CHART_SERVER_PASSWORD} \
--env HELM_REPO_USERNAME=${CHART_SERVER_USERNAME} \
--entrypoint /bin/bash \
--rm \
--volume $(shell pwd):$(shell pwd) \
--workdir $(shell pwd) \
${HELM_IMAGE_FULLY_QUALIFIED} \
-c "helm repo add ${CHART_SERVER_NAMESPACE} http://${CHART_SERVER_HOST}/${CHART_SERVER_NAMESPACE} && helm package --version ${CHART_VERSION} . && helm cm-push ./${CHART_SERVER_REPOSITORY}-${CHART_VERSION}.tgz ${CHART_SERVER_NAMESPACE}"
# CONTAINER RUN - MARKDOWN-LINT
# ==============================================================================
PHONY+=container-run/helm-lint
@ -91,16 +84,6 @@ container-run/helm-lint:
${HELM_IMAGE_FULLY_QUALIFIED} \
lint --values values.yaml .
# CONTAINER RUN - MARKDOWN-LINK-CHECK
# ==============================================================================
PHONY+=container-run/markdown-link-check
container-run/markdown-link-check:
${CONTAINER_RUNTIME} run \
--rm \
--volume $(shell pwd):/work \
${MARKDOWNLINKCHECK_IMAGE_FULLY_QUALIFIED} \
*.md
# PHONY
# ==============================================================================
# Declare the contents of the PHONY variable as phony. We keep that information

View File

@ -1,6 +1,7 @@
# 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)
> [!NOTE]
> This is not the official *community* helm chart of the Prometheus metric exporter for PostgreSQL databases. You can
@ -45,7 +46,8 @@ version of the chart must be in sync with the `values.yaml`. Newer *minor* versi
versions can break something!
```bash
helm show values prometheus-exporters/prometheus-postgres-exporter --version 0.1.0 > values.yaml
CHART_VERSION=0.1.0
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:
@ -61,7 +63,7 @@ for customizations. These can be configured in more detail via `values.yaml`.
The following examples serve as individual configurations and as inspiration for how deployment problems can be solved.
### TLS authentication and encryption
#### TLS authentication and encryption
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.
@ -115,6 +117,47 @@ replaced:
+ --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
```
## Parameters
### Global
@ -151,7 +194,7 @@ replaced:
| Name | Description | Value |
| -------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | --------------------------------------- |
| `deployment.annotations` | Additional deployment annotations. | `{}` |
| `deployment.labels` | Additional ingress labels. | `{}` |
| `deployment.labels` | Additional deployment labels. | `{}` |
| `deployment.additionalContainers` | List of additional containers. | `[]` |
| `deployment.affinity` | Affinity for the postgres-exporter deployment. | `{}` |
| `deployment.initContainers` | List of additional init containers. | `[]` |
@ -173,7 +216,7 @@ replaced:
| `deployment.postgresExporter.volumeMounts` | Additional volume mounts. | `[]` |
| `deployment.nodeSelector` | NodeSelector of the postgres-exporter deployment. | `{}` |
| `deployment.priorityClassName` | PriorityClassName of the postgres-exporter deployment. | `""` |
| `deployment.replicaCount` | Number of replicas for the postgres-exporter deployment. | `1` |
| `deployment.replicas` | Number of replicas for the postgres-exporter deployment. | `1` |
| `deployment.restartPolicy` | Restart policy of the postgres-exporter deployment. | `""` |
| `deployment.securityContext` | Security context of the postgres-exporter deployment. | `{}` |
| `deployment.strategy.type` | Strategy type - `Recreate` or `Rollingupdate`. | `Recreate` |
@ -182,14 +225,17 @@ replaced:
| `deployment.terminationGracePeriodSeconds` | How long to wait until forcefully kill the pod. | `60` |
| `deployment.tolerations` | Tolerations of the postgres-exporter deployment. | `[]` |
| `deployment.topologySpreadConstraints` | TopologySpreadConstraints of the postgres-exporter deployment. | `[]` |
| `deployment.volumes` | Additional volumes to mount into the pods of the Prometheus-exporter deployment. | `[]` |
| `deployment.volumes` | Additional volumes to mount into the pods of the prometheus-exporter deployment. | `[]` |
### Grafana
| Name | Description | Value |
| ------------------------------------ | --------------------------------------------------------- | ------- |
| `grafana.enabled` | Enable integration into Grafana. | `false` |
| `grafana.dashboards.businessMetrics` | Enable deployment of Grafana dashboard `businessMetrics`. | `true` |
| Name | Description | Value |
| ------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | ----------- |
| `grafana.enabled` | Enable integration into Grafana. Require the Prometheus operator deployment. | `false` |
| `grafana.dashboardDiscoveryLabels` | Labels that Grafana uses to discover resources. The labels may vary depending on the Grafana deployment. | `undefined` |
| `grafana.dashboards.postgresExporter.enabled` | Enable deployment of Grafana dashboard `postgresExporter`. | `true` |
| `grafana.dashboards.postgresExporter.annotations` | Additional configmap annotations. | `{}` |
| `grafana.dashboards.postgresExporter.labels` | Additional configmap labels. | `{}` |
### Ingress

1111
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

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

View File

@ -11,20 +11,34 @@
"appVersion: \"(?<currentValue>.*?)\"\\s+"
],
"datasourceTemplate": "docker",
"depNameTemplate": "prometheus-postgres-exporter",
"lookupNameTemplate": "quay.io/prometheuscommunity/postgres-exporter"
"depNameTemplate": "prometheuscommunity/postgres-exporter",
"lookupNameTemplate": "quay.io/prometheuscommunity/postgres-exporter",
"versioningTemplate": "semver"
},
{
"description": "Detect helm chart version in README",
"fileMatch": [
"^README\\.md$"
],
"matchStrings": [
"^CHART_VERSION=(?<currentValue>.*)$"
],
"datasourceTemplate": "git-tags",
"depNameTemplate": "volker.raschek/prometheus-postgres-exporter",
"packageNameTemplate": "git.cryptic.systems/volker.raschek/prometheus-postgres-exporter",
"versioningTemplate": "semver"
}
],
"labels": [ "renovate" ],
"packageRules": [
{
"addLabels": [ "renovate/droneci", "renovate/automerge" ],
"addLabels": [ "renovate/automerge", "renovate/droneci" ],
"automerge": true,
"matchManagers": "droneci",
"matchUpdateTypes": [ "minor", "patch"]
},
{
"addLabels": [ "renovate/markdownlint", "renovate/automerge" ],
"addLabels": [ "renovate/automerge", "renovate/npm" ],
"automerge": true,
"matchPackageNames": [ "markdownlint-cli", "@bitnami/readme-generator-for-helm" ],
"matchManagers": [ "npm" ],

View File

@ -0,0 +1,20 @@
{{/* vim: set filetype=mustache: */}}
{{/* annotations */}}
{{- define "prometheus-postgres-exporter.configMap.grafanaDashboards.postgresExporter.annotations" -}}
{{ include "prometheus-postgres-exporter.annotations" . }}
{{- if .Values.grafana.dashboards.postgresExporter.annotations }}
{{ toYaml .Values.grafana.dashboards.postgresExporter.annotations }}
{{- end }}
{{- end }}
{{/* labels */}}
{{- define "prometheus-postgres-exporter.configMap.grafanaDashboards.postgresExporter.labels" -}}
{{ include "prometheus-postgres-exporter.labels" . }}
{{- if .Values.grafana.dashboards.postgresExporter.labels }}
{{ toYaml .Values.grafana.dashboards.postgresExporter.labels }}
{{- end }}
{{ toYaml .Values.grafana.dashboardDiscoveryLabels }}
{{- end }}

View File

@ -12,6 +12,7 @@ metadata:
name: {{ include "prometheus-postgres-exporter.fullname" . }}
namespace: {{ .Release.Namespace }}
spec:
replicas: {{ .Values.deployment.replicas }}
selector:
matchLabels:
{{- include "prometheus-postgres-exporter.pod.selectorLabels" . | nindent 6 }}
@ -20,6 +21,10 @@ spec:
labels:
{{- include "prometheus-postgres-exporter.pod.labels" . | nindent 8 }}
spec:
{{- with .Values.deployment.affinity }}
affinity:
{{- toYaml . | nindent 8 }}
{{- end }}
containers:
- name: postgres-exporter
args:

View File

@ -0,0 +1,79 @@
chart:
appVersion: 0.1.0
version: 0.1.0
suite: ConfigMap template (Grafana Dashboard PostgresExporter)
release:
name: prometheus-postgres-exporter-unittest
namespace: testing
templates:
- templates/prometheus-postgres-exporter/configMapGrafanaDashboardPostgresExporter.yaml
tests:
- it: Rendering postgresExporter
asserts:
- hasDocuments:
count: 0
- it: Rendering
set:
grafana.enabled: true
asserts:
- hasDocuments:
count: 1
- containsDocument:
apiVersion: v1
kind: ConfigMap
name: prometheus-postgres-exporter-unittest-grafana-dashboard-postgres-exporter
namespace: testing
- notExists:
path: metadata.annotations
- equal:
path: metadata.labels
value:
app.kubernetes.io/instance: prometheus-postgres-exporter-unittest
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: prometheus-postgres-exporter
app.kubernetes.io/version: 0.1.0
grafana_dashboard: "1"
helm.sh/chart: prometheus-postgres-exporter-0.1.0
- exists:
path: data["postgresExporter.json"]
- it: Test custom annotations and labels
set:
grafana.enabled: true
grafana.dashboards.postgresExporter.annotations:
foo: bar
grafana.dashboards.postgresExporter.labels:
bar: foo
asserts:
- equal:
path: metadata.annotations
value:
foo: bar
- equal:
path: metadata.labels
value:
app.kubernetes.io/instance: prometheus-postgres-exporter-unittest
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: prometheus-postgres-exporter
app.kubernetes.io/version: 0.1.0
grafana_dashboard: "1"
helm.sh/chart: prometheus-postgres-exporter-0.1.0
bar: foo
- it: Test custom grafana discovery labels
set:
grafana.enabled: true
grafana.dashboardDiscoveryLabels:
grafana_dashboard: null
my-custom-discovery-label: my-value
asserts:
- equal:
path: metadata.labels
value:
app.kubernetes.io/instance: prometheus-postgres-exporter-unittest
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: prometheus-postgres-exporter
app.kubernetes.io/version: 0.1.0
my-custom-discovery-label: my-value
helm.sh/chart: prometheus-postgres-exporter-0.1.0

View File

@ -27,6 +27,11 @@ tests:
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.replicas
value: 1
- notExists:
path: spec.template.spec.affinity
- contains:
path: spec.template.spec.containers[0].envFrom
content:
@ -91,6 +96,40 @@ tests:
- notExists:
path: spec.template.spec.topologySpreadConstraints
- it: Test custom replicas
set:
deployment.replicas: 3
asserts:
- equal:
path: spec.replicas
value: 3
- it: Test custom affinity
set:
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
- it: Test additional arguments
set:
deployment.postgresExporter.args:

700
values.schema.json Normal file
View File

@ -0,0 +1,700 @@
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"nameOverride": {
"type": "string"
},
"fullnameOverride": {
"type": "string"
},
"config": {
"type": "object",
"properties": {
"database": {
"type": "object",
"properties": {
"existingSecret": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean"
},
"secretName": {
"type": "string"
}
},
"required": [
"enabled",
"secretName"
]
},
"secret": {
"type": "object",
"properties": {
"annotations": {
"type": "object"
},
"labels": {
"type": "object"
},
"databaseUsername": {
"type": "string"
},
"databasePassword": {
"type": "string"
},
"databaseConnectionUrl": {
"type": "string"
}
},
"required": [
"annotations",
"labels",
"databaseUsername",
"databasePassword",
"databaseConnectionUrl"
]
}
},
"required": [
"existingSecret",
"secret"
]
},
"exporterConfig": {
"type": "object",
"properties": {
"existingSecret": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean"
},
"secretName": {
"type": "string"
}
},
"required": [
"enabled",
"secretName"
]
},
"secret": {
"type": "object",
"properties": {
"annotations": {
"type": "object"
},
"labels": {
"type": "object"
},
"exporterConfig": {
"type": "object"
}
},
"required": [
"annotations",
"labels",
"exporterConfig"
]
}
},
"required": [
"existingSecret",
"secret"
]
},
"webConfig": {
"type": "object",
"properties": {
"existingSecret": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean"
},
"secretName": {
"type": "string"
}
},
"required": [
"enabled",
"secretName"
]
},
"secret": {
"type": "object",
"properties": {
"annotations": {
"type": "object"
},
"labels": {
"type": "object"
},
"webConfig": {
"type": "object"
}
},
"required": [
"annotations",
"labels",
"webConfig"
]
}
},
"required": [
"existingSecret",
"secret"
]
}
},
"required": [
"database",
"exporterConfig",
"webConfig"
]
},
"deployment": {
"type": "object",
"properties": {
"annotations": {
"type": "object"
},
"labels": {
"type": "object"
},
"additionalContainers": {
"type": "array",
"items": {}
},
"affinity": {
"type": "object"
},
"initContainers": {
"type": "array",
"items": {}
},
"dnsConfig": {
"type": "object"
},
"dnsPolicy": {
"type": "string"
},
"hostname": {
"type": "string"
},
"subdomain": {
"type": "string"
},
"hostNetwork": {
"type": "boolean"
},
"imagePullSecrets": {
"type": "array",
"items": {}
},
"postgresExporter": {
"type": "object",
"properties": {
"args": {
"type": "array",
"items": {}
},
"env": {
"type": "array",
"items": {}
},
"envFrom": {
"type": "array",
"items": {}
},
"image": {
"type": "object",
"properties": {
"registry": {
"type": "string"
},
"repository": {
"type": "string"
},
"tag": {
"type": "string"
},
"pullPolicy": {
"type": "string"
}
},
"required": [
"registry",
"repository",
"tag",
"pullPolicy"
]
},
"resources": {
"type": "object"
},
"securityContext": {
"type": "object"
},
"volumeMounts": {
"type": "array",
"items": {}
}
},
"required": [
"args",
"env",
"envFrom",
"image",
"resources",
"securityContext",
"volumeMounts"
]
},
"nodeSelector": {
"type": "object"
},
"priorityClassName": {
"type": "string"
},
"replicas": {
"type": "integer"
},
"restartPolicy": {
"type": "string"
},
"securityContext": {
"type": "object"
},
"strategy": {
"type": "object",
"properties": {
"type": {
"type": "string"
},
"rollingUpdate": {
"type": "object",
"properties": {
"maxSurge": {
"type": "integer"
},
"maxUnavailable": {
"type": "integer"
}
},
"required": [
"maxSurge",
"maxUnavailable"
]
}
},
"required": [
"type",
"rollingUpdate"
]
},
"terminationGracePeriodSeconds": {
"type": "integer"
},
"tolerations": {
"type": "array",
"items": {}
},
"topologySpreadConstraints": {
"type": "array",
"items": {}
},
"volumes": {
"type": "array",
"items": {}
}
},
"required": [
"annotations",
"labels",
"additionalContainers",
"affinity",
"initContainers",
"dnsConfig",
"dnsPolicy",
"hostname",
"subdomain",
"hostNetwork",
"imagePullSecrets",
"postgresExporter",
"nodeSelector",
"priorityClassName",
"replicas",
"restartPolicy",
"securityContext",
"strategy",
"terminationGracePeriodSeconds",
"tolerations",
"topologySpreadConstraints",
"volumes"
]
},
"grafana": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean"
},
"dashboardDiscoveryLabels": {
"type": "object"
},
"dashboards": {
"type": "object",
"properties": {
"postgresExporter": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean"
},
"annotations": {
"type": "object"
},
"labels": {
"type": "object"
}
},
"required": [
"enabled",
"annotations",
"labels"
]
}
},
"required": [
"postgresExporter"
]
}
},
"required": [
"enabled",
"dashboardDiscoveryLabels",
"dashboards"
]
},
"ingress": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean"
},
"className": {
"type": "string"
},
"annotations": {
"type": "object"
},
"labels": {
"type": "object"
},
"hosts": {
"type": "array",
"items": {}
},
"tls": {
"type": "array",
"items": {}
}
},
"required": [
"enabled",
"className",
"annotations",
"labels",
"hosts",
"tls"
]
},
"podDisruptionBudget": {
"type": "object"
},
"networkPolicies": {
"type": "object"
},
"prometheus": {
"type": "object",
"properties": {
"metrics": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean"
},
"podMonitor": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean"
},
"annotations": {
"type": "object"
},
"enableHttp2": {
"type": "boolean"
},
"followRedirects": {
"type": "boolean"
},
"honorLabels": {
"type": "boolean"
},
"labels": {
"type": "object"
},
"interval": {
"type": "string"
},
"path": {
"type": "string"
},
"relabelings": {
"type": "array",
"items": {}
},
"scrapeTimeout": {
"type": "string"
},
"scheme": {
"type": "string"
},
"tlsConfig": {
"type": "object"
}
},
"required": [
"enabled",
"annotations",
"enableHttp2",
"followRedirects",
"honorLabels",
"labels",
"interval",
"path",
"relabelings",
"scrapeTimeout",
"scheme",
"tlsConfig"
]
},
"serviceMonitor": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean"
},
"annotations": {
"type": "object"
},
"labels": {
"type": "object"
},
"enableHttp2": {
"type": "boolean"
},
"followRedirects": {
"type": "boolean"
},
"honorLabels": {
"type": "boolean"
},
"interval": {
"type": "string"
},
"path": {
"type": "string"
},
"relabelings": {
"type": "array",
"items": {}
},
"scrapeTimeout": {
"type": "string"
},
"scheme": {
"type": "string"
},
"tlsConfig": {
"type": "object"
}
},
"required": [
"enabled",
"annotations",
"labels",
"enableHttp2",
"followRedirects",
"honorLabels",
"interval",
"path",
"relabelings",
"scrapeTimeout",
"scheme",
"tlsConfig"
]
}
},
"required": [
"enabled",
"podMonitor",
"serviceMonitor"
]
},
"rules": {
"type": "array",
"items": {}
}
},
"required": [
"metrics",
"rules"
]
},
"services": {
"type": "object",
"properties": {
"http": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean"
},
"annotations": {
"type": "object"
},
"externalIPs": {
"type": "array",
"items": {}
},
"externalTrafficPolicy": {
"type": "string"
},
"internalTrafficPolicy": {
"type": "string"
},
"ipFamilies": {
"type": "array",
"items": {}
},
"labels": {
"type": "object"
},
"loadBalancerClass": {
"type": "string"
},
"loadBalancerIP": {
"type": "string"
},
"loadBalancerSourceRanges": {
"type": "array",
"items": {}
},
"port": {
"type": "integer"
},
"sessionAffinity": {
"type": "string"
},
"sessionAffinityConfig": {
"type": "object"
},
"type": {
"type": "string"
}
},
"required": [
"enabled",
"annotations",
"externalIPs",
"externalTrafficPolicy",
"internalTrafficPolicy",
"ipFamilies",
"labels",
"loadBalancerClass",
"loadBalancerIP",
"loadBalancerSourceRanges",
"port",
"sessionAffinity",
"sessionAffinityConfig",
"type"
]
}
},
"required": [
"http"
]
},
"serviceAccount": {
"type": "object",
"properties": {
"existing": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean"
},
"serviceAccountName": {
"type": "string"
}
},
"required": [
"enabled",
"serviceAccountName"
]
},
"new": {
"type": "object",
"properties": {
"annotations": {
"type": "object"
},
"labels": {
"type": "object"
},
"automountServiceAccountToken": {
"type": "boolean"
},
"imagePullSecrets": {
"type": "array",
"items": {}
},
"secrets": {
"type": "array",
"items": {}
}
},
"required": [
"annotations",
"labels",
"automountServiceAccountToken",
"imagePullSecrets",
"secrets"
]
}
},
"required": [
"existing",
"new"
]
}
},
"required": [
"nameOverride",
"fullnameOverride",
"config",
"deployment",
"grafana",
"ingress",
"podDisruptionBudget",
"networkPolicies",
"prometheus",
"services",
"serviceAccount"
]
}

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.
## @section Global
## @param nameOverride Individual release name suffix.
@ -84,7 +81,7 @@ config:
## @section Deployment
deployment:
## @param deployment.annotations Additional deployment annotations.
## @param deployment.labels Additional ingress labels.
## @param deployment.labels Additional deployment labels.
annotations: {}
labels: {}
@ -96,6 +93,22 @@ deployment:
## @param deployment.affinity Affinity for the postgres-exporter deployment.
affinity: {}
# nodeAffinity:
# requiredDuringSchedulingIgnoredDuringExecution:
# nodeSelectorTerms:
# - matchExpressions:
# - key: kubernetes.io/os
# operator: In
# values:
# - linux
# preferredDuringSchedulingIgnoredDuringExecution:
# - weight: 20
# preference:
# matchExpressions:
# - key: kubernetes.io/arch
# operator: In
# values:
# - amd64
## @param deployment.initContainers List of additional init containers.
initContainers: []
@ -201,8 +214,8 @@ deployment:
## @param deployment.priorityClassName PriorityClassName of the postgres-exporter deployment.
priorityClassName: ""
## @param deployment.replicaCount Number of replicas for the postgres-exporter deployment.
replicaCount: 1
## @param deployment.replicas Number of replicas for the postgres-exporter deployment.
replicas: 1
## @param deployment.restartPolicy Restart policy of the postgres-exporter deployment.
restartPolicy: ""
@ -248,12 +261,23 @@ deployment:
# secretName: my-secret
## @section Grafana
## @param grafana.enabled Enable integration into Grafana.
## @param grafana.dashboards.businessMetrics Enable deployment of Grafana dashboard `businessMetrics`.
## @param grafana.enabled Enable integration into Grafana. Require the Prometheus operator deployment.
grafana:
enabled: false
## @param grafana.dashboardDiscoveryLabels Labels that Grafana uses to discover resources. The labels may vary depending on the Grafana deployment.
## @skip grafana.dashboardDiscoveryLabels
dashboardDiscoveryLabels:
grafana_dashboard: "1"
dashboards:
businessMetrics: true
## @param grafana.dashboards.postgresExporter.enabled Enable deployment of Grafana dashboard `postgresExporter`.
## @param grafana.dashboards.postgresExporter.annotations Additional configmap annotations.
## @param grafana.dashboards.postgresExporter.labels Additional configmap labels.
postgresExporter:
enabled: true
annotations: {}
labels: {}
## @section Ingress
ingress:
@ -304,7 +328,7 @@ prometheus:
## @param prometheus.metrics.podMonitor.honorLabels Honor labels.
## @param prometheus.metrics.podMonitor.labels Additional podMonitor labels.
## @param prometheus.metrics.podMonitor.interval Interval at which metrics should be scraped. If not specified Prometheus' global scrape interval is used.
## @param prometheus.metrics.podMonitor.path HTTP path for scraping prometheus metrics.
## @param prometheus.metrics.podMonitor.path HTTP path for scraping Prometheus metrics.
## @param prometheus.metrics.podMonitor.relabelings RelabelConfigs to apply to samples before scraping. Prometheus Operator automatically adds relabelings for a few standard Kubernetes fields.
## @param prometheus.metrics.podMonitor.scrapeTimeout Timeout after which the scrape is ended. If not specified, global Prometheus scrape timeout is used.
## @param prometheus.metrics.podMonitor.scheme HTTP scheme to use for scraping. For example `http` or `https`.
@ -331,7 +355,7 @@ prometheus:
## @param prometheus.metrics.serviceMonitor.followRedirects FollowRedirects configures whether scrape requests follow HTTP 3xx redirects.
## @param prometheus.metrics.serviceMonitor.honorLabels Honor labels.
## @param prometheus.metrics.serviceMonitor.interval Interval at which metrics should be scraped. If not specified Prometheus' global scrape interval is used.
## @param prometheus.metrics.serviceMonitor.path HTTP path for scraping prometheus metrics.
## @param prometheus.metrics.serviceMonitor.path HTTP path for scraping Prometheus metrics.
## @param prometheus.metrics.serviceMonitor.relabelings RelabelConfigs to apply to samples before scraping. Prometheus Operator automatically adds relabelings for a few standard Kubernetes fields.
## @param prometheus.metrics.serviceMonitor.scrapeTimeout Timeout after which the scrape is ended. If not specified, global Prometheus scrape timeout is used.
## @param prometheus.metrics.serviceMonitor.scheme HTTP scheme to use for scraping. For example `http` or `https`.
@ -351,8 +375,8 @@ prometheus:
scheme: "http"
tlsConfig: {}
## @param prometheus.rules Array of prometheus rules for monitoring the application and triggering alerts.
## @skip prometheus.rules Skip individual prometheus rules.
## @param prometheus.rules Array of Prometheus rules for monitoring the application and triggering alerts.
## @skip prometheus.rules Skip individual Prometheus rules.
rules: []
# - alert: ExporterErrors
# expr: pg_exporter_last_scrape_error == 1