40 Commits
0.1.0 ... 0.1.9

Author SHA1 Message Date
16cfa36fda fix(podMonitor,serviceMonitor): enable http2 by default
Some checks failed
continuous-integration/drone/push Build is failing
continuous-integration/drone/tag Build is passing
2024-11-26 21:49:49 +01:00
94fbc5e38f fix(deployment): concat lists correctly
Some checks failed
continuous-integration/drone/push Build is failing
continuous-integration/drone/tag Build is passing
2024-11-26 21:01:45 +01:00
dcc7bae921 fix(secret): adapt of the web config secret
Some checks failed
continuous-integration/drone/tag Build is passing
continuous-integration/drone/push Build is failing
2024-11-26 20:39:41 +01:00
503c622df5 fix(deployment): adapt projected volume spec 2024-11-26 20:35:32 +01:00
bf9bd4853f fix(deployment): use correct webconfig filename
Some checks failed
continuous-integration/drone/tag Build is passing
continuous-integration/drone/push Build is failing
2024-11-26 20:24:58 +01:00
80a8e8096d fix(pod,podMonitor,service): avoid error of immutable labels
Some checks failed
continuous-integration/drone/tag Build is passing
continuous-integration/drone/push Build is failing
2024-11-26 20:13:53 +01:00
79b61b0035 core(renovate): update configuration
Some checks failed
continuous-integration/drone/push Build is failing
2024-11-26 20:06:18 +01:00
d33b17b973 Merge pull request 'chore(deps): update prometheus-postgres-exporter docker tag to v0.16.0' (#5) from renovate/prometheus-postgres-exporter-0.x into master
Some checks failed
continuous-integration/drone/push Build is failing
Reviewed-on: #5
2024-11-26 19:01:45 +00:00
a0d241c90c doc(README): adapt bookmark
Some checks failed
continuous-integration/drone/push Build is failing
2024-11-26 20:00:46 +01:00
1d061fe95f fix(serviceMonitor): bind the port always to the port of the service
Some checks failed
continuous-integration/drone/tag Build is passing
continuous-integration/drone/push Build is failing
2024-11-26 19:59:11 +01:00
bb4a5d48b4 test(deployment): topologySpreadConstraints
All checks were successful
continuous-integration/drone/push Build is passing
2024-11-26 19:55:26 +01:00
1f6550d169 test(deployment): tolerations 2024-11-26 19:55:26 +01:00
a01c7d8c45 test(deployment): terminationGracePeriodSeconds 2024-11-26 19:55:26 +01:00
2dd99e8b13 fix(deployment): restartPolicy 2024-11-26 19:55:26 +01:00
4945cd1c2e test(deployment): imagePullSecrets 2024-11-26 19:55:26 +01:00
ed10c5362a test(deployment): hostNetwork, hostname, subdomain 2024-11-26 19:55:26 +01:00
70abc21fb4 test(deployment): dnsPolicy 2024-11-26 19:55:26 +01:00
8618b52ef6 test(deployment): dnsConfig 2024-11-26 19:55:26 +01:00
967d36cafb test(deployment): priorityClassName 2024-11-26 19:55:26 +01:00
8f36f688d0 test(deployment): nodeSelector 2024-11-26 19:55:26 +01:00
8d1f6622b8 doc(README): adapt key name of exporterConfig secret 2024-11-26 19:55:26 +01:00
bd04d4a349 fix(values): suppres warning of overwriting table with non-table 2024-11-26 19:55:26 +01:00
3105f2a408 test(deployment): securityContext 2024-11-26 19:55:26 +01:00
3a96e4ac5d test(deployment): resources 2024-11-26 19:55:26 +01:00
abd73d82f2 test(deployment,secrets): volume and volumeMounts 2024-11-26 19:55:26 +01:00
19b5ac5969 test(deployment,secrets): imageRegistry, imageRepository, imagePullPolicy 2024-11-26 19:55:26 +01:00
7b98e68b03 fix(deployment,secrets): deploy always the web-config secret 2024-11-26 19:55:26 +01:00
6c30756f8d fix(deployment): extend arguments 2024-11-26 19:55:26 +01:00
688718008f chore(deps): update prometheus-postgres-exporter docker tag to v0.16.0
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2024-11-26 05:27:13 +00:00
be0e152de8 chore(deps): update docker.io/library/node docker tag to v22.11.0
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-11-26 02:40:29 +00:00
4edf2660de chore(deps): update git.cryptic.systems/volker.raschek/git docker tag to v1.4.0
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-11-25 23:41:05 +00:00
c1a2a098c8 doc(README): adapt warning blockquote
All checks were successful
continuous-integration/drone/push Build is passing
2024-11-25 23:25:03 +01:00
085a68c60c revert(README): adapt warning blockquote
This reverts commit 98fe8fe2a4.
2024-11-25 23:24:04 +01:00
98fe8fe2a4 doc(README): adapt warning blockquote
Some checks failed
continuous-integration/drone/push Build is failing
2024-11-25 23:17:33 +01:00
7d02c5f7b3 doc(README): adapt warning blockquote
All checks were successful
continuous-integration/drone/push Build is passing
2024-11-25 23:14:39 +01:00
cbdf696a4e chore(deps): update git.cryptic.systems/volker.raschek/markdownlint docker tag to v0.42.0
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-11-25 20:26:07 +00:00
42af0f9739 fix(serviceAccount): remove top level dict .spec
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2024-11-25 19:35:46 +01:00
5c0f2fb310 core(chart): add further chart labels for search engine
All checks were successful
continuous-integration/drone/push Build is passing
2024-11-25 19:08:36 +01:00
c211bd7a61 fix: rename chart repository
Some checks failed
continuous-integration/drone/tag Build is passing
continuous-integration/drone/push Build is failing
2024-11-25 19:01:37 +01:00
6d2a3675b1 fix(ci): rename chart repository
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2024-11-25 18:48:31 +01:00
17 changed files with 436 additions and 105 deletions

View File

@ -12,7 +12,7 @@ platform:
steps:
- name: clone repository
image: git.cryptic.systems/volker.raschek/git:1.3.1
image: git.cryptic.systems/volker.raschek/git:1.4.0
- name: helm lint
commands:
@ -26,7 +26,7 @@ steps:
- name: markdown lint
commands:
- markdownlint *.md
image: git.cryptic.systems/volker.raschek/markdownlint:0.41.0
image: git.cryptic.systems/volker.raschek/markdownlint:0.42.0
resources:
limits:
cpu: 150
@ -73,7 +73,7 @@ platform:
steps:
- name: clone repository
image: git.cryptic.systems/volker.raschek/git:1.3.1
image: git.cryptic.systems/volker.raschek/git:1.4.0
- name: helm unittest
commands:
@ -125,14 +125,14 @@ platform:
steps:
- name: clone repository
image: git.cryptic.systems/volker.raschek/git:1.3.1
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.9.0-alpine
image: docker.io/library/node:22.11.0-alpine
resources:
limits:
cpu: 150
@ -141,7 +141,7 @@ steps:
- name: detect diff
commands:
- git diff --exit-code --name-only README.md
image: git.cryptic.systems/volker.raschek/git:1.3.1
image: git.cryptic.systems/volker.raschek/git:1.4.0
- name: email-notification
environment:
@ -183,13 +183,13 @@ platform:
steps:
- name: clone repository
image: git.cryptic.systems/volker.raschek/git:1.3.1
image: git.cryptic.systems/volker.raschek/git:1.4.0
- name: release-helm-chart
commands:
- helm repo add prometheus-exporter https://charts.cryptic.systems/prometheus-exporter
- 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-exporter
- helm cm-push ${DRONE_REPO_NAME}-${DRONE_TAG}.tgz prometheus-exporters
environment:
HELM_REPO_PASSWORD:
from_secret: helm_repo_password

View File

@ -4,14 +4,15 @@ description: Prometheus metric exporter for PostgreSQL
type: application
kubeVersion: ">=1.20.0"
version: "0.1.0"
appVersion: "0.15.0"
appVersion: "0.16.0"
# icon: https://annotations.example.com/icon.png
keywords:
- prometheus
- prometheus exporter
- postgres
- prometheus-exporter
- postgres-postgres-exporter
- postgres-exporter
sources:
- https://github.com/prometheus-community/postgres_exporter

View File

@ -12,7 +12,7 @@ and use it to deploy the exporter. It also contains further configuration exampl
Furthermore, this helm chart unit tests to detect regressions and stabilize the deployment. Additionally, this helm
chart is tested for deployment scenarios with ArgoCD.
> ![NOTE]
> [!NOTE]
> This is not the official *community* helm chart of the Prometheus metric exporter for PostgreSQL databases. You can
> find the official community chart [here](https://github.com/prometheus-community/helm-charts).
@ -29,9 +29,9 @@ chart is tested for deployment scenarios with ArgoCD.
> time is not possible.
```bash
helm repo add prometheus-exporter https://charts.cryptic.systems/prometheus-exporter
helm repo add prometheus-exporters https://charts.cryptic.systems/prometheus-exporters
helm repo update
helm install prometheus-exporter/prometheus-postgres-exporter prometheus-postgres-exporter \
helm install prometheus-exporters/prometheus-postgres-exporter 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"' \
@ -45,7 +45,7 @@ version of the chart must be in sync with the `values.yaml`. Newer *minor* versi
versions can break something!
```bash
helm show values prometheus-exporter/prometheus-postgres-exporter --version 0.1.0 > values.yaml
helm show values prometheus-exporters/prometheus-postgres-exporter --version 0.1.0 > values.yaml
```
A complete list of available helm chart versions can be displayed via the following command:
@ -66,12 +66,12 @@ The following examples serve as individual configurations and as inspiration for
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.
> [!WARN]
> A TLS secret with the name `prometheus-postgresql-exporter-http` containing a `ca.crt`, `tls.key` and `tls.crt` is
> already present.
> [!WARNING]
> The secret `prometheus-postgresql-exporter-http` containing the TLS certificate is already present. The keys `ca.crt`,
> `tls.key` and `tls.crt` of the secret can be mounted into the container filesystem for TLS authentication / encryption.
```bash
helm install prometheus-exporter/prometheus-postgres-exporter prometheus-postgres-exporter \
helm install prometheus-exporters/prometheus-postgres-exporter prometheus-postgres-exporter \
--set 'config.database.secret.databaseUsername=postgres' \
--set 'config.database.secret.databasePassword=postgres' \
--set 'config.database.secret.databaseConnectionUrl="postgres.example.local:5432/postgres?ssl=disable"' \
@ -94,7 +94,7 @@ certificate for the metrics exporter - TLS certificate verification can be enabl
replaced:
```diff
helm install prometheus-exporter/prometheus-postgres-exporter prometheus-postgres-exporter \
helm install prometheus-exporters/prometheus-postgres-exporter 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"' \
@ -135,8 +135,8 @@ replaced:
| `config.database.secret.databaseUsername` | Database username. Will be defined as env `DATA_SOURCE_USER` as part of a secret. | `""` |
| `config.database.secret.databasePassword` | Database password. Will be defined as env `DATA_SOURCE_PASS` as part of a secret. | `""` |
| `config.database.secret.databaseConnectionUrl` | Complex database connection URL. Will be defined as env `DATA_SOURCE_URI` as part of a secret. | `""` |
| `config.exporterConfig.existingSecret.enabled` | Mount an existing secret containing the key `exporter_config.yaml`. | `false` |
| `config.exporterConfig.existingSecret.secretName` | Name of the existing secret containing the key `exporter_config.yaml`. | `""` |
| `config.exporterConfig.existingSecret.enabled` | Mount an existing secret containing the key `exporterConfig.yaml`. | `false` |
| `config.exporterConfig.existingSecret.secretName` | Name of the existing secret containing the key `exporterConfig.yaml`. | `""` |
| `config.exporterConfig.secret.annotations` | Additional annotations of the secret containing the `exporterConfig.yaml`. | `{}` |
| `config.exporterConfig.secret.labels` | Additional labels of the secret containing the `exporterConfig.yaml`. | `{}` |
| `config.exporterConfig.secret.exporterConfig` | Content of the `exporterConfig.yaml`. Further information can be found [here](https://prometheus.io/docs/prometheus/latest/configuration/https/). | `{}` |
@ -170,10 +170,11 @@ replaced:
| `deployment.postgresExporter.image.pullPolicy` | Image pull policy. | `IfNotPresent` |
| `deployment.postgresExporter.resources` | CPU and memory resources of the pod. | `{}` |
| `deployment.postgresExporter.securityContext` | Security context of the container of the deployment. | `{}` |
| `deployment.postgresExporter.volumeMounts` | Additional volume mounts. | `{}` |
| `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.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.rollingUpdate.maxSurge` | The maximum number of pods that can be scheduled above the desired number of pods during a rolling update. | `1` |

View File

@ -24,10 +24,10 @@
"matchUpdateTypes": [ "minor", "patch"]
},
{
"addLabels": [ "renovate/prometheus-postgres-exporter", "renovate/automerge" ],
"addLabels": [ "renovate/markdownlint", "renovate/automerge" ],
"automerge": true,
"matchPackageNames": [ "prometheus-postgres-exporter" ],
"matchManagers": [ "regex" ],
"matchPackageNames": [ "markdownlint-cli", "@bitnami/readme-generator-for-helm" ],
"matchManagers": [ "npm" ],
"matchUpdateTypes": [ "minor", "patch"]
}
],

View File

@ -52,19 +52,28 @@
{{/* volumeMounts */}}
{{- define "prometheus-postgres-exporter.deployment.volumeMounts" -}}
{{- $volumeMounts := dict "volumeMounts" (.Values.deployment.postgresExporter.volumeMounts | default (list) ) }}
{{- $volumeMounts = merge $volumeMounts (dict "volumeMounts" (list (dict "name" "exporter-config" "mountPath" "/etc/prometheus-postgres-exporter/config.d" ))) }}
{{ toYaml $volumeMounts }}
{{- $volumeMounts := .Values.deployment.postgresExporter.volumeMounts | default list }}
{{- $volumeMounts = concat $volumeMounts (list (dict "name" "config-d" "mountPath" "/etc/prometheus-postgres-exporter/config.d" )) }}
{{ toYaml (dict "volumeMounts" $volumeMounts) }}
{{- end -}}
{{/* volumes */}}
{{- define "prometheus-postgres-exporter.deployment.volumes" -}}
{{- $volumes := dict "volumes" (.Values.deployment.volumes | default (list) ) }}
{{- $secretName := .Values.config.exporterConfig.existingSecret.secretName -}}
{{- $volumes := .Values.deployment.volumes | default list }}
{{- $exporterSecretName := .Values.config.exporterConfig.existingSecret.secretName -}}
{{- if not .Values.config.exporterConfig.existingSecret.enabled }}
{{- $secretName = printf "%s-exporter-config" (include "prometheus-postgres-exporter.fullname" . ) }}
{{- $exporterSecretName = printf "%s-exporter-config" (include "prometheus-postgres-exporter.fullname" . ) }}
{{- end }}
{{- $volumes = merge $volumes (dict "volumes" (list (dict "name" "exporter-config" "secret" (dict "secretName" $secretName)))) }}
{{ toYaml $volumes }}
{{- $webConfigSecretName := .Values.config.webConfig.existingSecret.secretName -}}
{{- if not .Values.config.webConfig.existingSecret.enabled }}
{{- $webConfigSecretName = printf "%s-web-config" (include "prometheus-postgres-exporter.fullname" . ) }}
{{- end }}
{{- $volumes = concat $volumes (list (dict "name" "config-d" "projected" (dict "defaultMode" 444 "sources" (list (dict "secret" (dict "name" $exporterSecretName)) (dict "secret" (dict "name" $webConfigSecretName)))))) }}
{{ toYaml (dict "volumes" $volumes) }}
{{- end -}}

View File

@ -13,5 +13,5 @@
{{- end }}
{{- define "prometheus-postgres-exporter.pod.selectorLabels" -}}
{{ include "prometheus-postgres-exporter.pod.labels" . }}
{{ include "prometheus-postgres-exporter.selectorLabels" . }}
{{- end }}

View File

@ -24,6 +24,7 @@ spec:
- name: postgres-exporter
args:
- "--config.file=/etc/prometheus-postgres-exporter/config.d/exporterConfig.yaml"
- "--web.config.file=/etc/prometheus-postgres-exporter/config.d/webConfig.yaml"
- "--web.listen-address=:9187"
{{- range .Values.deployment.postgresExporter.args }}
- {{ . | quote }}
@ -59,7 +60,7 @@ spec:
- name: http
containerPort: 9187
protocol: TCP
{{- with .Values.deployment.containerResources }}
{{- with .Values.deployment.postgresExporter.resources }}
resources:
{{- toYaml . | nindent 10 }}
{{- end }}
@ -80,7 +81,7 @@ spec:
dnsPolicy: {{ .Values.deployment.dnsPolicy }}
{{- end }}
{{- if .Values.deployment.hostname }}
hostname: {{ .Values.batch.dbUpdate.hostname }}
hostname: {{ .Values.deployment.hostname }}
{{- end }}
hostNetwork: {{ .Values.deployment.hostNetwork }}
{{- with .Values.deployment.imagePullSecrets }}
@ -94,7 +95,9 @@ spec:
{{- if .Values.deployment.priorityClassName }}
priorityClassName: {{ .Values.deployment.priorityClassName }}
{{- end }}
{{- if .Values.deployment.restartPolicy }}
restartPolicy: {{ .Values.deployment.restartPolicy }}
{{- end }}
{{- with .Values.deployment.securityContext }}
securityContext:
{{- toYaml . | nindent 8 }}

View File

@ -1,4 +1,4 @@
{{- if and (not (.Values.config.webConfig.existingSecret.enabled)) .Values.config.webConfig.secret.webConfig }}
{{- if not .Values.config.webConfig.existingSecret.enabled }}
---
apiVersion: v1
kind: Secret
@ -11,7 +11,7 @@ metadata:
labels:
{{- toYaml . | nindent 4 }}
{{- end }}
name: {{ include "prometheus-postgres-exporter.fullname" . }}-webconfig
name: {{ include "prometheus-postgres-exporter.fullname" . }}-web-config
namespace: {{ .Release.Namespace }}
stringData:
webConfig.yaml: |

View File

@ -13,14 +13,13 @@ metadata:
{{- end }}
name: {{ include "prometheus-postgres-exporter.fullname" . }}
namespace: {{ .Release.Namespace }}
spec:
automountServiceAccountToken: {{ .Values.serviceAccount.new.automountServiceAccountToken }}
{{- with .Values.serviceAccount.new.imagePullSecrets }}
imagePullSecrets:
{{- toYaml . | nindent 4 }}
{{- end }}
{{- with .Values.serviceAccount.new.secrets }}
secrets:
{{- toYaml . | nindent 4 }}
{{- end }}
automountServiceAccountToken: {{ .Values.serviceAccount.new.automountServiceAccountToken }}
{{- with .Values.serviceAccount.new.imagePullSecrets }}
imagePullSecrets:
{{- toYaml . | nindent 4 }}
{{- end }}
{{- with .Values.serviceAccount.new.secrets }}
secrets:
{{- toYaml . | nindent 4 }}
{{- end }}
{{- end }}

View File

@ -25,8 +25,8 @@ spec:
{{- toYaml . | nindent 6 }}
{{- end }}
scrapeTimeout: {{ required "The scrape timeout of the serviceMonitor is not defined!" .Values.prometheus.metrics.serviceMonitor.scrapeTimeout }}
scheme: {{ required "The scheme of the serviceMonitor is not defined!" .Values.prometheus.metrics.serviceMonitor.scheme}}
targetPort: {{ required "The port of the serviceMonitor is not defined!" .Values.prometheus.metrics.serviceMonitor.port }}
scheme: {{ required "The scheme of the serviceMonitor is not defined!" .Values.prometheus.metrics.serviceMonitor.scheme }}
targetPort: {{ required "The port of the service is not defined!" .Values.services.http.port }}
{{- with .Values.prometheus.metrics.serviceMonitor.tlsConfig }}
tlsConfig:
{{- toYaml . | nindent 6 }}

View File

@ -32,8 +32,98 @@ tests:
content:
secretRef:
name: prometheus-postgres-exporter-unittest-database-env
- equal:
path: spec.template.spec.containers[0].args
value:
- --config.file=/etc/prometheus-postgres-exporter/config.d/exporterConfig.yaml
- --web.config.file=/etc/prometheus-postgres-exporter/config.d/webConfig.yaml
- --web.listen-address=:9187
- equal:
path: spec.template.spec.containers[0].volumeMounts
value:
- mountPath: /etc/prometheus-postgres-exporter/config.d
name: config-d
- equal:
path: spec.template.spec.volumes
value:
- name: config-d
projected:
defaultMode: 444
sources:
- secret:
name: prometheus-postgres-exporter-unittest-exporter-config
- secret:
name: prometheus-postgres-exporter-unittest-web-config
- equal:
path: spec.template.spec.containers[0].image
value: quay.io/prometheuscommunity/postgres-exporter:v0.1.0
- equal:
path: spec.template.spec.containers[0].imagePullPolicy
value: IfNotPresent
- notExists:
path: spec.template.spec.containers[0].resources
- notExists:
path: spec.template.spec.containers[0].securityContext
- notExists:
path: spec.template.spec.dnsConfig
- notExists:
path: spec.template.spec.dnsPolicy
- notExists:
path: spec.template.spec.hostname
- equal:
path: spec.template.spec.hostNetwork
value: false
- notExists:
path: spec.template.spec.imagePullSecrets
- notExists:
path: spec.template.spec.nodeSelector
- notExists:
path: spec.template.spec.priorityClassName
- notExists:
path: spec.template.spec.restartPolicy
- notExists:
path: spec.template.spec.subdomain
- equal:
path: spec.template.spec.terminationGracePeriodSeconds
value: 60
- notExists:
path: spec.template.spec.tolerations
- notExists:
path: spec.template.spec.topologySpreadConstraints
- it: Test custom database secret
- it: Test additional arguments
set:
deployment.postgresExporter.args:
- "--foo=bar"
- "--bar=foo"
asserts:
- equal:
path: spec.template.spec.containers[0].args
value:
- --config.file=/etc/prometheus-postgres-exporter/config.d/exporterConfig.yaml
- --web.config.file=/etc/prometheus-postgres-exporter/config.d/webConfig.yaml
- --web.listen-address=:9187
- --foo=bar
- --bar=foo
- it: Test custom imageRegistry and imageRepository
set:
deployment.postgresExporter.image.registry: registry.example.local
deployment.postgresExporter.image.repository: path/special/prometheus-postgres-exporter
asserts:
- equal:
path: spec.template.spec.containers[0].image
value: registry.example.local/path/special/prometheus-postgres-exporter:v0.1.0
- it: Test custom imagePullPolicy
set:
deployment.postgresExporter.image.pullPolicy: Always
asserts:
- equal:
path: spec.template.spec.containers[0].imagePullPolicy
value: Always
- it: Test config.database.existingSecret
set:
config.database.existingSecret.enabled: true
config.database.existingSecret.secretName: custom-database-secret
@ -43,3 +133,243 @@ tests:
content:
secretRef:
name: custom-database-secret
- it: Test config.exporterConfig.existingSecret
set:
config.exporterConfig.existingSecret.enabled: true
config.exporterConfig.existingSecret.secretName: exporter-config-secret
asserts:
- equal:
path: spec.template.spec.containers[0].volumeMounts
value:
- mountPath: /etc/prometheus-postgres-exporter/config.d
name: config-d
- equal:
path: spec.template.spec.volumes
value:
- name: config-d
projected:
defaultMode: 444
sources:
- secret:
name: exporter-config-secret
- secret:
name: prometheus-postgres-exporter-unittest-web-config
- it: Test config.webConfig.existingSecret
set:
config.webConfig.existingSecret.enabled: true
config.webConfig.existingSecret.secretName: web-config-secret
asserts:
- equal:
path: spec.template.spec.containers[0].volumeMounts
value:
- mountPath: /etc/prometheus-postgres-exporter/config.d
name: config-d
- equal:
path: spec.template.spec.volumes
value:
- name: config-d
projected:
defaultMode: 444
sources:
- secret:
name: prometheus-postgres-exporter-unittest-exporter-config
- secret:
name: web-config-secret
- it: Test custom resource limits and requests
set:
deployment.postgresExporter.resources:
limits:
cpu: 100m
memory: 250MB
requests:
cpu: 25m
memory: 100MB
asserts:
- equal:
path: spec.template.spec.containers[0].resources
value:
limits:
cpu: 100m
memory: 250MB
requests:
cpu: 25m
memory: 100MB
- it: Test custom securityContext
set:
deployment.postgresExporter.securityContext:
capabilities:
add:
- NET_RAW
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsNonRoot: true
runAsUser: 1000
asserts:
- equal:
path: spec.template.spec.containers[0].securityContext
value:
capabilities:
add:
- NET_RAW
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsNonRoot: true
runAsUser: 1000
- it: Test dnsConfig
set:
deployment.dnsConfig:
nameservers:
- "8.8.8.8"
- "8.8.4.4"
asserts:
- equal:
path: spec.template.spec.dnsConfig
value:
nameservers:
- "8.8.8.8"
- "8.8.4.4"
- it: Test dnsPolicy
set:
deployment.dnsPolicy: ClusterFirst
asserts:
- equal:
path: spec.template.spec.dnsPolicy
value: ClusterFirst
- it: Test hostNetwork, hostname, subdomain
set:
deployment.hostNetwork: true
deployment.hostname: pg-exporter
deployment.subdomain: exporters.internal
asserts:
- equal:
path: spec.template.spec.hostNetwork
value: true
- equal:
path: spec.template.spec.hostname
value: pg-exporter
- equal:
path: spec.template.spec.subdomain
value: exporters.internal
- it: Test imagePullSecrets
set:
deployment.imagePullSecrets:
- name: my-pull-secret
- name: my-special-secret
asserts:
- equal:
path: spec.template.spec.imagePullSecrets
value:
- name: my-pull-secret
- name: my-special-secret
- it: Test nodeSelector
set:
deployment.nodeSelector:
foo: bar
asserts:
- equal:
path: spec.template.spec.nodeSelector
value:
foo: bar
- it: Test priorityClassName
set:
deployment.priorityClassName: my-priority
asserts:
- equal:
path: spec.template.spec.priorityClassName
value: my-priority
- it: Test restartPolicy
set:
deployment.restartPolicy: Always
asserts:
- equal:
path: spec.template.spec.restartPolicy
value: Always
- it: Test terminationGracePeriodSeconds
set:
deployment.terminationGracePeriodSeconds: 120
asserts:
- equal:
path: spec.template.spec.terminationGracePeriodSeconds
value: 120
- it: Test tolerations
set:
deployment.tolerations:
- key: database/type
operator: Equal
value: postgres
effect: NoSchedule
asserts:
- equal:
path: spec.template.spec.tolerations
value:
- key: database/type
operator: Equal
value: postgres
effect: NoSchedule
- it: Test topologySpreadConstraints
set:
deployment.topologySpreadConstraints:
- topologyKey: kubernetes.io/hostname
whenUnsatisfiable: DoNotSchedule
labelSelector:
matchLabels:
app.kubernetes.io/instance: prometheus-postgres-exporter
asserts:
- equal:
path: spec.template.spec.topologySpreadConstraints
value:
- topologyKey: kubernetes.io/hostname
whenUnsatisfiable: DoNotSchedule
labelSelector:
matchLabels:
app.kubernetes.io/instance: prometheus-postgres-exporter
- it: Test additional volumeMounts and volumes
set:
deployment.postgresExporter.volumeMounts:
- name: data
mountPath: /usr/lib/prometheus-postgres-exporter/data
deployment.volumes:
- name: data
hostPath:
path: /usr/lib/prometheus-postgres-exporter/data
asserts:
- equal:
path: spec.template.spec.containers[0].volumeMounts
value:
- name: data
mountPath: /usr/lib/prometheus-postgres-exporter/data
- name: config-d
mountPath: /etc/prometheus-postgres-exporter/config.d
- equal:
path: spec.template.spec.volumes
value:
- name: data
hostPath:
path: /usr/lib/prometheus-postgres-exporter/data
- name: config-d
projected:
defaultMode: 444
sources:
- secret:
name: prometheus-postgres-exporter-unittest-exporter-config
- secret:
name: prometheus-postgres-exporter-unittest-web-config

View File

@ -58,7 +58,7 @@ tests:
helm.sh/chart: prometheus-postgres-exporter-0.1.0
- equal:
path: spec.podMetricsEndpoints[0].enableHttp2
value: false
value: true
- equal:
path: spec.podMetricsEndpoints[0].followRedirects
value: false
@ -90,10 +90,7 @@ tests:
path: spec.selector.matchLabels
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
- it: Render podMonitor with custom annotations and labels.
set:
@ -122,7 +119,7 @@ tests:
set:
prometheus.metrics.enabled: true
prometheus.metrics.podMonitor.enabled: true
prometheus.metrics.podMonitor.enableHttp2: true
prometheus.metrics.podMonitor.enableHttp2: false
prometheus.metrics.podMonitor.followRedirects: true
prometheus.metrics.podMonitor.honorLabels: true
prometheus.metrics.podMonitor.interval: "180s"
@ -140,7 +137,7 @@ tests:
count: 1
- equal:
path: spec.podMetricsEndpoints[0].enableHttp2
value: true
value: false
- equal:
path: spec.podMetricsEndpoints[0].followRedirects
value: true

View File

@ -8,34 +8,14 @@ release:
templates:
- templates/prometheus-postgres-exporter/secretWebConfig.yaml
tests:
- it: Skip rendering by using existing secret.
set:
config.webConfig.existingSecret.enabled: true
asserts:
- hasDocuments:
count: 0
- it: Skip rendering when no webConfig.yaml is defined.
set:
config.webConfig.existingSecret.enabled: false
asserts:
- hasDocuments:
count: 0
- it: Rendering database secret.
set:
config.webConfig.secret.webConfig:
tls_server_config:
cert_file: /path/to/cert.pem
client_ca_file: /path/to/ca.pem
key_file: /path/to/key.pem
- it: Rendering default secret.
asserts:
- hasDocuments:
count: 1
- containsDocument:
apiVersion: v1
kind: Secret
name: prometheus-postgres-exporter-unittest-webconfig
name: prometheus-postgres-exporter-unittest-web-config
namespace: testing
- notExists:
path: metadata.annotations
@ -47,6 +27,19 @@ 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: stringData["webConfig.yaml"]
value: |
{}
- it: Rendering custom webconfig.
set:
config.webConfig.secret.webConfig:
tls_server_config:
cert_file: /path/to/cert.pem
client_ca_file: /path/to/ca.pem
key_file: /path/to/key.pem
asserts:
- equal:
path: stringData["webConfig.yaml"]
value: |

View File

@ -29,12 +29,12 @@ tests:
- notExists:
path: metadata.labels
- equal:
path: spec.automountServiceAccountToken
path: automountServiceAccountToken
value: true
- notExists:
path: spec.imagePullSecrets
path: imagePullSecrets
- notExists:
path: spec.secrets
path: secrets
- it: Rendering serviceAccount with custom values.
@ -65,14 +65,14 @@ tests:
path: metadata.name
value: prometheus-postgres-exporter-unittest
- equal:
path: spec.automountServiceAccountToken
path: automountServiceAccountToken
value: false
- equal:
path: spec.imagePullSecrets
path: imagePullSecrets
value:
- name: "my-pull-secret"
- equal:
path: spec.secrets
path: secrets
value:
- name: "my-secret"
namespace: "my-namespace"

View File

@ -59,7 +59,7 @@ tests:
helm.sh/chart: prometheus-postgres-exporter-0.1.0
- equal:
path: spec.endpoints[0].enableHttp2
value: false
value: true
- equal:
path: spec.endpoints[0].followRedirects
value: false
@ -121,7 +121,7 @@ tests:
set:
prometheus.metrics.enabled: true
prometheus.metrics.serviceMonitor.enabled: true
prometheus.metrics.serviceMonitor.enableHttp2: true
prometheus.metrics.serviceMonitor.enableHttp2: false
prometheus.metrics.serviceMonitor.followRedirects: true
prometheus.metrics.serviceMonitor.honorLabels: true
prometheus.metrics.serviceMonitor.interval: "180s"
@ -134,13 +134,12 @@ tests:
action: "drop"
prometheus.metrics.serviceMonitor.scrapeTimeout: "5s"
prometheus.metrics.serviceMonitor.scheme: "http"
prometheus.metrics.serviceMonitor.port: 10443
asserts:
- hasDocuments:
count: 1
- equal:
path: spec.endpoints[0].enableHttp2
value: true
value: false
- equal:
path: spec.endpoints[0].followRedirects
value: true
@ -166,7 +165,4 @@ tests:
value: 5s
- equal:
path: spec.endpoints[0].scheme
value: http
- equal:
path: spec.endpoints[0].targetPort
value: 10443
value: http

View File

@ -63,10 +63,7 @@ tests:
path: spec.selector
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.sessionAffinity
value: None

View File

@ -30,8 +30,8 @@ config:
databaseConnectionUrl: ""
exporterConfig:
## @param config.exporterConfig.existingSecret.enabled Mount an existing secret containing the key `exporter_config.yaml`.
## @param config.exporterConfig.existingSecret.secretName Name of the existing secret containing the key `exporter_config.yaml`.
## @param config.exporterConfig.existingSecret.enabled Mount an existing secret containing the key `exporterConfig.yaml`.
## @param config.exporterConfig.existingSecret.secretName Name of the existing secret containing the key `exporterConfig.yaml`.
existingSecret:
enabled: false
secretName: ""
@ -190,7 +190,7 @@ deployment:
# runAsUser: 1000
## @param deployment.postgresExporter.volumeMounts Additional volume mounts.
volumeMounts: {}
volumeMounts: []
# - name: my-configmap-volume
# mountPath: /configmap
# readOnly: true
@ -204,6 +204,9 @@ deployment:
## @param deployment.replicaCount Number of replicas for the postgres-exporter deployment.
replicaCount: 1
## @param deployment.restartPolicy Restart policy of the postgres-exporter deployment.
restartPolicy: ""
## @param deployment.securityContext Security context of the postgres-exporter deployment.
securityContext: {}
# fsGroup: 2000
@ -222,6 +225,10 @@ deployment:
## @param deployment.tolerations Tolerations of the postgres-exporter deployment.
tolerations: []
# - key: database/type
# operator: Equal
# value: postgres
# effect: NoSchedule
## @param deployment.topologySpreadConstraints TopologySpreadConstraints of the postgres-exporter deployment.
topologySpreadConstraints: []
@ -306,7 +313,7 @@ prometheus:
podMonitor:
enabled: false
annotations: {}
enableHttp2: false
enableHttp2: true
followRedirects: false
honorLabels: false
labels: {}
@ -325,7 +332,6 @@ prometheus:
## @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.port HTTP port 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`.
@ -335,12 +341,11 @@ prometheus:
enabled: false
annotations: {}
labels: {}
enableHttp2: false
enableHttp2: true
followRedirects: false
honorLabels: false
interval: "60s"
path: "/metrics"
port: 9187
relabelings: []
scrapeTimeout: "30s"
scheme: "http"