You've already forked prometheus-postgres-exporter
Compare commits
2 Commits
master
...
86e05cfd5c
| Author | SHA1 | Date | |
|---|---|---|---|
|
86e05cfd5c
|
|||
|
52e696a76f
|
@@ -15,14 +15,15 @@ on:
|
|||||||
jobs:
|
jobs:
|
||||||
generate-parameters:
|
generate-parameters:
|
||||||
container:
|
container:
|
||||||
image: docker.io/library/node:25.2.1-alpine
|
image: docker.io/library/node:24.7.0-alpine
|
||||||
runs-on: ubuntu-latest
|
runs-on:
|
||||||
|
- ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Install tooling
|
- name: Install tooling
|
||||||
run: |
|
run: |
|
||||||
apk update
|
apk update
|
||||||
apk add git npm
|
apk add git npm
|
||||||
- uses: actions/checkout@v6.0.1
|
- uses: actions/checkout@v5.0.0
|
||||||
- name: Generate parameter section in README
|
- name: Generate parameter section in README
|
||||||
run: |
|
run: |
|
||||||
npm install
|
npm install
|
||||||
|
|||||||
@@ -12,26 +12,31 @@ on:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
helm-lint:
|
helm-lint:
|
||||||
runs-on: ubuntu-latest
|
container:
|
||||||
|
image: docker.io/volkerraschek/helm:3.19.0
|
||||||
|
runs-on:
|
||||||
|
- ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v6.0.1
|
- name: Install tooling
|
||||||
- uses: azure/setup-helm@v4.3.1
|
run: |
|
||||||
with:
|
apk update
|
||||||
version: v4.0.1 # renovate: datasource=github-releases depName=helm/helm
|
apk add git npm
|
||||||
|
- uses: actions/checkout@v5.0.0
|
||||||
- name: Lint helm files
|
- name: Lint helm files
|
||||||
run: |
|
run: |
|
||||||
helm lint --values values.yaml .
|
helm lint --values values.yaml .
|
||||||
|
|
||||||
helm-unittest:
|
helm-unittest:
|
||||||
runs-on: ubuntu-latest
|
container:
|
||||||
|
image: docker.io/volkerraschek/helm:3.19.0
|
||||||
|
runs-on:
|
||||||
|
- ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v6.0.1
|
- name: Install tooling
|
||||||
- uses: azure/setup-helm@v4.3.1
|
run: |
|
||||||
with:
|
apk update
|
||||||
version: v4.0.1 # renovate: datasource=github-releases depName=helm/helm
|
apk add git npm
|
||||||
- env:
|
- uses: actions/checkout@v5.0.0
|
||||||
HELM_UNITTEST_VERSION: v1.0.0 #renovate: datasource=github-releases depName=helm-unittest/helm-unittest
|
- name: Unittest
|
||||||
name: Install helm-unittest
|
run: |
|
||||||
run: helm plugin install --verify=false --version "${HELM_UNITTEST_VERSION}" https://github.com/helm-unittest/helm-unittest
|
helm unittest --strict --file 'unittests/**/*.yaml' ./
|
||||||
- name: Execute helm unittests
|
|
||||||
run: helm unittest --strict --file 'unittests/**/*.yaml' .
|
|
||||||
@@ -15,14 +15,15 @@ on:
|
|||||||
jobs:
|
jobs:
|
||||||
markdown-link-checker:
|
markdown-link-checker:
|
||||||
container:
|
container:
|
||||||
image: docker.io/library/node:25.2.1-alpine
|
image: docker.io/library/node:24.7.0-alpine
|
||||||
runs-on: ubuntu-latest
|
runs-on:
|
||||||
|
- ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Install tooling
|
- name: Install tooling
|
||||||
run: |
|
run: |
|
||||||
apk update
|
apk update
|
||||||
apk add git npm
|
apk add git npm
|
||||||
- uses: actions/checkout@v6.0.1
|
- uses: actions/checkout@v5.0.0
|
||||||
- name: Verify links in markdown files
|
- name: Verify links in markdown files
|
||||||
run: |
|
run: |
|
||||||
npm install
|
npm install
|
||||||
@@ -30,14 +31,15 @@ jobs:
|
|||||||
|
|
||||||
markdown-lint:
|
markdown-lint:
|
||||||
container:
|
container:
|
||||||
image: docker.io/library/node:25.2.1-alpine
|
image: docker.io/library/node:24.7.0-alpine
|
||||||
runs-on: ubuntu-latest
|
runs-on:
|
||||||
|
- ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Install tooling
|
- name: Install tooling
|
||||||
run: |
|
run: |
|
||||||
apk update
|
apk update
|
||||||
apk add git
|
apk add git
|
||||||
- uses: actions/checkout@v6.0.1
|
- uses: actions/checkout@v5.0.0
|
||||||
- name: Lint markdown files
|
- name: Lint markdown files
|
||||||
run: |
|
run: |
|
||||||
npm install
|
npm install
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ on:
|
|||||||
jobs:
|
jobs:
|
||||||
publish-chart:
|
publish-chart:
|
||||||
container:
|
container:
|
||||||
image: docker.io/volkerraschek/helm:3.19.2
|
image: docker.io/volkerraschek/helm:3.19.0
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Install packages via apk
|
- name: Install packages via apk
|
||||||
@@ -16,7 +16,7 @@ jobs:
|
|||||||
apk update
|
apk update
|
||||||
apk add git npm jq yq
|
apk add git npm jq yq
|
||||||
|
|
||||||
- uses: actions/checkout@v6.0.1
|
- uses: actions/checkout@v5.0.0
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
||||||
|
|||||||
8
.vscode/settings.json
vendored
8
.vscode/settings.json
vendored
@@ -1,8 +0,0 @@
|
|||||||
{
|
|
||||||
"yaml.schemas": {
|
|
||||||
"https://raw.githubusercontent.com/helm-unittest/helm-unittest/v1.0.3/schema/helm-testsuite.json": [
|
|
||||||
"/unittests/**/*.yaml"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"yaml.schemaStore.enable": true
|
|
||||||
}
|
|
||||||
4
Makefile
4
Makefile
@@ -4,13 +4,13 @@ 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.19.0 # renovate: datasource=docker registryUrl=https://docker.io depName=docker.io/volkerraschek/helm
|
HELM_IMAGE_VERSION?=3.19.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}
|
||||||
|
|
||||||
# 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?=25.2.1-alpine # renovate: datasource=docker registryUrl=https://docker.io depName=docker.io/library/node packageName=library/node
|
NODE_IMAGE_VERSION?=24.7.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
|
||||||
|
|||||||
65
README.md
65
README.md
@@ -16,10 +16,7 @@ Chapter [configuration and installation](#helm-configuration-and-installation) d
|
|||||||
and use it to deploy the exporter. It also contains further configuration examples.
|
and use it to deploy the exporter. It also contains further configuration examples.
|
||||||
|
|
||||||
Furthermore, this helm chart contains unit tests to detect regressions and stabilize the deployment. Additionally, this
|
Furthermore, this helm chart contains unit tests to detect regressions and stabilize the deployment. Additionally, this
|
||||||
helm chart is tested for deployment scenarios with **ArgoCD**, but please keep in mind, that this chart supports the
|
helm chart is tested for deployment scenarios with **ArgoCD**.
|
||||||
*[Automatically Roll Deployment](https://helm.sh/docs/howto/charts_tips_and_tricks/#automatically-roll-deployments)*
|
|
||||||
concept of Helm, which can trigger unexpected rolling releases. Further configuration instructions are described in a
|
|
||||||
separate [chapter](#argocd).
|
|
||||||
|
|
||||||
## Helm: configuration and installation
|
## Helm: configuration and installation
|
||||||
|
|
||||||
@@ -36,7 +33,7 @@ separate [chapter](#argocd).
|
|||||||
```bash
|
```bash
|
||||||
helm repo add prometheus-exporters https://charts.cryptic.systems/prometheus-exporters
|
helm repo add prometheus-exporters https://charts.cryptic.systems/prometheus-exporters
|
||||||
helm repo update
|
helm repo update
|
||||||
CHART_VERSION=0.5.5
|
CHART_VERSION=0.5.4
|
||||||
helm install --version "${CHART_VERSION}" prometheus-postgres-exporter prometheus-exporters/prometheus-postgres-exporter \
|
helm install --version "${CHART_VERSION}" prometheus-postgres-exporter prometheus-exporters/prometheus-postgres-exporter \
|
||||||
--set 'config.database.secret.databaseUsername=postgres' \
|
--set 'config.database.secret.databaseUsername=postgres' \
|
||||||
--set 'config.database.secret.databasePassword=postgres' \
|
--set 'config.database.secret.databasePassword=postgres' \
|
||||||
@@ -51,7 +48,7 @@ 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
|
||||||
CHART_VERSION=0.5.5
|
CHART_VERSION=0.5.4
|
||||||
helm show values --version "${CHART_VERSION}" prometheus-exporters/prometheus-postgres-exporter > values.yaml
|
helm show values --version "${CHART_VERSION}" prometheus-exporters/prometheus-postgres-exporter > values.yaml
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -89,7 +86,7 @@ Further information about this topic can be found in one of Kanishk's blog
|
|||||||
> Please take care the a CPU limit < `1000m` can also lead to CPU throttling. Please read the linked documentation carefully.
|
> Please take care the a CPU limit < `1000m` can also lead to CPU throttling. Please read the linked documentation carefully.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
CHART_VERSION=0.5.5
|
CHART_VERSION=0.5.4
|
||||||
helm install --version "${CHART_VERSION}" prometheus-postgres-exporter prometheus-exporters/prometheus-postgres-exporter \
|
helm install --version "${CHART_VERSION}" prometheus-postgres-exporter prometheus-exporters/prometheus-postgres-exporter \
|
||||||
--set 'config.database.secret.databaseUsername=postgres' \
|
--set 'config.database.secret.databaseUsername=postgres' \
|
||||||
--set 'config.database.secret.databasePassword=postgres' \
|
--set 'config.database.secret.databasePassword=postgres' \
|
||||||
@@ -103,7 +100,7 @@ helm install --version "${CHART_VERSION}" prometheus-postgres-exporter prometheu
|
|||||||
|
|
||||||
#### TLS authentication and encryption
|
#### TLS authentication and encryption
|
||||||
|
|
||||||
The 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.
|
||||||
|
|
||||||
> [!WARNING]
|
> [!WARNING]
|
||||||
@@ -111,7 +108,7 @@ certification will be skipped by Prometheus.
|
|||||||
> `tls.key` and `tls.crt` of the secret can be mounted into the container filesystem for TLS authentication / encryption.
|
> `tls.key` and `tls.crt` of the secret can be mounted into the container filesystem for TLS authentication / encryption.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
CHART_VERSION=0.5.5
|
CHART_VERSION=0.5.4
|
||||||
helm install --version "${CHART_VERSION}" prometheus-postgres-exporter prometheus-exporters/prometheus-postgres-exporter \
|
helm install --version "${CHART_VERSION}" prometheus-postgres-exporter prometheus-exporters/prometheus-postgres-exporter \
|
||||||
--set 'config.database.secret.databaseUsername=postgres' \
|
--set 'config.database.secret.databaseUsername=postgres' \
|
||||||
--set 'config.database.secret.databasePassword=postgres' \
|
--set 'config.database.secret.databasePassword=postgres' \
|
||||||
@@ -135,7 +132,7 @@ certificate for the metrics exporter - TLS certificate verification can be enabl
|
|||||||
replaced:
|
replaced:
|
||||||
|
|
||||||
```diff
|
```diff
|
||||||
CHART_VERSION=0.5.5
|
CHART_VERSION=0.5.4
|
||||||
helm install --version "${CHART_VERSION}" prometheus-postgres-exporter prometheus-exporters/prometheus-postgres-exporter \
|
helm install --version "${CHART_VERSION}" prometheus-postgres-exporter prometheus-exporters/prometheus-postgres-exporter \
|
||||||
--set 'config.database.secret.databaseUsername=postgres' \
|
--set 'config.database.secret.databaseUsername=postgres' \
|
||||||
--set 'config.database.secret.databasePassword=postgres' \
|
--set 'config.database.secret.databasePassword=postgres' \
|
||||||
@@ -166,13 +163,18 @@ TLS certificates before expiring.
|
|||||||
|
|
||||||
Until the exporter does not support rotating TLS certificate a workaround can be applied. For example stakater's
|
Until the exporter does not support rotating TLS certificate a workaround can be applied. For example stakater's
|
||||||
[reloader](https://github.com/stakater/Reloader) controller can be used to trigger a rolling update. The following
|
[reloader](https://github.com/stakater/Reloader) controller can be used to trigger a rolling update. The following
|
||||||
annotation must be added to instruct the reloader controller to trigger a rolling update, when the mounted secret has
|
annotation must be added to instruct the reloader controller to trigger a rolling update, when the mounted configMaps
|
||||||
been changed.
|
and secrets have been changed.
|
||||||
|
|
||||||
> [!IMPORTANT]
|
```yaml
|
||||||
> The Helm chart already adds annotations to trigger a rolling release. Helm describes this approach under
|
deployment:
|
||||||
> [Automatically Roll Deployments](https://helm.sh/docs/howto/charts_tips_and_tricks/#automatically-roll-deployments).
|
annotations:
|
||||||
> For this reason, **only external** configMaps or secrets need to be monitored by reloader.
|
reloader.stakater.com/auto: "true"
|
||||||
|
```
|
||||||
|
|
||||||
|
Instead of triggering a rolling update for configMap and secret resources, this action can also be defined for
|
||||||
|
individual items. For example, when the secret named `prometheus-postgresql-exporter-http` is mounted and the reloader
|
||||||
|
controller should only listen for changes of this secret:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
deployment:
|
deployment:
|
||||||
@@ -189,7 +191,7 @@ the Grafana container file system so that it is subsequently available to the us
|
|||||||
makes this possible.
|
makes this possible.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
CHART_VERSION=0.5.5
|
CHART_VERSION=0.5.4
|
||||||
helm install --version "${CHART_VERSION}" prometheus-postgres-exporter prometheus-exporters/prometheus-postgres-exporter \
|
helm install --version "${CHART_VERSION}" prometheus-postgres-exporter prometheus-exporters/prometheus-postgres-exporter \
|
||||||
--set 'config.database.secret.databaseUsername=postgres' \
|
--set 'config.database.secret.databaseUsername=postgres' \
|
||||||
--set 'config.database.secret.databasePassword=postgres' \
|
--set 'config.database.secret.databasePassword=postgres' \
|
||||||
@@ -291,35 +293,6 @@ networkPolicies:
|
|||||||
protocol: TCP
|
protocol: TCP
|
||||||
```
|
```
|
||||||
|
|
||||||
## ArgoCD
|
|
||||||
|
|
||||||
### Daily execution of rolling updates
|
|
||||||
|
|
||||||
The behavior whereby ArgoCD triggers a rolling update even though nothing appears to have changed often occurs in
|
|
||||||
connection with the helm concept `checksum/secret`, `checksum/configmap` or more generally, [Automatically Roll
|
|
||||||
Deployments](https://helm.sh/docs/howto/charts_tips_and_tricks/#automatically-roll-deployments).
|
|
||||||
|
|
||||||
The problem with combining this concept with ArgoCD is that ArgoCD re-renders the Helm chart every time. Even if the
|
|
||||||
content of the config map or secret has not changed, there may be minimal differences (e.g., whitespace, chart version,
|
|
||||||
Helm render order, different timestamps).
|
|
||||||
|
|
||||||
This changes the SHA256 hash, Argo sees a drift and trigger a rolling update of the deployment. Among other things, this
|
|
||||||
can lead to unnecessary notifications from ArgoCD.
|
|
||||||
|
|
||||||
To avoid this, the annotation with the shasum must be ignored. Below is a diff that adds the `Application` to ignore all
|
|
||||||
annotations with the prefix `checksum`.
|
|
||||||
|
|
||||||
```diff
|
|
||||||
apiVersion: argoproj.io/v1alpha1
|
|
||||||
kind: Application
|
|
||||||
spec:
|
|
||||||
+ ignoreDifferences:
|
|
||||||
+ - group: apps/v1
|
|
||||||
+ kind: Deployment
|
|
||||||
+ jqPathExpressions:
|
|
||||||
+ - '.spec.template.metadata.annotations | with_entries(select(.key | startswith("checksum")))'
|
|
||||||
```
|
|
||||||
|
|
||||||
## Parameters
|
## Parameters
|
||||||
|
|
||||||
### Global
|
### Global
|
||||||
|
|||||||
753
package-lock.json
generated
753
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -16,6 +16,6 @@
|
|||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@bitnami/readme-generator-for-helm": "^2.5.0",
|
"@bitnami/readme-generator-for-helm": "^2.5.0",
|
||||||
"markdown-link-check": "^3.13.6",
|
"markdown-link-check": "^3.13.6",
|
||||||
"markdownlint-cli": "^0.46.0"
|
"markdownlint-cli": "^0.45.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,42 +31,11 @@
|
|||||||
"packageNameTemplate": "https://git.cryptic.systems/volker.raschek/prometheus-postgres-exporter",
|
"packageNameTemplate": "https://git.cryptic.systems/volker.raschek/prometheus-postgres-exporter",
|
||||||
"datasourceTemplate": "git-tags",
|
"datasourceTemplate": "git-tags",
|
||||||
"versioningTemplate": "semver"
|
"versioningTemplate": "semver"
|
||||||
},
|
|
||||||
{
|
|
||||||
"customType": "regex",
|
|
||||||
"datasourceTemplate": "github-releases",
|
|
||||||
"fileMatch": [
|
|
||||||
".vscode/settings\\.json$"
|
|
||||||
],
|
|
||||||
"matchStrings": [
|
|
||||||
"https:\\/\\/raw\\.githubusercontent\\.com\\/(?<depName>[^\\s]+?)\\/(?<currentValue>v[0-9.]+?)\\/schema\\/helm-testsuite\\.json"
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"packageRules": [
|
"packageRules": [
|
||||||
{
|
{
|
||||||
"groupName": "Update docker.io/volkerraschek/helm",
|
"groupname": "Update Node.JS",
|
||||||
"matchDepNames": [
|
|
||||||
"docker.io/volkerraschek/helm",
|
|
||||||
"volkerraschek/helm"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"automerge": true,
|
|
||||||
"groupName": "Update helm plugin 'unittest'",
|
|
||||||
"matchDepNames": [
|
|
||||||
"helm-unittest/helm-unittest"
|
|
||||||
],
|
|
||||||
"matchDatasources": [
|
|
||||||
"github-releases"
|
|
||||||
],
|
|
||||||
"matchUpdateTypes": [
|
|
||||||
"minor",
|
|
||||||
"patch"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"groupName": "Update docker.io/library/node",
|
|
||||||
"matchDepNames": [
|
"matchDepNames": [
|
||||||
"docker.io/library/node",
|
"docker.io/library/node",
|
||||||
"library/node"
|
"library/node"
|
||||||
|
|||||||
Reference in New Issue
Block a user