You've already forked prometheus-postgres-exporter
							
							Compare commits
	
		
			85 Commits
		
	
	
		
			0.1.3
			...
			5808a09234
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 5808a09234 | |||
| 2958540cf7 | |||
| b0a16dc214 | |||
| 2a04fb1966 | |||
| fcf64a215d | |||
| 2b6f0dbda4 | |||
| 93884a4f51 | |||
| 42ca0a7370 | |||
| a4875f9488 | |||
| a976273cbc | |||
| 5646ebfa8c | |||
| 4a4650cdc2 | |||
| b73455b657 | |||
| 79062bc1c3 | |||
| 3b0a815203 | |||
| ffa8271684 | |||
| f59f6aa94d | |||
| ce4065bda8 | |||
| 1581617daf | |||
| a3e4c0c0e7 | |||
| 2e8bc16f1e | |||
| a07c602c44 | |||
| b96736bc69 | |||
| 4cd6988b38 | |||
| b5fc1b7575 | |||
| 316b9b236b | |||
| 5bf8a132eb | |||
| 489c616e9a | |||
| 631bd72480 | |||
| 33cf9e8fc0 | |||
| e462e5a002 | |||
| 76ec5a66ff | |||
| 686e43668c | |||
| 7ce70de51c | |||
| 3434c5a737 | |||
| 1e9aeb802d | |||
| 2e9eae9888 | |||
| 0dcea5cfc4 | |||
| e38c4fbdfe | |||
| 0a4d677938 | |||
| 171d9a695e | |||
| 853c65a8ef | |||
| c93c4dd4eb | |||
| 4105bb9e0f | |||
| 7ea826a2a1 | |||
| aa8c279fe0 | |||
| dfd4c1f991 | |||
| d6c2e4f992 | |||
| ae7652a335 | |||
| 16cfa36fda | |||
| 94fbc5e38f | |||
| dcc7bae921 | |||
| 503c622df5 | |||
| bf9bd4853f | |||
| 80a8e8096d | |||
| 79b61b0035 | |||
| d33b17b973 | |||
| a0d241c90c | |||
| 1d061fe95f | |||
| bb4a5d48b4 | |||
| 1f6550d169 | |||
| a01c7d8c45 | |||
| 2dd99e8b13 | |||
| 4945cd1c2e | |||
| ed10c5362a | |||
| 70abc21fb4 | |||
| 8618b52ef6 | |||
| 967d36cafb | |||
| 8f36f688d0 | |||
| 8d1f6622b8 | |||
| bd04d4a349 | |||
| 3105f2a408 | |||
| 3a96e4ac5d | |||
| abd73d82f2 | |||
| 19b5ac5969 | |||
| 7b98e68b03 | |||
| 6c30756f8d | |||
| 688718008f | |||
| be0e152de8 | |||
| 4edf2660de | |||
| c1a2a098c8 | |||
| 085a68c60c | |||
| 98fe8fe2a4 | |||
| 7d02c5f7b3 | |||
| cbdf696a4e | 
							
								
								
									
										208
									
								
								.drone.yml
									
									
									
									
									
								
							
							
						
						
									
										208
									
								
								.drone.yml
									
									
									
									
									
								
							| @@ -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.3.1 |  | ||||||
|  |  | ||||||
| - 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.41.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.3.1 |  | ||||||
|  |  | ||||||
| - 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.3.1 |  | ||||||
|  |  | ||||||
| - name: generate README |  | ||||||
|   commands: |  | ||||||
|   - npm install |  | ||||||
|   - npm run readme:parameters |  | ||||||
|   - npm run readme:lint |  | ||||||
|   image: docker.io/library/node:22.9.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.3.1 |  | ||||||
|  |  | ||||||
| - 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.3.1 |  | ||||||
|  |  | ||||||
| - 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 |  | ||||||
							
								
								
									
										30
									
								
								.gitea/workflows/generate-readme.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								.gitea/workflows/generate-readme.yaml
									
									
									
									
									
										Normal 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:23.6.0-alpine | ||||||
|  |     runs-on: | ||||||
|  |     - ubuntu-latest | ||||||
|  |     steps: | ||||||
|  |     - name: Install tooling | ||||||
|  |       run: | | ||||||
|  |         apk update | ||||||
|  |         apk add git npm | ||||||
|  |     - uses: actions/checkout@v4.2.2 | ||||||
|  |     - name: Generate parameter section in README | ||||||
|  |       run: | | ||||||
|  |         npm install | ||||||
|  |         npm run readme:parameters | ||||||
|  |     - name: Compare diff | ||||||
|  |       run: git diff --exit-code --name-only README.md | ||||||
							
								
								
									
										40
									
								
								.gitea/workflows/helm.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								.gitea/workflows/helm.yaml
									
									
									
									
									
										Normal 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' ./ | ||||||
							
								
								
									
										44
									
								
								.gitea/workflows/markdown-linters.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								.gitea/workflows/markdown-linters.yaml
									
									
									
									
									
										Normal 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:23.6.0-alpine | ||||||
|  |     runs-on: | ||||||
|  |     - ubuntu-latest | ||||||
|  |     steps: | ||||||
|  |     - name: Install tooling | ||||||
|  |       run: | | ||||||
|  |         apk update | ||||||
|  |         apk add git npm | ||||||
|  |     - uses: actions/checkout@v4.2.2 | ||||||
|  |     - name: Verify links in markdown files | ||||||
|  |       run: | | ||||||
|  |         npm install | ||||||
|  |         npm run readme:link | ||||||
|  |  | ||||||
|  |   markdown-lint: | ||||||
|  |     container: | ||||||
|  |       image: docker.io/library/node:23.6.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 | ||||||
							
								
								
									
										46
									
								
								.gitea/workflows/release.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								.gitea/workflows/release.yaml
									
									
									
									
									
										Normal 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.CHARTMUSEUM_REPOSITORY }} | ||||||
|  |           CHARTMUSEUM_USERNAME: ${{ secrets.CHARTMUSEUM_USERNAME }} | ||||||
|  |           CHARTMUSEUM_HOSTNAME: ${{ vars.CHARTMUSEUM_HOSTNAME }} | ||||||
|  |  | ||||||
|  |           GITEA_PACKAGE_REGISTRY_TOKEN: ${{ secrets.GIT_CRYPTIC_SYSTEMS_PACKAGE_REGISTRY_TOKEN }} | ||||||
|  |           GITEA_SERVER_URL: ${{ github.server_url }} | ||||||
|  |         run: | | ||||||
|  |           PACKAGE_VERSION=${GITHUB_REF#refs/tags/} | ||||||
|  |           REPOSITORY_NAME=$(echo ${GITHUB_REPOSITORY} | cut -d '/' -f 2) | ||||||
|  |           REPOSITORY_OWNER=$(echo ${GITHUB_REPOSITORY} | cut -d '/' -f 1) | ||||||
|  |  | ||||||
|  |           helm dependency build | ||||||
|  |           helm package --version "${PACKAGE_VERSION}" ./ | ||||||
|  |  | ||||||
|  |           # chart-museum | ||||||
|  |           helm repo add --username ${CHARTMUSEUM_USERNAME} --password ${CHARTMUSEUM_PASSWORD} chartmuseum https://${CHARTMUSEUM_HOSTNAME}/${CHARTMUSEUM_REPOSITORY} | ||||||
|  |           helm cm-push ${REPOSITORY_NAME}-${PACKAGE_VERSION}.tgz chartmuseum | ||||||
|  |           helm repo remove chartmuseum | ||||||
|  |  | ||||||
|  |           # gitea | ||||||
|  |           helm repo add --username ${REPOSITORY_OWNER} --password ${GITEA_PACKAGE_REGISTRY_TOKEN} gitea ${GITEA_SERVER_URL}/api/packages/${REPOSITORY_OWNER}/helm | ||||||
|  |           helm cm-push ${REPOSITORY_NAME}-${PACKAGE_VERSION}.tgz gitea | ||||||
|  |           helm repo remove gitea | ||||||
							
								
								
									
										21
									
								
								.helmignore
									
									
									
									
									
								
							
							
						
						
									
										21
									
								
								.helmignore
									
									
									
									
									
								
							| @@ -26,7 +26,7 @@ | |||||||
| .vscode/ | .vscode/ | ||||||
|  |  | ||||||
| # drone | # drone | ||||||
| .drone.ya?ml | .drone.yml | ||||||
|  |  | ||||||
| # editorconfig | # editorconfig | ||||||
| .editorconfig | .editorconfig | ||||||
| @@ -37,13 +37,24 @@ values2.yaml | |||||||
|  |  | ||||||
| # helm packages | # helm packages | ||||||
| *.tgz | *.tgz | ||||||
|  | .helmignore | ||||||
|  | unittests | ||||||
|  |  | ||||||
| # markdownlint | # markdownlint | ||||||
| .markdownlint.yml | .markdownlint.yml | ||||||
| .markdownlint.yaml | .markdownlint.yaml | ||||||
|  | .markdownlintignore | ||||||
|  |  | ||||||
| # maven | # npm | ||||||
| target | .prettierignore | ||||||
|  | .npmrc | ||||||
|  | package* | ||||||
|  |  | ||||||
| # serviceDescriptor (uctl-cluster) | # yamllint | ||||||
| serviceDescriptor.yaml | .yamllint.yaml | ||||||
|  |  | ||||||
|  | # Others | ||||||
|  | CONTRIBUTING.md | ||||||
|  | CODEOWNERS | ||||||
|  | Makefile | ||||||
|  | renovate.json | ||||||
|   | |||||||
| @@ -128,16 +128,18 @@ MD044: | |||||||
|   # List of proper names |   # List of proper names | ||||||
|   names: |   names: | ||||||
|     - Git |     - Git | ||||||
|     - Gitea |  | ||||||
|     - GitDevOps |     - GitDevOps | ||||||
|  |     - Gitea | ||||||
|     - GitHub |     - GitHub | ||||||
|     - GitLab |     - GitLab | ||||||
|     - GitOps |     - GitOps | ||||||
|  |     - kube-prometheus-stack | ||||||
|     - Memcached |     - Memcached | ||||||
|     - Oracle |     - Oracle | ||||||
|     - ORBIS U |     - ORBIS U | ||||||
|     - PostgreSQL |     - PostgreSQL | ||||||
|     - Prometheus |     - Prometheus | ||||||
|  |     - prometheus-exporter | ||||||
|     - SSL |     - SSL | ||||||
|     - TLS |     - TLS | ||||||
|   # Include code blocks |   # Include code blocks | ||||||
|   | |||||||
| @@ -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. | ||||||
|   | |||||||
| @@ -4,7 +4,7 @@ description: Prometheus metric exporter for PostgreSQL | |||||||
| type: application | type: application | ||||||
| kubeVersion: ">=1.20.0" | kubeVersion: ">=1.20.0" | ||||||
| version: "0.1.0" | version: "0.1.0" | ||||||
| appVersion: "0.15.0" | appVersion: "0.16.0" | ||||||
|  |  | ||||||
| # icon: https://annotations.example.com/icon.png | # icon: https://annotations.example.com/icon.png | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										63
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										63
									
								
								Makefile
									
									
									
									
									
								
							| @@ -3,43 +3,49 @@ CONTAINER_RUNTIME?=$(shell which podman) | |||||||
|  |  | ||||||
| # HELM_IMAGE | # HELM_IMAGE | ||||||
| HELM_IMAGE_REGISTRY_HOST?=docker.io | HELM_IMAGE_REGISTRY_HOST?=docker.io | ||||||
| HELM_IMAGE_REPOSITORY=volkerraschek/helm | HELM_IMAGE_REPOSITORY?=volkerraschek/helm | ||||||
| HELM_IMAGE_VERSION?=3.16.1 # renovate: datasource=docker registryUrl=https://docker.io depName=volkerraschek/helm | HELM_IMAGE_VERSION?=3.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} | HELM_IMAGE_FULLY_QUALIFIED=${HELM_IMAGE_REGISTRY_HOST}/${HELM_IMAGE_REPOSITORY}:${HELM_IMAGE_VERSION} | ||||||
|  |  | ||||||
| # MARKDOWNLINKCHECKER_IMAGE |  | ||||||
| MARKDOWNLINKCHECK_IMAGE_REGISTRY_HOST?=ghcr.io |  | ||||||
| MARKDOWNLINKCHECK_IMAGE_REPOSITORY=tcort/markdown-link-check |  | ||||||
| MARKDOWNLINKCHECK_IMAGE_VERSION?=3.12.2 # renovate: datasource=docker registryUrl=https://ghcr.io depName=tcort/markdown-link-check |  | ||||||
| MARKDOWNLINKCHECK_IMAGE_FULLY_QUALIFIED=${MARKDOWNLINT_IMAGE_REGISTRY_HOST}/${MARKDOWNLINT_IMAGE_REPOSITORY}:${MARKDOWNLINT_IMAGE_VERSION} |  | ||||||
|  |  | ||||||
| # NODE_IMAGE | # NODE_IMAGE | ||||||
| NODE_IMAGE_REGISTRY_HOST?=docker.io | NODE_IMAGE_REGISTRY_HOST?=docker.io | ||||||
| NODE_IMAGE_REPOSITORY=library/node | NODE_IMAGE_REPOSITORY?=library/node | ||||||
| NODE_IMAGE_VERSION?=22.9.0-alpine # renovate: datasource=docker registryUrl=https://docker.io depName=library/node | NODE_IMAGE_VERSION?=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} | 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 | ||||||
| # ============================================================================== | # ============================================================================== | ||||||
| missing-dot: | missing-dot: | ||||||
| 	grep --perl-regexp '## @(param|skip).*[^.]$$' values.yaml | 	grep --perl-regexp '## @(param|skip).*[^.]$$' values.yaml | ||||||
|  |  | ||||||
| # CONTAINER RUN - PREPARE ENVIRONMENT | # CONTAINER RUN - README | ||||||
| # ============================================================================== | # ============================================================================== | ||||||
| PHONY+=container-run/readme | PHONY+=container-run/readme | ||||||
| container-run/readme: | container-run/readme: container-run/readme/link container-run/readme/lint container-run/readme/parameters | ||||||
|  |  | ||||||
|  | container-run/readme/link: | ||||||
| 	${CONTAINER_RUNTIME} run \ | 	${CONTAINER_RUNTIME} run \ | ||||||
| 		--rm \ | 		--rm \ | ||||||
| 		--volume $(shell pwd):$(shell pwd) \ | 		--volume $(shell pwd):$(shell pwd) \ | ||||||
| 		--workdir $(shell pwd) \ | 		--workdir $(shell pwd) \ | ||||||
| 			${NODE_IMAGE_FULLY_QUALIFIED} \ | 			${NODE_IMAGE_FULLY_QUALIFIED} \ | ||||||
| 				npm install && npm run readme:parameters && npm run readme:lint | 				npm install && npm run readme:link | ||||||
|  |  | ||||||
|  | container-run/readme/lint: | ||||||
|  | 	${CONTAINER_RUNTIME} run \ | ||||||
|  | 		--rm \ | ||||||
|  | 		--volume $(shell pwd):$(shell pwd) \ | ||||||
|  | 		--workdir $(shell pwd) \ | ||||||
|  | 			${NODE_IMAGE_FULLY_QUALIFIED} \ | ||||||
|  | 				npm install && npm run readme:lint | ||||||
|  |  | ||||||
|  | container-run/readme/parameters: | ||||||
|  | 	${CONTAINER_RUNTIME} run \ | ||||||
|  | 		--rm \ | ||||||
|  | 		--volume $(shell pwd):$(shell pwd) \ | ||||||
|  | 		--workdir $(shell pwd) \ | ||||||
|  | 			${NODE_IMAGE_FULLY_QUALIFIED} \ | ||||||
|  | 				npm install && npm run readme:parameters | ||||||
|  |  | ||||||
| # CONTAINER RUN - HELM UNITTESTS | # CONTAINER RUN - HELM UNITTESTS | ||||||
| # ============================================================================== | # ============================================================================== | ||||||
| @@ -67,19 +73,6 @@ container-run/helm-update-dependencies: | |||||||
| 			${HELM_IMAGE_FULLY_QUALIFIED} \ | 			${HELM_IMAGE_FULLY_QUALIFIED} \ | ||||||
| 				dependency update | 				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 | # CONTAINER RUN - MARKDOWN-LINT | ||||||
| # ============================================================================== | # ============================================================================== | ||||||
| PHONY+=container-run/helm-lint | PHONY+=container-run/helm-lint | ||||||
| @@ -91,16 +84,6 @@ container-run/helm-lint: | |||||||
| 		${HELM_IMAGE_FULLY_QUALIFIED} \ | 		${HELM_IMAGE_FULLY_QUALIFIED} \ | ||||||
| 			lint --values values.yaml . | 			lint --values values.yaml . | ||||||
|  |  | ||||||
| # CONTAINER RUN - MARKDOWN-LINK-CHECK |  | ||||||
| # ============================================================================== |  | ||||||
| PHONY+=container-run/markdown-link-check |  | ||||||
| container-run/markdown-link-check: |  | ||||||
| 	${CONTAINER_RUNTIME} run \ |  | ||||||
| 		--rm \ |  | ||||||
| 		--volume $(shell pwd):/work \ |  | ||||||
| 		${MARKDOWNLINKCHECK_IMAGE_FULLY_QUALIFIED} \ |  | ||||||
| 			*.md |  | ||||||
|  |  | ||||||
| # PHONY | # PHONY | ||||||
| # ============================================================================== | # ============================================================================== | ||||||
| # Declare the contents of the PHONY variable as phony. We keep that information | # Declare the contents of the PHONY variable as phony. We keep that information | ||||||
|   | |||||||
							
								
								
									
										165
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										165
									
								
								README.md
									
									
									
									
									
								
							| @@ -1,20 +1,21 @@ | |||||||
| # Prometheus PostgreSQL exporter | # Prometheus PostgreSQL exporter | ||||||
|  |  | ||||||
| [](https://drone.cryptic.systems/volker.raschek/prometheus-postgres-exporter) | [](https://drone.cryptic.systems/volker.raschek/prometheus-postgres-exporter) | ||||||
|  | [](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 | ||||||
|  | > find the official community chart [here](https://github.com/prometheus-community/helm-charts). | ||||||
|  |  | ||||||
| This helm chart enables the deployment of a Prometheus metrics exporter for PostgreSQL databases and allows the | This helm chart enables the deployment of a Prometheus metrics exporter for PostgreSQL databases and allows the | ||||||
| individual configuration of additional containers/initContainers, mounting of volumes, defining additional environment | individual configuration of additional containers/initContainers, mounting of volumes, defining additional environment | ||||||
| variables, apply a user-defined web-config.yaml and much more. | variables, apply a user-defined `webConfig.yaml` and much more. | ||||||
|  |  | ||||||
| Chapter [configuration and installation](#helm-configuration-and-installation) describes the basics how to configure helm | Chapter [configuration and installation](#helm-configuration-and-installation) describes the basics how to configure helm | ||||||
| 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 unit tests to detect regressions and stabilize the deployment. Additionally, this helm | Furthermore, this helm chart contains unit tests to detect regressions and stabilize the deployment. Additionally, this | ||||||
| chart is tested for deployment scenarios with ArgoCD. | helm chart is tested for deployment scenarios with **ArgoCD**. | ||||||
|  |  | ||||||
| > ![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). |  | ||||||
|  |  | ||||||
| ## Helm: configuration and installation | ## Helm: configuration and installation | ||||||
|  |  | ||||||
| @@ -31,7 +32,7 @@ chart is tested for deployment scenarios with 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 | ||||||
| helm install prometheus-exporters/prometheus-postgres-exporter prometheus-postgres-exporter \ | helm install 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' \ | ||||||
|   --set 'config.database.secret.databaseConnectionUrl="postgres.example.local:5432/postgres?ssl=disable"' \ |   --set 'config.database.secret.databaseConnectionUrl="postgres.example.local:5432/postgres?ssl=disable"' \ | ||||||
| @@ -45,7 +46,8 @@ version of the chart must be in sync with the `values.yaml`. Newer *minor* versi | |||||||
| versions can break something! | versions can break something! | ||||||
|  |  | ||||||
| ```bash | ```bash | ||||||
| helm show values prometheus-exporters/prometheus-postgres-exporter --version 0.1.0 > values.yaml | CHART_VERSION=0.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: | A complete list of available helm chart versions can be displayed via the following command: | ||||||
| @@ -61,17 +63,46 @@ for customizations. These can be configured in more detail via `values.yaml`. | |||||||
|  |  | ||||||
| The following examples serve as individual configurations and as inspiration for how deployment problems can be solved. | The following examples serve as individual configurations and as inspiration for how deployment problems can be solved. | ||||||
|  |  | ||||||
| ### TLS authentication and encryption | #### Avoid CPU throttling by defining a CPU limit | ||||||
|  |  | ||||||
|  | If the application is deployed with a CPU resource limit, Prometheus may throw a CPU throttling warning for the | ||||||
|  | application. This has more or less to do with the fact that the application finds the number of CPUs of the host, but | ||||||
|  | cannot use the available CPU time to perform computing operations. | ||||||
|  |  | ||||||
|  | The application must be informed that despite several CPUs only a part (limit) of the available computing time is | ||||||
|  | available. As this is a Golang application, this can be implemented using `GOMAXPROCS`. The following example is one way | ||||||
|  | of defining `GOMAXPROCS` automatically based on the defined CPU limit like `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 | 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. | ||||||
|  |  | ||||||
| > [!WARN] | > [!WARNING] | ||||||
| > A TLS secret with the name `prometheus-postgresql-exporter-http` containing a `ca.crt`, `tls.key` and `tls.crt` is | > The secret `prometheus-postgresql-exporter-http` containing the TLS certificate is already present. The keys `ca.crt`, | ||||||
| > already present. | > `tls.key` and `tls.crt` of the secret can be mounted into the container filesystem for TLS authentication / encryption. | ||||||
|  |  | ||||||
| ```bash | ```bash | ||||||
| helm install prometheus-exporters/prometheus-postgres-exporter prometheus-postgres-exporter \ | helm install 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' \ | ||||||
|   --set 'config.database.secret.databaseConnectionUrl="postgres.example.local:5432/postgres?ssl=disable"' \ |   --set 'config.database.secret.databaseConnectionUrl="postgres.example.local:5432/postgres?ssl=disable"' \ | ||||||
| @@ -94,7 +125,7 @@ certificate for the metrics exporter - TLS certificate verification can be enabl | |||||||
| replaced: | replaced: | ||||||
|  |  | ||||||
| ```diff | ```diff | ||||||
|   helm install prometheus-exporters/prometheus-postgres-exporter prometheus-postgres-exporter \ |   helm install 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' \ | ||||||
|     --set 'config.database.secret.databaseConnectionUrl="postgres.example.local:5432/postgres?ssl=disable"' \ |     --set 'config.database.secret.databaseConnectionUrl="postgres.example.local:5432/postgres?ssl=disable"' \ | ||||||
| @@ -115,6 +146,47 @@ replaced: | |||||||
| +   --set 'prometheus.metrics.serviceMonitor.tlsConfig.keyFile=/etc/prometheus/tls/tls.key' | +   --set 'prometheus.metrics.serviceMonitor.tlsConfig.keyFile=/etc/prometheus/tls/tls.key' | ||||||
| ``` | ``` | ||||||
|  |  | ||||||
|  | #### Grafana dashboard | ||||||
|  |  | ||||||
|  | The helm chart includes Grafana dashboards. These can be deployed as a configMap by activating Grafana integration. It | ||||||
|  | is assumed that the dashboard is consumed by Grafana or a sidecar container itself and that the dashboard is stored in | ||||||
|  | the Grafana container file system so that it is subsequently available to the user. The | ||||||
|  | [kube-prometheus-stack](https://artifacthub.io/packages/helm/prometheus-community/kube-prometheus-stack) deployment | ||||||
|  | makes this possible. | ||||||
|  |  | ||||||
|  | ```bash | ||||||
|  | helm install prometheus-postgres-exporter prometheus-exporters/prometheus-postgres-exporter \ | ||||||
|  |   --set 'config.database.secret.databaseUsername=postgres' \ | ||||||
|  |   --set 'config.database.secret.databasePassword=postgres' \ | ||||||
|  |   --set 'config.database.secret.databaseConnectionUrl="postgres.example.local:5432/postgres?ssl=disable"' \ | ||||||
|  |   --set 'grafana.enabled=true' | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | #### Avoid deploying on same node / bare metal host as PostgresDB | ||||||
|  |  | ||||||
|  | As a best practice, avoid running the postgres-exporter on the same node / bare-metal host as the PostgresDB. This is | ||||||
|  | because if the postgres-exporter is running on the same node and this node fails, Prometheus can send an alert about the | ||||||
|  | failure of the node or that the postgres-exporter cannot be reached. However, it is not possible to react based on the | ||||||
|  | metrics that the postgres-exporter explicitly provides. Depending on the configuration of alerts, this may mean that the | ||||||
|  | corresponding notifications are not sent to the right person or group of people. | ||||||
|  |  | ||||||
|  | The following example prevent the postgres-exporter from running on nodes with a PostgresDB. The PostgresDB nodes has an | ||||||
|  | additional label `database=postgres`. The configuration is carried out in `values.yaml`. | ||||||
|  |  | ||||||
|  | ```yaml | ||||||
|  | deployment: | ||||||
|  |   affinity: | ||||||
|  |     nodeAffinity: | ||||||
|  |       preferredDuringSchedulingIgnoredDuringExecution: | ||||||
|  |       - weight: 100 | ||||||
|  |         preference: | ||||||
|  |           matchExpressions: | ||||||
|  |           - key: database | ||||||
|  |             operator: NotIn | ||||||
|  |             values: | ||||||
|  |             - postgres | ||||||
|  | ``` | ||||||
|  |  | ||||||
| ## Parameters | ## Parameters | ||||||
|  |  | ||||||
| ### Global | ### Global | ||||||
| @@ -126,32 +198,32 @@ replaced: | |||||||
|  |  | ||||||
| ### Configuration | ### Configuration | ||||||
|  |  | ||||||
| | Name                                              | Description                                                                                                                                       | Value   | | | Name                                              | Description                                                                                                                                                                            | Value   | | ||||||
| | ------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | | | ------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | | ||||||
| | `config.database.existingSecret.enabled`          | Mount an existing secret containing the application specific `DATA_SOURCE_` prefixed environment variables.                                       | `false` | | | `config.database.existingSecret.enabled`          | Mount an existing secret containing the application specific `DATA_SOURCE_` prefixed environment variables.                                                                            | `false` | | ||||||
| | `config.database.existingSecret.secretName`       | Name of the existing secret containing the application specific `DATA_SOURCE_` prefixed environment variables.                                    | `""`    | | | `config.database.existingSecret.secretName`       | Name of the existing secret containing the application specific `DATA_SOURCE_` prefixed environment variables.                                                                         | `""`    | | ||||||
| | `config.database.secret.annotations`              | Additional annotations of the secret containing the database credentials.                                                                         | `{}`    | | | `config.database.secret.annotations`              | Additional annotations of the secret containing the database credentials.                                                                                                              | `{}`    | | ||||||
| | `config.database.secret.labels`                   | Additional labels of the secret containing the database credentials.                                                                              | `{}`    | | | `config.database.secret.labels`                   | Additional labels of the secret containing the database credentials.                                                                                                                   | `{}`    | | ||||||
| | `config.database.secret.databaseUsername`         | Database username. Will be defined as env `DATA_SOURCE_USER` as part of a secret.                                                                 | `""`    | | | `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.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.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.enabled`    | Mount an existing secret containing the key `exporterConfig.yaml`.                                                                                                                     | `false` | | ||||||
| | `config.exporterConfig.existingSecret.secretName` | Name of the existing secret containing the key `exporter_config.yaml`.                                                                            | `""`    | | | `config.exporterConfig.existingSecret.secretName` | Name of the existing secret containing the key `exporterConfig.yaml`.                                                                                                                  | `""`    | | ||||||
| | `config.exporterConfig.secret.annotations`        | Additional annotations of the secret containing the `exporterConfig.yaml`.                                                                        | `{}`    | | | `config.exporterConfig.secret.annotations`        | Additional annotations of the secret containing the `exporterConfig.yaml`.                                                                                                             | `{}`    | | ||||||
| | `config.exporterConfig.secret.labels`             | Additional labels of the secret containing the `exporterConfig.yaml`.                                                                             | `{}`    | | | `config.exporterConfig.secret.labels`             | Additional labels of the secret containing the `exporterConfig.yaml`.                                                                                                                  | `{}`    | | ||||||
| | `config.exporterConfig.secret.exporterConfig`     | Content of the `exporterConfig.yaml`. Further information can be found [here](https://prometheus.io/docs/prometheus/latest/configuration/https/). | `{}`    | | | `config.exporterConfig.secret.exporterConfig`     | Content of the `exporterConfig.yaml`. Further information can be found [here](https://github.com/prometheus-community/postgres_exporter?tab=readme-ov-file#multi-target-support-beta). | `{}`    | | ||||||
| | `config.webConfig.existingSecret.enabled`         | Mount an existing secret containing the key `webConfig.yaml`.                                                                                     | `false` | | | `config.webConfig.existingSecret.enabled`         | Mount an existing secret containing the key `webConfig.yaml`.                                                                                                                          | `false` | | ||||||
| | `config.webConfig.existingSecret.secretName`      | Name of the existing secret containing the key `webConfig.yaml`.                                                                                  | `""`    | | | `config.webConfig.existingSecret.secretName`      | Name of the existing secret containing the key `webConfig.yaml`.                                                                                                                       | `""`    | | ||||||
| | `config.webConfig.secret.annotations`             | Additional annotations of the secret containing the `webConfig.yaml`.                                                                             | `{}`    | | | `config.webConfig.secret.annotations`             | Additional annotations of the secret containing the `webConfig.yaml`.                                                                                                                  | `{}`    | | ||||||
| | `config.webConfig.secret.labels`                  | Additional labels of the secret containing the `webConfig.yaml`.                                                                                  | `{}`    | | | `config.webConfig.secret.labels`                  | Additional labels of the secret containing the `webConfig.yaml`.                                                                                                                       | `{}`    | | ||||||
| | `config.webConfig.secret.webConfig`               | Content of the `webConfig.yaml`. Further information can be found [here](https://prometheus.io/docs/prometheus/latest/configuration/https/).      | `{}`    | | | `config.webConfig.secret.webConfig`               | Content of the `webConfig.yaml`. Further information can be found [here](https://prometheus.io/docs/prometheus/latest/configuration/https/).                                           | `{}`    | | ||||||
|  |  | ||||||
| ### Deployment | ### Deployment | ||||||
|  |  | ||||||
| | Name                                               | Description                                                                                                | Value                                   | | | Name                                               | Description                                                                                                | Value                                   | | ||||||
| | -------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | --------------------------------------- | | | -------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | --------------------------------------- | | ||||||
| | `deployment.annotations`                           | Additional deployment annotations.                                                                         | `{}`                                    | | | `deployment.annotations`                           | Additional deployment annotations.                                                                         | `{}`                                    | | ||||||
| | `deployment.labels`                                | Additional ingress labels.                                                                                 | `{}`                                    | | | `deployment.labels`                                | Additional deployment labels.                                                                              | `{}`                                    | | ||||||
| | `deployment.additionalContainers`                  | List of additional containers.                                                                             | `[]`                                    | | | `deployment.additionalContainers`                  | List of additional containers.                                                                             | `[]`                                    | | ||||||
| | `deployment.affinity`                              | Affinity for the postgres-exporter deployment.                                                             | `{}`                                    | | | `deployment.affinity`                              | Affinity for the postgres-exporter deployment.                                                             | `{}`                                    | | ||||||
| | `deployment.initContainers`                        | List of additional init containers.                                                                        | `[]`                                    | | | `deployment.initContainers`                        | List of additional init containers.                                                                        | `[]`                                    | | ||||||
| @@ -170,10 +242,11 @@ replaced: | |||||||
| | `deployment.postgresExporter.image.pullPolicy`     | Image pull policy.                                                                                         | `IfNotPresent`                          | | | `deployment.postgresExporter.image.pullPolicy`     | Image pull policy.                                                                                         | `IfNotPresent`                          | | ||||||
| | `deployment.postgresExporter.resources`            | CPU and memory resources of the pod.                                                                       | `{}`                                    | | | `deployment.postgresExporter.resources`            | CPU and memory resources of the pod.                                                                       | `{}`                                    | | ||||||
| | `deployment.postgresExporter.securityContext`      | Security context of the container of the deployment.                                                       | `{}`                                    | | | `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.nodeSelector`                          | NodeSelector of the postgres-exporter deployment.                                                          | `{}`                                    | | ||||||
| | `deployment.priorityClassName`                     | PriorityClassName of the postgres-exporter deployment.                                                     | `""`                                    | | | `deployment.priorityClassName`                     | PriorityClassName of the postgres-exporter deployment.                                                     | `""`                                    | | ||||||
| | `deployment.replicaCount`                          | Number of replicas for the postgres-exporter deployment.                                                   | `1`                                     | | | `deployment.replicas`                              | Number of replicas for the postgres-exporter deployment.                                                   | `1`                                     | | ||||||
|  | | `deployment.restartPolicy`                         | Restart policy of the postgres-exporter deployment.                                                        | `""`                                    | | ||||||
| | `deployment.securityContext`                       | Security context of the postgres-exporter deployment.                                                      | `{}`                                    | | | `deployment.securityContext`                       | Security context of the postgres-exporter deployment.                                                      | `{}`                                    | | ||||||
| | `deployment.strategy.type`                         | Strategy type - `Recreate` or `Rollingupdate`.                                                             | `Recreate`                              | | | `deployment.strategy.type`                         | Strategy type - `Recreate` or `Rollingupdate`.                                                             | `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`                                     | | | `deployment.strategy.rollingUpdate.maxSurge`       | The maximum number of pods that can be scheduled above the desired number of pods during a rolling update. | `1`                                     | | ||||||
| @@ -181,14 +254,17 @@ replaced: | |||||||
| | `deployment.terminationGracePeriodSeconds`         | How long to wait until forcefully kill the pod.                                                            | `60`                                    | | | `deployment.terminationGracePeriodSeconds`         | How long to wait until forcefully kill the pod.                                                            | `60`                                    | | ||||||
| | `deployment.tolerations`                           | Tolerations of the postgres-exporter deployment.                                                           | `[]`                                    | | | `deployment.tolerations`                           | Tolerations of the postgres-exporter deployment.                                                           | `[]`                                    | | ||||||
| | `deployment.topologySpreadConstraints`             | TopologySpreadConstraints of the postgres-exporter deployment.                                             | `[]`                                    | | | `deployment.topologySpreadConstraints`             | TopologySpreadConstraints of the postgres-exporter deployment.                                             | `[]`                                    | | ||||||
| | `deployment.volumes`                               | Additional volumes to mount into the pods of the Prometheus-exporter deployment.                           | `[]`                                    | | | `deployment.volumes`                               | Additional volumes to mount into the pods of the prometheus-exporter deployment.                           | `[]`                                    | | ||||||
|  |  | ||||||
| ### Grafana | ### Grafana | ||||||
|  |  | ||||||
| | Name                                 | Description                                               | Value   | | | Name                                              | Description                                                                                              | Value       | | ||||||
| | ------------------------------------ | --------------------------------------------------------- | ------- | | | ------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | ----------- | | ||||||
| | `grafana.enabled`                    | Enable integration into Grafana.                          | `false` | | | `grafana.enabled`                                 | Enable integration into Grafana. Require the Prometheus operator deployment.                             | `false`     | | ||||||
| | `grafana.dashboards.businessMetrics` | Enable deployment of Grafana dashboard `businessMetrics`. | `true`  | | | `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 | ### Ingress | ||||||
|  |  | ||||||
| @@ -220,7 +296,7 @@ replaced: | |||||||
| | `prometheus.metrics.enabled`                        | Enable of scraping metrics by Prometheus.                                                                                                    | `true`     | | | `prometheus.metrics.enabled`                        | Enable of scraping metrics by Prometheus.                                                                                                    | `true`     | | ||||||
| | `prometheus.metrics.podMonitor.enabled`             | Enable creation of a podMonitor. Excludes the existence of a serviceMonitor resource.                                                        | `false`    | | | `prometheus.metrics.podMonitor.enabled`             | Enable creation of a podMonitor. Excludes the existence of a serviceMonitor resource.                                                        | `false`    | | ||||||
| | `prometheus.metrics.podMonitor.annotations`         | Additional podMonitor annotations.                                                                                                           | `{}`       | | | `prometheus.metrics.podMonitor.annotations`         | Additional podMonitor annotations.                                                                                                           | `{}`       | | ||||||
| | `prometheus.metrics.podMonitor.enableHttp2`         | Enable HTTP2.                                                                                                                                | `false`    | | | `prometheus.metrics.podMonitor.enableHttp2`         | Enable HTTP2.                                                                                                                                | `true`     | | ||||||
| | `prometheus.metrics.podMonitor.followRedirects`     | FollowRedirects configures whether scrape requests follow HTTP 3xx redirects.                                                                | `false`    | | | `prometheus.metrics.podMonitor.followRedirects`     | FollowRedirects configures whether scrape requests follow HTTP 3xx redirects.                                                                | `false`    | | ||||||
| | `prometheus.metrics.podMonitor.honorLabels`         | Honor labels.                                                                                                                                | `false`    | | | `prometheus.metrics.podMonitor.honorLabels`         | Honor labels.                                                                                                                                | `false`    | | ||||||
| | `prometheus.metrics.podMonitor.labels`              | Additional podMonitor labels.                                                                                                                | `{}`       | | | `prometheus.metrics.podMonitor.labels`              | Additional podMonitor labels.                                                                                                                | `{}`       | | ||||||
| @@ -233,12 +309,11 @@ replaced: | |||||||
| | `prometheus.metrics.serviceMonitor.enabled`         | Enable creation of a serviceMonitor. Excludes the existence of a podMonitor resource.                                                        | `false`    | | | `prometheus.metrics.serviceMonitor.enabled`         | Enable creation of a serviceMonitor. Excludes the existence of a podMonitor resource.                                                        | `false`    | | ||||||
| | `prometheus.metrics.serviceMonitor.annotations`     | Additional serviceMonitor annotations.                                                                                                       | `{}`       | | | `prometheus.metrics.serviceMonitor.annotations`     | Additional serviceMonitor annotations.                                                                                                       | `{}`       | | ||||||
| | `prometheus.metrics.serviceMonitor.labels`          | Additional serviceMonitor labels.                                                                                                            | `{}`       | | | `prometheus.metrics.serviceMonitor.labels`          | Additional serviceMonitor labels.                                                                                                            | `{}`       | | ||||||
| | `prometheus.metrics.serviceMonitor.enableHttp2`     | Enable HTTP2.                                                                                                                                | `false`    | | | `prometheus.metrics.serviceMonitor.enableHttp2`     | Enable HTTP2.                                                                                                                                | `true`     | | ||||||
| | `prometheus.metrics.serviceMonitor.followRedirects` | FollowRedirects configures whether scrape requests follow HTTP 3xx redirects.                                                                | `false`    | | | `prometheus.metrics.serviceMonitor.followRedirects` | FollowRedirects configures whether scrape requests follow HTTP 3xx redirects.                                                                | `false`    | | ||||||
| | `prometheus.metrics.serviceMonitor.honorLabels`     | Honor labels.                                                                                                                                | `false`    | | | `prometheus.metrics.serviceMonitor.honorLabels`     | Honor labels.                                                                                                                                | `false`    | | ||||||
| | `prometheus.metrics.serviceMonitor.interval`        | Interval at which metrics should be scraped. If not specified Prometheus' global scrape interval is used.                                    | `60s`      | | | `prometheus.metrics.serviceMonitor.interval`        | Interval at which metrics should be scraped. If not specified Prometheus' global scrape interval is used.                                    | `60s`      | | ||||||
| | `prometheus.metrics.serviceMonitor.path`            | HTTP path for scraping Prometheus metrics.                                                                                                   | `/metrics` | | | `prometheus.metrics.serviceMonitor.path`            | HTTP path for scraping Prometheus metrics.                                                                                                   | `/metrics` | | ||||||
| | `prometheus.metrics.serviceMonitor.port`            | HTTP port for scraping Prometheus metrics.                                                                                                   | `9187`     | |  | ||||||
| | `prometheus.metrics.serviceMonitor.relabelings`     | RelabelConfigs to apply to samples before scraping. Prometheus Operator automatically adds relabelings for a few standard Kubernetes fields. | `[]`       | | | `prometheus.metrics.serviceMonitor.relabelings`     | RelabelConfigs to apply to samples before scraping. Prometheus Operator automatically adds relabelings for a few standard Kubernetes fields. | `[]`       | | ||||||
| | `prometheus.metrics.serviceMonitor.scrapeTimeout`   | Timeout after which the scrape is ended. If not specified, global Prometheus scrape timeout is used.                                         | `30s`      | | | `prometheus.metrics.serviceMonitor.scrapeTimeout`   | Timeout after which the scrape is ended. If not specified, global Prometheus scrape timeout is used.                                         | `30s`      | | ||||||
| | `prometheus.metrics.serviceMonitor.scheme`          | HTTP scheme to use for scraping. For example `http` or `https`.                                                                              | `http`     | | | `prometheus.metrics.serviceMonitor.scheme`          | HTTP scheme to use for scraping. For example `http` or `https`.                                                                              | `http`     | | ||||||
|   | |||||||
							
								
								
									
										1111
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										1111
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -1,6 +1,6 @@ | |||||||
| { | { | ||||||
|   "name": "qu-seed-chart", |   "name": "prometheus-postgres-exporter", | ||||||
|   "homepage": "https://github.com/dedalus-cis4u/qu-seed-chart.git", |   "homepage": "https://git.cryptic.systems/volker.raschek/prometheus-postgres-exporter.git", | ||||||
|   "license": "MIT", |   "license": "MIT", | ||||||
|   "private": true, |   "private": true, | ||||||
|   "engineStrict": true, |   "engineStrict": true, | ||||||
| @@ -9,11 +9,13 @@ | |||||||
|     "npm": ">=8.0.0" |     "npm": ">=8.0.0" | ||||||
|   }, |   }, | ||||||
|   "scripts": { |   "scripts": { | ||||||
|  |     "readme:link": "markdown-link-check *.md", | ||||||
|     "readme:lint": "markdownlint *.md -f", |     "readme:lint": "markdownlint *.md -f", | ||||||
|     "readme:parameters": "readme-generator -v values.yaml -r README.md" |     "readme:parameters": "readme-generator -v values.yaml -r README.md" | ||||||
|   }, |   }, | ||||||
|   "devDependencies": { |   "devDependencies": { | ||||||
|     "@bitnami/readme-generator-for-helm": "^2.5.0", |     "@bitnami/readme-generator-for-helm": "^2.5.0", | ||||||
|     "markdownlint-cli": "^0.41.0" |     "markdown-link-check": "^3.13.6", | ||||||
|  |     "markdownlint-cli": "^0.43.0" | ||||||
|   } |   } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -11,24 +11,56 @@ | |||||||
|         "appVersion: \"(?<currentValue>.*?)\"\\s+" |         "appVersion: \"(?<currentValue>.*?)\"\\s+" | ||||||
|       ], |       ], | ||||||
|       "datasourceTemplate": "docker", |       "datasourceTemplate": "docker", | ||||||
|       "depNameTemplate": "prometheus-postgres-exporter", |       "depNameTemplate": "prometheuscommunity/postgres-exporter", | ||||||
|       "lookupNameTemplate": "quay.io/prometheuscommunity/postgres-exporter" |       "lookupNameTemplate": "quay.io/prometheuscommunity/postgres-exporter", | ||||||
|  |       "versioningTemplate": "semver" | ||||||
|  |     }, | ||||||
|  |     { | ||||||
|  |       "description": "Detect helm chart version in README", | ||||||
|  |       "fileMatch": ["^README\\.md$"], | ||||||
|  |       "matchStrings": [ | ||||||
|  |         "^CHART_VERSION=(?<currentValue>.*)$" | ||||||
|  |       ], | ||||||
|  |       "datasourceTemplate": "git-tags", | ||||||
|  |       "depNameTemplate": "volker.raschek/prometheus-postgres-exporter", | ||||||
|  |       "packageNameTemplate": "https://git.cryptic.systems/volker.raschek/prometheus-postgres-exporter", | ||||||
|  |       "versioningTemplate": "semver" | ||||||
|     } |     } | ||||||
|   ], |   ], | ||||||
|   "labels": [ "renovate" ], |   "labels": [ "renovate" ], | ||||||
|   "packageRules": [ |   "packageRules": [ | ||||||
|     { |     { | ||||||
|       "addLabels": [ "renovate/droneci", "renovate/automerge" ], |       "addLabels": [ "renovate/automerge", "renovate/npm" ], | ||||||
|       "automerge": true, |       "automerge": true, | ||||||
|       "matchManagers": "droneci", |       "matchPackageNames": [ "markdownlint-cli", "@bitnami/readme-generator-for-helm" ], | ||||||
|  |       "matchManagers": [ "npm" ], | ||||||
|       "matchUpdateTypes": [ "minor", "patch"] |       "matchUpdateTypes": [ "minor", "patch"] | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "addLabels": [ "renovate/prometheus-postgres-exporter", "renovate/automerge" ], |       "addLabels": [ "renovate/automerge", "renovate/container" ], | ||||||
|       "automerge": true, |       "automerge": true, | ||||||
|       "matchPackageNames": [ "prometheus-postgres-exporter" ], |       "excludePackagePatterns": [ | ||||||
|       "matchManagers": [ "regex" ], |         "prometheuscommunity/postgres-exporter" | ||||||
|       "matchUpdateTypes": [ "minor", "patch"] |       ], | ||||||
|  |       "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", |   "rebaseLabel": "renovate/rebase", | ||||||
|   | |||||||
							
								
								
									
										20
									
								
								templates/prometheus-postgres-exporter/_configMap.tpl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								templates/prometheus-postgres-exporter/_configMap.tpl
									
									
									
									
									
										Normal 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 }} | ||||||
| @@ -9,6 +9,17 @@ | |||||||
| {{- end }} | {{- end }} | ||||||
| {{- end }} | {{- end }} | ||||||
|  |  | ||||||
|  | {{/* env */}} | ||||||
|  |  | ||||||
|  | {{- define "prometheus-postgres-exporter.deployment.env" -}} | ||||||
|  | {{- $env := dict "env" (.Values.deployment.postgresExporter.env | default (list) ) }} | ||||||
|  | {{- if and (hasKey .Values.deployment.postgresExporter.resources "limits") (hasKey .Values.deployment.postgresExporter.resources.limits "cpu") }} | ||||||
|  | {{- $env = merge $env (dict "env" (list (dict "name" "GOMAXPROCS" "valueFrom" (dict "resourceFieldRef" (dict "resource" "limits.cpu"))))) }} | ||||||
|  | {{- end }} | ||||||
|  | {{ toYaml $env }} | ||||||
|  | {{- end -}} | ||||||
|  |  | ||||||
|  |  | ||||||
| {{/* envFrom */}} | {{/* envFrom */}} | ||||||
|  |  | ||||||
| {{- define "prometheus-postgres-exporter.deployment.envFrom" -}} | {{- define "prometheus-postgres-exporter.deployment.envFrom" -}} | ||||||
| @@ -52,19 +63,28 @@ | |||||||
| {{/* volumeMounts */}} | {{/* volumeMounts */}} | ||||||
|  |  | ||||||
| {{- define "prometheus-postgres-exporter.deployment.volumeMounts" -}} | {{- define "prometheus-postgres-exporter.deployment.volumeMounts" -}} | ||||||
| {{- $volumeMounts := dict "volumeMounts" (.Values.deployment.postgresExporter.volumeMounts | default (list) ) }} | {{- $volumeMounts := .Values.deployment.postgresExporter.volumeMounts | default list  }} | ||||||
| {{- $volumeMounts = merge $volumeMounts (dict "volumeMounts" (list (dict "name" "exporter-config" "mountPath" "/etc/prometheus-postgres-exporter/config.d" ))) }} | {{- $volumeMounts = concat $volumeMounts (list (dict "name" "config-d" "mountPath" "/etc/prometheus-postgres-exporter/config.d" )) }} | ||||||
| {{ toYaml $volumeMounts }} | {{ toYaml (dict "volumeMounts" $volumeMounts) }} | ||||||
| {{- end -}} | {{- end -}} | ||||||
|  |  | ||||||
| {{/* volumes */}} | {{/* volumes */}} | ||||||
|  |  | ||||||
| {{- define "prometheus-postgres-exporter.deployment.volumes" -}} | {{- define "prometheus-postgres-exporter.deployment.volumes" -}} | ||||||
| {{- $volumes := dict "volumes" (.Values.deployment.volumes | default (list) ) }} | {{- $volumes := .Values.deployment.volumes | default list }} | ||||||
| {{- $secretName := .Values.config.exporterConfig.existingSecret.secretName -}} |  | ||||||
|  | {{- $exporterSecretName := .Values.config.exporterConfig.existingSecret.secretName -}} | ||||||
| {{- if not .Values.config.exporterConfig.existingSecret.enabled }} | {{- 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 }} | {{- 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 -}} | {{- end -}} | ||||||
| @@ -13,5 +13,5 @@ | |||||||
| {{- end }} | {{- end }} | ||||||
|  |  | ||||||
| {{- define "prometheus-postgres-exporter.pod.selectorLabels" -}} | {{- define "prometheus-postgres-exporter.pod.selectorLabels" -}} | ||||||
| {{ include "prometheus-postgres-exporter.pod.labels" . }} | {{ include "prometheus-postgres-exporter.selectorLabels" . }} | ||||||
| {{- end }} | {{- end }} | ||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -12,6 +12,7 @@ metadata: | |||||||
|   name: {{ include "prometheus-postgres-exporter.fullname" . }} |   name: {{ include "prometheus-postgres-exporter.fullname" . }} | ||||||
|   namespace: {{ .Release.Namespace }} |   namespace: {{ .Release.Namespace }} | ||||||
| spec: | spec: | ||||||
|  |   replicas: {{ .Values.deployment.replicas }} | ||||||
|   selector: |   selector: | ||||||
|     matchLabels: |     matchLabels: | ||||||
|       {{- include "prometheus-postgres-exporter.pod.selectorLabels" . | nindent 6 }} |       {{- include "prometheus-postgres-exporter.pod.selectorLabels" . | nindent 6 }} | ||||||
| @@ -20,17 +21,23 @@ spec: | |||||||
|       labels: |       labels: | ||||||
|         {{- include "prometheus-postgres-exporter.pod.labels" . | nindent 8 }} |         {{- include "prometheus-postgres-exporter.pod.labels" . | nindent 8 }} | ||||||
|     spec: |     spec: | ||||||
|  |       {{- with .Values.deployment.affinity }} | ||||||
|  |       affinity: | ||||||
|  |         {{- toYaml . | nindent 8 }} | ||||||
|  |       {{- end }} | ||||||
|       containers: |       containers: | ||||||
|       - name: postgres-exporter |       - name: postgres-exporter | ||||||
|         args: |         args: | ||||||
|         - "--config.file=/etc/prometheus-postgres-exporter/config.d/exporterConfig.yaml" |         - "--config.file=/etc/prometheus-postgres-exporter/config.d/exporterConfig.yaml" | ||||||
|  |         - "--web.config.file=/etc/prometheus-postgres-exporter/config.d/webConfig.yaml" | ||||||
|         - "--web.listen-address=:9187" |         - "--web.listen-address=:9187" | ||||||
|         {{- range .Values.deployment.postgresExporter.args }} |         {{- range .Values.deployment.postgresExporter.args }} | ||||||
|         - {{ . | quote }} |         - {{ . | quote }} | ||||||
|         {{- end }} |         {{- end }} | ||||||
|         {{- with .Values.deployment.postgresExporter.env }} |         {{- $env := (include "prometheus-postgres-exporter.deployment.env" . | fromYaml) }} | ||||||
|  |         {{- if and (hasKey $env "env") (gt (len $env.env) 0) }} | ||||||
|         env: |         env: | ||||||
|         {{- toYaml . | nindent 8 }} |         {{- toYaml $env.env | nindent 8 }} | ||||||
|         {{- end }} |         {{- end }} | ||||||
|         {{- $envFrom := (include "prometheus-postgres-exporter.deployment.envFrom" . | fromYaml) }} |         {{- $envFrom := (include "prometheus-postgres-exporter.deployment.envFrom" . | fromYaml) }} | ||||||
|         {{- if hasKey $envFrom "envFrom" }} |         {{- if hasKey $envFrom "envFrom" }} | ||||||
| @@ -59,7 +66,7 @@ spec: | |||||||
|         - name: http |         - name: http | ||||||
|           containerPort: 9187 |           containerPort: 9187 | ||||||
|           protocol: TCP |           protocol: TCP | ||||||
|         {{- with .Values.deployment.containerResources }} |         {{- with .Values.deployment.postgresExporter.resources }} | ||||||
|         resources: |         resources: | ||||||
|           {{- toYaml . | nindent 10 }} |           {{- toYaml . | nindent 10 }} | ||||||
|         {{- end }} |         {{- end }} | ||||||
| @@ -80,7 +87,7 @@ spec: | |||||||
|       dnsPolicy: {{ .Values.deployment.dnsPolicy }} |       dnsPolicy: {{ .Values.deployment.dnsPolicy }} | ||||||
|       {{- end }} |       {{- end }} | ||||||
|       {{- if .Values.deployment.hostname }} |       {{- if .Values.deployment.hostname }} | ||||||
|       hostname: {{ .Values.batch.dbUpdate.hostname }} |       hostname: {{ .Values.deployment.hostname }} | ||||||
|       {{- end }} |       {{- end }} | ||||||
|       hostNetwork: {{ .Values.deployment.hostNetwork }} |       hostNetwork: {{ .Values.deployment.hostNetwork }} | ||||||
|       {{- with .Values.deployment.imagePullSecrets }} |       {{- with .Values.deployment.imagePullSecrets }} | ||||||
| @@ -94,7 +101,9 @@ spec: | |||||||
|       {{- if .Values.deployment.priorityClassName }} |       {{- if .Values.deployment.priorityClassName }} | ||||||
|       priorityClassName: {{ .Values.deployment.priorityClassName }} |       priorityClassName: {{ .Values.deployment.priorityClassName }} | ||||||
|       {{- end }} |       {{- end }} | ||||||
|  |       {{- if .Values.deployment.restartPolicy }} | ||||||
|       restartPolicy: {{ .Values.deployment.restartPolicy }} |       restartPolicy: {{ .Values.deployment.restartPolicy }} | ||||||
|  |       {{- end }} | ||||||
|       {{- with .Values.deployment.securityContext }} |       {{- with .Values.deployment.securityContext }} | ||||||
|       securityContext: |       securityContext: | ||||||
|         {{- toYaml . | nindent 8 }} |         {{- toYaml . | nindent 8 }} | ||||||
|   | |||||||
| @@ -16,7 +16,7 @@ metadata: | |||||||
| spec: | spec: | ||||||
| {{- with .Values.prometheus.rules }} | {{- with .Values.prometheus.rules }} | ||||||
|   groups: |   groups: | ||||||
|   - name: {{ template "prometheus-postgres-exporter.name" $ }} |   - name: {{ template "prometheus-postgres-exporter.fullname" $ }} | ||||||
|     rules: |     rules: | ||||||
|     {{ toYaml . | nindent 4 }} |     {{ toYaml . | nindent 4 }} | ||||||
| {{- end }} | {{- end }} | ||||||
|   | |||||||
| @@ -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 | apiVersion: v1 | ||||||
| kind: Secret | kind: Secret | ||||||
| @@ -11,7 +11,7 @@ metadata: | |||||||
|   labels: |   labels: | ||||||
|     {{- toYaml . | nindent 4 }} |     {{- toYaml . | nindent 4 }} | ||||||
|   {{- end }} |   {{- end }} | ||||||
|   name: {{ include "prometheus-postgres-exporter.fullname" . }}-webconfig |   name: {{ include "prometheus-postgres-exporter.fullname" . }}-web-config | ||||||
|   namespace: {{ .Release.Namespace }} |   namespace: {{ .Release.Namespace }} | ||||||
| stringData: | stringData: | ||||||
|   webConfig.yaml: | |   webConfig.yaml: | | ||||||
|   | |||||||
| @@ -25,8 +25,8 @@ spec: | |||||||
|       {{- toYaml . | nindent 6 }} |       {{- toYaml . | nindent 6 }} | ||||||
|     {{- end }} |     {{- end }} | ||||||
|     scrapeTimeout: {{ required "The scrape timeout of the serviceMonitor is not defined!" .Values.prometheus.metrics.serviceMonitor.scrapeTimeout }} |     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}} |     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 }} |     targetPort: {{ required "The port of the service is not defined!" .Values.services.http.port }} | ||||||
|     {{- with .Values.prometheus.metrics.serviceMonitor.tlsConfig }} |     {{- with .Values.prometheus.metrics.serviceMonitor.tlsConfig }} | ||||||
|     tlsConfig: |     tlsConfig: | ||||||
|       {{- toYaml . | nindent 6 }} |       {{- toYaml . | nindent 6 }} | ||||||
|   | |||||||
							
								
								
									
										79
									
								
								unittests/configMaps/grafanaDashboardPostgresExporter.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										79
									
								
								unittests/configMaps/grafanaDashboardPostgresExporter.yaml
									
									
									
									
									
										Normal 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 | ||||||
| @@ -27,13 +27,142 @@ tests: | |||||||
|         app.kubernetes.io/name: prometheus-postgres-exporter |         app.kubernetes.io/name: prometheus-postgres-exporter | ||||||
|         app.kubernetes.io/version: 0.1.0 |         app.kubernetes.io/version: 0.1.0 | ||||||
|         helm.sh/chart: prometheus-postgres-exporter-0.1.0 |         helm.sh/chart: prometheus-postgres-exporter-0.1.0 | ||||||
|  |   - equal: | ||||||
|  |       path: spec.replicas | ||||||
|  |       value: 1 | ||||||
|  |   - notExists: | ||||||
|  |       path: spec.template.spec.affinity | ||||||
|   - contains: |   - contains: | ||||||
|       path: spec.template.spec.containers[0].envFrom |       path: spec.template.spec.containers[0].envFrom | ||||||
|       content: |       content: | ||||||
|         secretRef: |         secretRef: | ||||||
|           name: prometheus-postgres-exporter-unittest-database-env |           name: prometheus-postgres-exporter-unittest-database-env | ||||||
|  |   - 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 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: | ||||||
|  |     - "--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: |   set: | ||||||
|     config.database.existingSecret.enabled: true |     config.database.existingSecret.enabled: true | ||||||
|     config.database.existingSecret.secretName: custom-database-secret |     config.database.existingSecret.secretName: custom-database-secret | ||||||
| @@ -43,3 +172,250 @@ tests: | |||||||
|       content: |       content: | ||||||
|         secretRef: |         secretRef: | ||||||
|           name: custom-database-secret |           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].env | ||||||
|  |       value: | ||||||
|  |       - name: GOMAXPROCS | ||||||
|  |         valueFrom: | ||||||
|  |           resourceFieldRef: | ||||||
|  |             resource: limits.cpu | ||||||
|  |   - 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 | ||||||
| @@ -58,7 +58,7 @@ tests: | |||||||
|         helm.sh/chart: prometheus-postgres-exporter-0.1.0 |         helm.sh/chart: prometheus-postgres-exporter-0.1.0 | ||||||
|   - equal: |   - equal: | ||||||
|       path: spec.podMetricsEndpoints[0].enableHttp2 |       path: spec.podMetricsEndpoints[0].enableHttp2 | ||||||
|       value: false |       value: true | ||||||
|   - equal: |   - equal: | ||||||
|       path: spec.podMetricsEndpoints[0].followRedirects |       path: spec.podMetricsEndpoints[0].followRedirects | ||||||
|       value: false |       value: false | ||||||
| @@ -90,10 +90,7 @@ tests: | |||||||
|       path: spec.selector.matchLabels |       path: spec.selector.matchLabels | ||||||
|       value: |       value: | ||||||
|         app.kubernetes.io/instance: prometheus-postgres-exporter-unittest |         app.kubernetes.io/instance: prometheus-postgres-exporter-unittest | ||||||
|         app.kubernetes.io/managed-by: Helm |  | ||||||
|         app.kubernetes.io/name: prometheus-postgres-exporter |         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. | - it: Render podMonitor with custom annotations and labels. | ||||||
|   set: |   set: | ||||||
| @@ -122,7 +119,7 @@ tests: | |||||||
|   set: |   set: | ||||||
|     prometheus.metrics.enabled: true |     prometheus.metrics.enabled: true | ||||||
|     prometheus.metrics.podMonitor.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.followRedirects: true | ||||||
|     prometheus.metrics.podMonitor.honorLabels: true |     prometheus.metrics.podMonitor.honorLabels: true | ||||||
|     prometheus.metrics.podMonitor.interval: "180s" |     prometheus.metrics.podMonitor.interval: "180s" | ||||||
| @@ -140,7 +137,7 @@ tests: | |||||||
|       count: 1 |       count: 1 | ||||||
|   - equal: |   - equal: | ||||||
|       path: spec.podMetricsEndpoints[0].enableHttp2 |       path: spec.podMetricsEndpoints[0].enableHttp2 | ||||||
|       value: true |       value: false | ||||||
|   - equal: |   - equal: | ||||||
|       path: spec.podMetricsEndpoints[0].followRedirects |       path: spec.podMetricsEndpoints[0].followRedirects | ||||||
|       value: true |       value: true | ||||||
|   | |||||||
| @@ -8,34 +8,14 @@ release: | |||||||
| templates: | templates: | ||||||
| - templates/prometheus-postgres-exporter/secretWebConfig.yaml | - templates/prometheus-postgres-exporter/secretWebConfig.yaml | ||||||
| tests: | tests: | ||||||
| - it: Skip rendering by using existing secret. | - it: Rendering default 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 |  | ||||||
|   asserts: |   asserts: | ||||||
|   - hasDocuments: |   - hasDocuments: | ||||||
|       count: 1 |       count: 1 | ||||||
|   - containsDocument: |   - containsDocument: | ||||||
|       apiVersion: v1 |       apiVersion: v1 | ||||||
|       kind: Secret |       kind: Secret | ||||||
|       name: prometheus-postgres-exporter-unittest-webconfig |       name: prometheus-postgres-exporter-unittest-web-config | ||||||
|       namespace: testing |       namespace: testing | ||||||
|   - notExists: |   - notExists: | ||||||
|       path: metadata.annotations |       path: metadata.annotations | ||||||
| @@ -47,6 +27,19 @@ tests: | |||||||
|         app.kubernetes.io/name: prometheus-postgres-exporter |         app.kubernetes.io/name: prometheus-postgres-exporter | ||||||
|         app.kubernetes.io/version: 0.1.0 |         app.kubernetes.io/version: 0.1.0 | ||||||
|         helm.sh/chart: prometheus-postgres-exporter-0.1.0 |         helm.sh/chart: prometheus-postgres-exporter-0.1.0 | ||||||
|  |   - 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: |   - equal: | ||||||
|       path: stringData["webConfig.yaml"] |       path: stringData["webConfig.yaml"] | ||||||
|       value: | |       value: | | ||||||
|   | |||||||
| @@ -59,7 +59,7 @@ tests: | |||||||
|         helm.sh/chart: prometheus-postgres-exporter-0.1.0 |         helm.sh/chart: prometheus-postgres-exporter-0.1.0 | ||||||
|   - equal: |   - equal: | ||||||
|       path: spec.endpoints[0].enableHttp2 |       path: spec.endpoints[0].enableHttp2 | ||||||
|       value: false |       value: true | ||||||
|   - equal: |   - equal: | ||||||
|       path: spec.endpoints[0].followRedirects |       path: spec.endpoints[0].followRedirects | ||||||
|       value: false |       value: false | ||||||
| @@ -121,7 +121,7 @@ tests: | |||||||
|   set: |   set: | ||||||
|     prometheus.metrics.enabled: true |     prometheus.metrics.enabled: true | ||||||
|     prometheus.metrics.serviceMonitor.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.followRedirects: true | ||||||
|     prometheus.metrics.serviceMonitor.honorLabels: true |     prometheus.metrics.serviceMonitor.honorLabels: true | ||||||
|     prometheus.metrics.serviceMonitor.interval: "180s" |     prometheus.metrics.serviceMonitor.interval: "180s" | ||||||
| @@ -134,13 +134,12 @@ tests: | |||||||
|       action: "drop" |       action: "drop" | ||||||
|     prometheus.metrics.serviceMonitor.scrapeTimeout: "5s" |     prometheus.metrics.serviceMonitor.scrapeTimeout: "5s" | ||||||
|     prometheus.metrics.serviceMonitor.scheme: "http" |     prometheus.metrics.serviceMonitor.scheme: "http" | ||||||
|     prometheus.metrics.serviceMonitor.port: 10443 |  | ||||||
|   asserts: |   asserts: | ||||||
|   - hasDocuments: |   - hasDocuments: | ||||||
|       count: 1 |       count: 1 | ||||||
|   - equal: |   - equal: | ||||||
|       path: spec.endpoints[0].enableHttp2 |       path: spec.endpoints[0].enableHttp2 | ||||||
|       value: true |       value: false | ||||||
|   - equal: |   - equal: | ||||||
|       path: spec.endpoints[0].followRedirects |       path: spec.endpoints[0].followRedirects | ||||||
|       value: true |       value: true | ||||||
| @@ -166,7 +165,4 @@ tests: | |||||||
|       value: 5s |       value: 5s | ||||||
|   - equal: |   - equal: | ||||||
|       path: spec.endpoints[0].scheme |       path: spec.endpoints[0].scheme | ||||||
|       value: http |       value: http | ||||||
|   - equal: |  | ||||||
|       path: spec.endpoints[0].targetPort |  | ||||||
|       value: 10443 |  | ||||||
| @@ -63,10 +63,7 @@ tests: | |||||||
|       path: spec.selector |       path: spec.selector | ||||||
|       value: |       value: | ||||||
|         app.kubernetes.io/instance: prometheus-postgres-exporter-unittest |         app.kubernetes.io/instance: prometheus-postgres-exporter-unittest | ||||||
|         app.kubernetes.io/managed-by: Helm |  | ||||||
|         app.kubernetes.io/name: prometheus-postgres-exporter |         app.kubernetes.io/name: prometheus-postgres-exporter | ||||||
|         app.kubernetes.io/version: 0.1.0 |  | ||||||
|         helm.sh/chart: prometheus-postgres-exporter-0.1.0 |  | ||||||
|   - equal: |   - equal: | ||||||
|       path: spec.sessionAffinity |       path: spec.sessionAffinity | ||||||
|       value: None |       value: None | ||||||
|   | |||||||
							
								
								
									
										700
									
								
								values.schema.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										700
									
								
								values.schema.json
									
									
									
									
									
										Normal 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" | ||||||
|  |   ] | ||||||
|  | } | ||||||
							
								
								
									
										71
									
								
								values.yaml
									
									
									
									
									
								
							
							
						
						
									
										71
									
								
								values.yaml
									
									
									
									
									
								
							| @@ -1,6 +1,3 @@ | |||||||
| # Default values for qu-seed. |  | ||||||
| # This is a YAML-formatted file. |  | ||||||
|  |  | ||||||
| # Declare variables to be passed into your templates. | # Declare variables to be passed into your templates. | ||||||
| ## @section Global | ## @section Global | ||||||
| ## @param nameOverride Individual release name suffix. | ## @param nameOverride Individual release name suffix. | ||||||
| @@ -30,15 +27,15 @@ config: | |||||||
|       databaseConnectionUrl: "" |       databaseConnectionUrl: "" | ||||||
|  |  | ||||||
|   exporterConfig: |   exporterConfig: | ||||||
|     ## @param config.exporterConfig.existingSecret.enabled Mount an 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 `exporter_config.yaml`. |     ## @param config.exporterConfig.existingSecret.secretName Name of the existing secret containing the key `exporterConfig.yaml`. | ||||||
|     existingSecret: |     existingSecret: | ||||||
|       enabled: false |       enabled: false | ||||||
|       secretName: "" |       secretName: "" | ||||||
|  |  | ||||||
|     ## @param config.exporterConfig.secret.annotations Additional annotations of the secret containing the `exporterConfig.yaml`. |     ## @param config.exporterConfig.secret.annotations Additional annotations of the secret containing the `exporterConfig.yaml`. | ||||||
|     ## @param config.exporterConfig.secret.labels Additional labels of the secret containing the `exporterConfig.yaml`. |     ## @param config.exporterConfig.secret.labels Additional labels of the secret containing the `exporterConfig.yaml`. | ||||||
|     ## @param config.exporterConfig.secret.exporterConfig Content of the `exporterConfig.yaml`. Further information can be found [here](https://prometheus.io/docs/prometheus/latest/configuration/https/). |     ## @param config.exporterConfig.secret.exporterConfig Content of the `exporterConfig.yaml`. Further information can be found [here](https://github.com/prometheus-community/postgres_exporter?tab=readme-ov-file#multi-target-support-beta). | ||||||
|     ## @skip config.exporterConfig.secret.exporterConfig Skip individual postgres exporter configuration. |     ## @skip config.exporterConfig.secret.exporterConfig Skip individual postgres exporter configuration. | ||||||
|     secret: |     secret: | ||||||
|       annotations: {} |       annotations: {} | ||||||
| @@ -84,7 +81,7 @@ config: | |||||||
| ## @section Deployment | ## @section Deployment | ||||||
| deployment: | deployment: | ||||||
|   ## @param deployment.annotations Additional deployment annotations. |   ## @param deployment.annotations Additional deployment annotations. | ||||||
|   ## @param deployment.labels Additional ingress labels. |   ## @param deployment.labels Additional deployment labels. | ||||||
|   annotations: {} |   annotations: {} | ||||||
|   labels: {} |   labels: {} | ||||||
|  |  | ||||||
| @@ -96,6 +93,22 @@ deployment: | |||||||
|  |  | ||||||
|   ## @param deployment.affinity Affinity for the postgres-exporter deployment. |   ## @param deployment.affinity Affinity for the postgres-exporter deployment. | ||||||
|   affinity: {} |   affinity: {} | ||||||
|  |     # nodeAffinity: | ||||||
|  |     #   requiredDuringSchedulingIgnoredDuringExecution: | ||||||
|  |     #     nodeSelectorTerms: | ||||||
|  |     #     - matchExpressions: | ||||||
|  |     #       - key: kubernetes.io/os | ||||||
|  |     #         operator: In | ||||||
|  |     #         values: | ||||||
|  |     #         - linux | ||||||
|  |     #   preferredDuringSchedulingIgnoredDuringExecution: | ||||||
|  |     #   - weight: 20 | ||||||
|  |     #     preference: | ||||||
|  |     #       matchExpressions: | ||||||
|  |     #       - key: kubernetes.io/arch | ||||||
|  |     #         operator: In | ||||||
|  |     #         values: | ||||||
|  |     #         - amd64 | ||||||
|  |  | ||||||
|   ## @param deployment.initContainers List of additional init containers. |   ## @param deployment.initContainers List of additional init containers. | ||||||
|   initContainers: [] |   initContainers: [] | ||||||
| @@ -190,7 +203,7 @@ deployment: | |||||||
|       # runAsUser: 1000 |       # runAsUser: 1000 | ||||||
|  |  | ||||||
|     ## @param deployment.postgresExporter.volumeMounts Additional volume mounts. |     ## @param deployment.postgresExporter.volumeMounts Additional volume mounts. | ||||||
|     volumeMounts: {} |     volumeMounts: [] | ||||||
|     # - name: my-configmap-volume |     # - name: my-configmap-volume | ||||||
|     #   mountPath: /configmap |     #   mountPath: /configmap | ||||||
|     #   readOnly: true |     #   readOnly: true | ||||||
| @@ -201,8 +214,11 @@ deployment: | |||||||
|   ## @param deployment.priorityClassName PriorityClassName of the postgres-exporter deployment. |   ## @param deployment.priorityClassName PriorityClassName of the postgres-exporter deployment. | ||||||
|   priorityClassName: "" |   priorityClassName: "" | ||||||
|  |  | ||||||
|   ## @param deployment.replicaCount Number of replicas for the postgres-exporter deployment. |   ## @param deployment.replicas Number of replicas for the postgres-exporter deployment. | ||||||
|   replicaCount: 1 |   replicas: 1 | ||||||
|  |  | ||||||
|  |   ## @param deployment.restartPolicy Restart policy of the postgres-exporter deployment. | ||||||
|  |   restartPolicy: "" | ||||||
|  |  | ||||||
|   ## @param deployment.securityContext Security context of the postgres-exporter deployment. |   ## @param deployment.securityContext Security context of the postgres-exporter deployment. | ||||||
|   securityContext: {} |   securityContext: {} | ||||||
| @@ -222,6 +238,10 @@ deployment: | |||||||
|  |  | ||||||
|   ## @param deployment.tolerations Tolerations of the postgres-exporter deployment. |   ## @param deployment.tolerations Tolerations of the postgres-exporter deployment. | ||||||
|   tolerations: [] |   tolerations: [] | ||||||
|  |   # - key: database/type | ||||||
|  |   #   operator: Equal | ||||||
|  |   #   value: postgres | ||||||
|  |   #   effect: NoSchedule | ||||||
|  |  | ||||||
|   ## @param deployment.topologySpreadConstraints TopologySpreadConstraints of the postgres-exporter deployment. |   ## @param deployment.topologySpreadConstraints TopologySpreadConstraints of the postgres-exporter deployment. | ||||||
|   topologySpreadConstraints: [] |   topologySpreadConstraints: [] | ||||||
| @@ -241,12 +261,23 @@ deployment: | |||||||
|   #     secretName: my-secret |   #     secretName: my-secret | ||||||
|  |  | ||||||
| ## @section Grafana | ## @section Grafana | ||||||
| ## @param grafana.enabled Enable integration into Grafana. | ## @param grafana.enabled Enable integration into Grafana. Require the Prometheus operator deployment. | ||||||
| ## @param grafana.dashboards.businessMetrics Enable deployment of Grafana dashboard `businessMetrics`. |  | ||||||
| grafana: | grafana: | ||||||
|   enabled: false |   enabled: false | ||||||
|  |  | ||||||
|  |   ## @param grafana.dashboardDiscoveryLabels Labels that Grafana uses to discover resources. The labels may vary depending on the Grafana deployment. | ||||||
|  |   ## @skip grafana.dashboardDiscoveryLabels | ||||||
|  |   dashboardDiscoveryLabels: | ||||||
|  |     grafana_dashboard: "1" | ||||||
|  |  | ||||||
|   dashboards: |   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 | ## @section Ingress | ||||||
| ingress: | ingress: | ||||||
| @@ -297,7 +328,7 @@ prometheus: | |||||||
|     ## @param prometheus.metrics.podMonitor.honorLabels Honor labels. |     ## @param prometheus.metrics.podMonitor.honorLabels Honor labels. | ||||||
|     ## @param prometheus.metrics.podMonitor.labels Additional podMonitor labels. |     ## @param prometheus.metrics.podMonitor.labels Additional podMonitor labels. | ||||||
|     ## @param prometheus.metrics.podMonitor.interval Interval at which metrics should be scraped. If not specified Prometheus' global scrape interval is used. |     ## @param prometheus.metrics.podMonitor.interval Interval at which metrics should be scraped. If not specified Prometheus' global scrape interval is used. | ||||||
|     ## @param prometheus.metrics.podMonitor.path HTTP path for scraping prometheus metrics. |     ## @param prometheus.metrics.podMonitor.path HTTP path for scraping Prometheus metrics. | ||||||
|     ## @param prometheus.metrics.podMonitor.relabelings RelabelConfigs to apply to samples before scraping. Prometheus Operator automatically adds relabelings for a few standard Kubernetes fields. |     ## @param prometheus.metrics.podMonitor.relabelings RelabelConfigs to apply to samples before scraping. Prometheus Operator automatically adds relabelings for a few standard Kubernetes fields. | ||||||
|     ## @param prometheus.metrics.podMonitor.scrapeTimeout Timeout after which the scrape is ended. If not specified, global Prometheus scrape timeout is used. |     ## @param prometheus.metrics.podMonitor.scrapeTimeout Timeout after which the scrape is ended. If not specified, global Prometheus scrape timeout is used. | ||||||
|     ## @param prometheus.metrics.podMonitor.scheme HTTP scheme to use for scraping. For example `http` or `https`. |     ## @param prometheus.metrics.podMonitor.scheme HTTP scheme to use for scraping. For example `http` or `https`. | ||||||
| @@ -306,7 +337,7 @@ prometheus: | |||||||
|     podMonitor: |     podMonitor: | ||||||
|       enabled: false |       enabled: false | ||||||
|       annotations: {} |       annotations: {} | ||||||
|       enableHttp2: false |       enableHttp2: true | ||||||
|       followRedirects: false |       followRedirects: false | ||||||
|       honorLabels: false |       honorLabels: false | ||||||
|       labels: {} |       labels: {} | ||||||
| @@ -324,8 +355,7 @@ prometheus: | |||||||
|     ## @param prometheus.metrics.serviceMonitor.followRedirects FollowRedirects configures whether scrape requests follow HTTP 3xx redirects. |     ## @param prometheus.metrics.serviceMonitor.followRedirects FollowRedirects configures whether scrape requests follow HTTP 3xx redirects. | ||||||
|     ## @param prometheus.metrics.serviceMonitor.honorLabels Honor labels. |     ## @param prometheus.metrics.serviceMonitor.honorLabels Honor labels. | ||||||
|     ## @param prometheus.metrics.serviceMonitor.interval Interval at which metrics should be scraped. If not specified Prometheus' global scrape interval is used. |     ## @param prometheus.metrics.serviceMonitor.interval Interval at which metrics should be scraped. If not specified Prometheus' global scrape interval is used. | ||||||
|     ## @param prometheus.metrics.serviceMonitor.path HTTP path for scraping prometheus metrics. |     ## @param prometheus.metrics.serviceMonitor.path HTTP path for scraping Prometheus metrics. | ||||||
|     ## @param prometheus.metrics.serviceMonitor.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.relabelings RelabelConfigs to apply to samples before scraping. Prometheus Operator automatically adds relabelings for a few standard Kubernetes fields. | ||||||
|     ## @param prometheus.metrics.serviceMonitor.scrapeTimeout Timeout after which the scrape is ended. If not specified, global Prometheus scrape timeout is used. |     ## @param prometheus.metrics.serviceMonitor.scrapeTimeout Timeout after which the scrape is ended. If not specified, global Prometheus scrape timeout is used. | ||||||
|     ## @param prometheus.metrics.serviceMonitor.scheme HTTP scheme to use for scraping. For example `http` or `https`. |     ## @param prometheus.metrics.serviceMonitor.scheme HTTP scheme to use for scraping. For example `http` or `https`. | ||||||
| @@ -335,19 +365,18 @@ prometheus: | |||||||
|       enabled: false |       enabled: false | ||||||
|       annotations: {} |       annotations: {} | ||||||
|       labels: {} |       labels: {} | ||||||
|       enableHttp2: false |       enableHttp2: true | ||||||
|       followRedirects: false |       followRedirects: false | ||||||
|       honorLabels: false |       honorLabels: false | ||||||
|       interval: "60s" |       interval: "60s" | ||||||
|       path: "/metrics" |       path: "/metrics" | ||||||
|       port: 9187 |  | ||||||
|       relabelings: [] |       relabelings: [] | ||||||
|       scrapeTimeout: "30s" |       scrapeTimeout: "30s" | ||||||
|       scheme: "http" |       scheme: "http" | ||||||
|       tlsConfig: {} |       tlsConfig: {} | ||||||
|  |  | ||||||
|   ## @param prometheus.rules Array of prometheus rules for monitoring the application and triggering alerts. |   ## @param prometheus.rules Array of Prometheus rules for monitoring the application and triggering alerts. | ||||||
|   ## @skip prometheus.rules Skip individual prometheus rules. |   ## @skip prometheus.rules Skip individual Prometheus rules. | ||||||
|   rules: [] |   rules: [] | ||||||
|   # - alert: ExporterErrors |   # - alert: ExporterErrors | ||||||
|   #   expr: pg_exporter_last_scrape_error == 1 |   #   expr: pg_exporter_last_scrape_error == 1 | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user