25 Commits

Author SHA1 Message Date
55b355f769 chore(deps): lock file maintenance
All checks were successful
Helm / helm-lint (push) Successful in 20s
Helm / helm-unittest (push) Successful in 42s
Helm / helm-lint (pull_request) Successful in 18s
Helm / helm-unittest (pull_request) Successful in 21s
2025-02-09 04:41:48 +00: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
12 changed files with 1081 additions and 254 deletions

View File

@ -5,6 +5,8 @@ on:
paths: [ "README.md", "values.yaml" ]
types: [ "opened", "reopened", "synchronize" ]
push:
branches:
- '**'
paths: [ "README.md", "values.yaml" ]
tags-ignore:
- '**'
@ -13,14 +15,14 @@ on:
jobs:
generate-parameters:
container:
image: docker.io/library/node:22.9.0-alpine
image: docker.io/library/node:23.7.0-alpine
runs-on:
- ubuntu-latest
steps:
- name: Install tooling
run: |
apk update
apk add git
apk add git npm
- uses: actions/checkout@v4.2.2
- name: Generate parameter section in README
run: |

View File

@ -4,6 +4,8 @@ on:
pull_request:
types: [ "opened", "reopened", "synchronize" ]
push:
branches:
- '**'
tags-ignore:
- '**'
workflow_dispatch: {}
@ -11,7 +13,7 @@ on:
jobs:
helm-lint:
container:
image: docker.io/volkerraschek/helm:3.16.1
image: docker.io/volkerraschek/helm:3.16.4
runs-on:
- ubuntu-latest
steps:
@ -26,7 +28,7 @@ jobs:
helm-unittest:
container:
image: docker.io/volkerraschek/helm:3.16.1
image: docker.io/volkerraschek/helm:3.16.4
runs-on:
- ubuntu-latest
steps:

View File

@ -5,6 +5,8 @@ on:
paths: [ "**/*.md" ]
types: [ "opened", "reopened", "synchronize" ]
push:
branches:
- '**'
paths: [ "**/*.md" ]
tags-ignore:
- '**'
@ -13,14 +15,14 @@ on:
jobs:
markdown-link-checker:
container:
image: docker.io/library/node:22.9.0-alpine
image: docker.io/library/node:23.7.0-alpine
runs-on:
- ubuntu-latest
steps:
- name: Install tooling
run: |
apk update
apk add git
apk add git npm
- uses: actions/checkout@v4.2.2
- name: Verify links in markdown files
run: |
@ -29,7 +31,7 @@ jobs:
markdown-lint:
container:
image: docker.io/library/node:22.9.0-alpine
image: docker.io/library/node:23.7.0-alpine
runs-on:
- ubuntu-latest
steps:

View File

@ -8,7 +8,7 @@ on:
jobs:
publish-chart:
container:
image: docker.io/volkerraschek/helm:3.16.1
image: docker.io/volkerraschek/helm:3.16.4
runs-on: ubuntu-latest
steps:
- name: Install tooling
@ -21,7 +21,7 @@ jobs:
HELM_REPO_NAME: upload
CHARTMUSEUM_PASSWORD: ${{ secrets.CHARTMUSEUM_PASSWORD }}
CHARTMUSEUM_REPOSITORY: ${{ vars.CHARMUSEUM_REPOSITORY }}
CHARTMUSEUM_REPOSITORY: ${{ vars.CHARTMUSEUM_REPOSITORY }}
CHARTMUSEUM_USERNAME: ${{ secrets.CHARTMUSEUM_USERNAME }}
CHARTMUSEUM_HOSTNAME: ${{ vars.CHARTMUSEUM_HOSTNAME }}

View File

@ -20,7 +20,7 @@ helm chart is tested for deployment scenarios with **ArgoCD**.
## Helm: configuration and installation
1. A helm chart repository must be configured, to pull the helm charts from.
2. All available parameters are [here](#parameters) in detail document. The parameters can be defined via the helm
2. All available parameters are [here](#parameters) in detail documented. The parameters can be defined via the helm
`--set` flag or directly as part of a `values.yaml` file. The following example defines the `prometheus-exporter`
repository and use the `--set` flag for a basic deployment.
@ -46,7 +46,7 @@ version of the chart must be in sync with the `values.yaml`. Newer *minor* versi
versions can break something!
```bash
CHART_VERSION=0.1.0
CHART_VERSION=0.3.2
helm show values prometheus-exporters/prometheus-postgres-exporter --version "${CHART_VERSION}" > values.yaml
```
@ -63,6 +63,35 @@ 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.
#### 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 `100m`. 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 [here](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.
```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=100m'
```
#### TLS authentication and encryption
The first example shows how to deploy the metric exporter with TLS encryption. The verification of the custom TLS
@ -219,7 +248,7 @@ deployment:
| `deployment.replicas` | Number of replicas for the postgres-exporter deployment. | `1` |
| `deployment.restartPolicy` | Restart policy of the postgres-exporter deployment. | `""` |
| `deployment.securityContext` | Security context of the postgres-exporter deployment. | `{}` |
| `deployment.strategy.type` | Strategy type - `Recreate` or `Rollingupdate`. | `Recreate` |
| `deployment.strategy.type` | Strategy type - `Recreate` or `Rollingupdate`. | `Rollingupdate` |
| `deployment.strategy.rollingUpdate.maxSurge` | The maximum number of pods that can be scheduled above the desired number of pods during a rolling update. | `1` |
| `deployment.strategy.rollingUpdate.maxUnavailable` | The maximum number of pods that can be unavailable during a rolling update. | `1` |
| `deployment.terminationGracePeriodSeconds` | How long to wait until forcefully kill the pod. | `60` |

1188
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -16,6 +16,6 @@
"devDependencies": {
"@bitnami/readme-generator-for-helm": "^2.5.0",
"markdown-link-check": "^3.13.6",
"markdownlint-cli": "^0.43.0"
"markdownlint-cli": "^0.44.0"
}
}

View File

@ -3,7 +3,6 @@
"assignees": [ "volker.raschek" ],
"customManagers": [
{
"description": "Update container image reference",
"fileMatch": [
"^Chart\\.yaml$"
],
@ -16,33 +15,53 @@
"versioningTemplate": "semver"
},
{
"description": "Detect helm chart version in README",
"fileMatch": [
"^README\\.md$"
],
"fileMatch": ["^README\\.md$"],
"matchStrings": [
"^CHART_VERSION=(?<currentValue>.*)$"
"VERSION=(?<currentValue>.*)"
],
"datasourceTemplate": "git-tags",
"depNameTemplate": "volker.raschek/prometheus-postgres-exporter",
"packageNameTemplate": "git.cryptic.systems/volker.raschek/prometheus-postgres-exporter",
"packageNameTemplate": "https://git.cryptic.systems/volker.raschek/prometheus-postgres-exporter",
"datasourceTemplate": "git-tags",
"versioningTemplate": "semver"
}
],
"labels": [ "renovate" ],
"lockFileMaintenance": {
"enabled": true
},
"packageRules": [
{
"addLabels": [ "renovate/automerge", "renovate/droneci" ],
"automerge": true,
"matchManagers": "droneci",
"matchUpdateTypes": [ "minor", "patch"]
},
{
"addLabels": [ "renovate/automerge", "renovate/npm" ],
"automerge": true,
"matchPackageNames": [ "markdownlint-cli", "@bitnami/readme-generator-for-helm" ],
"matchManagers": [ "npm" ],
"matchUpdateTypes": [ "minor", "patch"]
},
{
"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"
]
}
],
"rebaseLabel": "renovate/rebase",

View File

@ -9,6 +9,17 @@
{{- end }}
{{- end }}
{{/* env */}}
{{- define "prometheus-postgres-exporter.deployment.env" -}}
{{- $env := dict "env" (.Values.deployment.postgresExporter.env | default (list) ) }}
{{- if and (hasKey .Values.deployment.postgresExporter.resources "limits") (hasKey .Values.deployment.postgresExporter.resources.limits "cpu") }}
{{- $env = merge $env (dict "env" (list (dict "name" "GOMAXPROCS" "valueFrom" (dict "resourceFieldRef" (dict "divisor" "1" "resource" "limits.cpu"))))) }}
{{- end }}
{{ toYaml $env }}
{{- end -}}
{{/* envFrom */}}
{{- define "prometheus-postgres-exporter.deployment.envFrom" -}}

View File

@ -34,9 +34,10 @@ spec:
{{- range .Values.deployment.postgresExporter.args }}
- {{ . | quote }}
{{- end }}
{{- with .Values.deployment.postgresExporter.env }}
{{- $env := (include "prometheus-postgres-exporter.deployment.env" . | fromYaml) }}
{{- if and (hasKey $env "env") (gt (len $env.env) 0) }}
env:
{{- toYaml . | nindent 8 }}
{{- toYaml $env.env | nindent 8 }}
{{- end }}
{{- $envFrom := (include "prometheus-postgres-exporter.deployment.envFrom" . | fromYaml) }}
{{- if hasKey $envFrom "envFrom" }}
@ -125,3 +126,7 @@ spec:
volumes:
{{- toYaml $volumes.volumes | nindent 6 }}
{{- end }}
{{- with .Values.deployment.strategy }}
strategy:
{{- toYaml . | nindent 4 }}
{{- end }}

View File

@ -95,6 +95,13 @@ tests:
path: spec.template.spec.tolerations
- notExists:
path: spec.template.spec.topologySpreadConstraints
- equal:
path: spec.strategy
value:
type: "Rollingupdate"
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
- it: Test custom replicas
set:
@ -227,6 +234,14 @@ tests:
cpu: 25m
memory: 100MB
asserts:
- equal:
path: spec.template.spec.containers[0].env
value:
- name: GOMAXPROCS
valueFrom:
resourceFieldRef:
divisor: "1"
resource: limits.cpu
- equal:
path: spec.template.spec.containers[0].resources
value:

View File

@ -228,7 +228,7 @@ deployment:
## @param deployment.strategy.rollingUpdate.maxSurge The maximum number of pods that can be scheduled above the desired number of pods during a rolling update.
## @param deployment.strategy.rollingUpdate.maxUnavailable The maximum number of pods that can be unavailable during a rolling update.
strategy:
type: "Recreate"
type: "Rollingupdate"
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
@ -266,7 +266,7 @@ grafana:
enabled: false
## @param grafana.dashboardDiscoveryLabels Labels that Grafana uses to discover resources. The labels may vary depending on the Grafana deployment.
## @skip grafana.dashboardDiscoveryLabels
## @skip grafana.dashboardDiscoveryLabels Skip individual configuration.
dashboardDiscoveryLabels:
grafana_dashboard: "1"