cluster

Infrastructure files for Nordgedanken and Midnightthoughts.
git clone git://archive.git.mtrnord.blog/MTRNord/cluster.git
Log | Files | Refs | README

commit b648d047f0c6c9c1e93f2cc615ccebdb4d78609c
parent a68552f45ee65070bb6ba201369a8239c35720ae
Author: MTRNord <mtrnord1@gmail.com>
Date:   Thu,  6 Apr 2023 23:52:40 +0200

Add postgres-exporter

Diffstat:
Mapps/base/kube-prometheus-stack/release.yaml | 2++
Aapps/base/postgres-exporter/kustomization.yaml | 7+++++++
Aapps/base/postgres-exporter/namespace.yaml | 4++++
Aapps/base/postgres-exporter/release.yaml | 45+++++++++++++++++++++++++++++++++++++++++++++
Aapps/base/postgres-exporter/repository.yaml | 8++++++++
Mapps/production/kustomization.yaml | 2++
Aapps/production/postgres-exporter-values.yaml | 9+++++++++
Mapps/production/secrets/kustomization.yaml | 1+
Aapps/production/secrets/postgres-export-secret.yaml | 28++++++++++++++++++++++++++++
Mapps/production/secrets/sliding-proxy-secret.yaml | 24++++++++++++------------
10 files changed, 118 insertions(+), 12 deletions(-)

diff --git a/apps/base/kube-prometheus-stack/release.yaml b/apps/base/kube-prometheus-stack/release.yaml @@ -85,6 +85,8 @@ spec: url: https://raw.githubusercontent.com/cilium/cilium/v1.13.1/examples/kubernetes/addons/prometheus/files/grafana-dashboards/cilium-operator-dashboard.json hubble-dashboard: url: https://raw.githubusercontent.com/cilium/cilium/v1.13.1/examples/kubernetes/addons/prometheus/files/grafana-dashboards/hubble-dashboard.json + postgres-dashboard: + url: https://raw.githubusercontent.com/prometheus-community/postgres_exporter/master/postgres_mixin/dashboards/postgres-overview.json nats: nats-jetstream: url: https://git.nordgedanken.dev/kubernetes/grafana/raw/branch/main/nats.json diff --git a/apps/base/postgres-exporter/kustomization.yaml b/apps/base/postgres-exporter/kustomization.yaml @@ -0,0 +1,7 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +namespace: postgres-exporter +resources: + - namespace.yaml + - repository.yaml + - release.yaml diff --git a/apps/base/postgres-exporter/namespace.yaml b/apps/base/postgres-exporter/namespace.yaml @@ -0,0 +1,4 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: postgres-exporter diff --git a/apps/base/postgres-exporter/release.yaml b/apps/base/postgres-exporter/release.yaml @@ -0,0 +1,45 @@ +apiVersion: helm.toolkit.fluxcd.io/v2beta1 +kind: HelmRelease +metadata: + name: postgres-exporter + namespace: postgres-exporter +spec: + releaseName: postgres-exporter + chart: + spec: + chart: prometheus-postgres-exporter + sourceRef: + kind: HelmRepository + name: prometheus-community + interval: 50m + install: + remediation: + retries: 3 + values: + serviceMonitor: + # When set true then use a ServiceMonitor to configure scraping + enabled: true + prometheusRule: + enabled: true + additionalLabels: {} + namespace: "monitoring" + rules: + - alert: HugeReplicationLag + expr: pg_replication_lag{service="{{ template "prometheus-postgres-exporter.fullname" . }}"} / 3600 > 1 + for: 1m + labels: + severity: critical + annotations: + description: replication for {{ template "prometheus-postgres-exporter.fullname" . }} PostgreSQL is lagging by {{ "{{ $value }}" }} hour(s). + summary: PostgreSQL replication is lagging by {{ "{{ $value }}" }} hour(s). + config: + datasource: + host: matrix-postgres-cluster.matrix-postgres-cluster.svc.cluster.local + user: postgres + passwordSecret: + name: postgres-secret + key: password + port: "5432" + sslmode: require + database: "postgres" + autoDiscoverDatabases: true diff --git a/apps/base/postgres-exporter/repository.yaml b/apps/base/postgres-exporter/repository.yaml @@ -0,0 +1,8 @@ +apiVersion: source.toolkit.fluxcd.io/v1beta2 +kind: HelmRepository +metadata: + name: prometheus-community + namespace: postgres-exporter +spec: + interval: 5m + url: https://prometheus-community.github.io/helm-charts diff --git a/apps/production/kustomization.yaml b/apps/production/kustomization.yaml @@ -8,6 +8,7 @@ resources: - ../base/rook - ../base/postgres-operator - ../base/matrix + - ../base/postgres-exporter - sliding-proxy-ingress.yaml patchesStrategicMerge: - cosign-values.yaml @@ -18,3 +19,4 @@ patchesStrategicMerge: - media-repo-values.yaml - sliding-proxy-values.yaml - synapse-midnightthoughts.yaml + - postgres-exporter-values.yaml diff --git a/apps/production/postgres-exporter-values.yaml b/apps/production/postgres-exporter-values.yaml @@ -0,0 +1,9 @@ +apiVersion: helm.toolkit.fluxcd.io/v2beta1 +kind: HelmRelease +metadata: + name: postgres-exporter + namespace: postgres-exporter +spec: + chart: + spec: + version: "4.4.x" diff --git a/apps/production/secrets/kustomization.yaml b/apps/production/secrets/kustomization.yaml @@ -9,3 +9,4 @@ resources: - matrix-media-repo-postgresql-secret.yaml - sliding-proxy-secret.yaml - synapse-midnightthoughts-secret.yaml + - postgres-export-secret.yaml diff --git a/apps/production/secrets/postgres-export-secret.yaml b/apps/production/secrets/postgres-export-secret.yaml @@ -0,0 +1,28 @@ +apiVersion: v1 +kind: Secret +metadata: + name: postgres-secret + namespace: postgres-exporter +type: Opaque +stringData: + password: ENC[AES256_GCM,data:kSRJI6DuLY33l7p0jguQqZdWHsTfCB+7RnVNEHKo7IiO79ZRPqEaY6OoEIo3s9+hOSnFupJGONm29d9/Gz0uJw==,iv:AySH+6N8zimx7ie202g6Fva/Q0v/Y3urALnxR7Hm8v0=,tag:FkLq+pAPFE3uwTBFJ/p42A==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1esjyg2qfy49awv0ptkzvpk425adczjr38m37w2mmcahzc4p8n54sll2nzh + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBjRnVrMDlaSGdvYlJDLy9i + VUlFMFRsczMxWGR5a0FReXhhVGs4RUtmM2o0Ck00blJBWW5iTS9rT0ZybHBsYit5 + dEQzZ2czb1E3bG5JWGZEODNqYitPQWcKLS0tIG11NGRTY255dzdmTjl6S2VOTE9s + SlMrOHRiTzI3bjRmVVZjWXV6dENUUTgKwqfQAmI/CEed1j+UVkHiy4frwZRICw3X + 6AJGeZVmQy2QCTyINLPc5OFSH+xqIY9BwWAuF0sY+Z2hTNaDtzsjlw== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2023-04-06T21:48:57Z" + mac: ENC[AES256_GCM,data:j1EDwtoCiYZIHongq6zAnzeorIXQsXmFMUdOYvL/i/ek78sFdar8frEFz6ok5fl8P1qRJw/dWSLR5X1BQqlJZm8cYSPFCWMxYHdQnX3aalAWXjhYhvJPfkDnEbV5NpAX+OrTCxN+M0ohYCOBT58CHCW2YFSxk5ROEK3OvnKhFcU=,iv:j4MLNjyK5l6UTkxRarDcPE3cMBbBY75H+H5d+1V8ERU=,tag:VLDy6PWRZpGGXEw6Ubv0wQ==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData|password|registration_shared_secret|shared_secret)$ + version: 3.7.3 diff --git a/apps/production/secrets/sliding-proxy-secret.yaml b/apps/production/secrets/sliding-proxy-secret.yaml @@ -5,8 +5,8 @@ metadata: namespace: matrix type: Opaque stringData: - SYNCV3_SECRET: ENC[AES256_GCM,data:WMW1IssMfASE+q1Oab3F4CVGpLjyUk6LfZJZ6SJwK9Df4PiU5oCZJTy0Ff83ymCf6NLF+tcd9lCPQ99hqHZvtg==,iv:JGtzuxfSuygNZ4N4O/IBxdp/dyjrwLm17p27VvU5uX8=,tag:Wy0LtzMKGUPefTGHzedjqg==,type:str] - SYNCV3_DB: ENC[AES256_GCM,data:Es898diMq+BUofB6LDsLdBE2UqiGdOplrP4kmdK5Vr/Hm5xwWvGAFnT0ShwS/BWg6UmFEPIdM+oY8V4NIKJAa5T9cJ2Iag59ptbS8jH92kUpPpX/zfAy43dpFQfFAqJ2zIcIaY/sN4K350VEqhrmmIe6v5x+1enuq0TLRO8ebS1ebOpy8kUJrGEnwGz52g9eLhlhXq59m1CMu9DQCJDlj6j0PFOtAZUZTX9I9wT/afJ3VfcBmStLxaC+,iv:ZFmoSBVeQMoGLdVN4zYtf27D5GruktD3qeL6e3xFKMQ=,tag:uHj9bqpD6gtlJYsmveVsfg==,type:str] + SYNCV3_SECRET: ENC[AES256_GCM,data:rfGdmTeNppolJJculidV7DjBUNs1AfMCbW/KjO0Q82B1SJKlgPyExjPByUbnr9Ud4oBd7MOw3PSQc8dON7K1Sg==,iv:7fL9Mw52eMWe1/FiE3/WmEf3EjZQ2NQF0BzIA7h2CXY=,tag:YzEWIg/7XyCL3kmrwS4qRQ==,type:str] + SYNCV3_DB: ENC[AES256_GCM,data:TL00JQjq00QcYLokcq/79WbytPo6/haDHGkSlqHU4Q+Ivfg/FaIvQXMpc+DCyB1RGNp+9m3LVDJvjZwPmZjiIZ/CKN6h8UeuGEuMYJ8OmLApKfh2F3jnUVMyx0kfLNTVH7SiHkzLlpgXmpU5NTTv4SHBEJDJfRkirlT2frYDcclvpuqaqxnVTS5G84o3ws9tQyrDt+n1InlCg6Ffo6V2Pqjqlml8NKVJ0v6pnkhHjouhZXhBphvqd7aU,iv:QuOXWrfk8kVdYQnZEeEKIoC2FI3x5ofvNaRfsCNXeFY=,tag:ukZvnQk3IuRx9zLU5Z2UFQ==,type:str] sops: kms: [] gcp_kms: [] @@ -15,15 +15,15 @@ sops: age: - recipient: age1esjyg2qfy49awv0ptkzvpk425adczjr38m37w2mmcahzc4p8n54sll2nzh enc: | - -----BEGIN AGE ENCRYPTED FILE----- - YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAwdEc3c1lHR3YyZUZ3YkFi - Yld6cFUzZm01T09LV0twcFZWLy9yL21HM0NzClc0eGFycGZjZ21ZaTJCT1FlbzV3 - UERZUTQ5SWlUaUJMOXFobnhybEtvNXcKLS0tIFd6Q0tHdzRtT1pLZFRNS3VKL3FG - Sy9XWk5tNnNaVDllNy9MQU5tdFV0bVUKn89o3TY+zP5TDkMpbYmEbOvCQq8E71NR - FcEZ0PMh32BcTsXUr59Fu4dhvyVNPlQB0dvHfxIi9YyBm9tydrgmJg== - -----END AGE ENCRYPTED FILE----- - lastmodified: "2023-04-03T17:39:20Z" - mac: ENC[AES256_GCM,data:5fj6MN1FpyYLRbwKBrq+KCN2pIySkyyLA3f+sZZT0ICm7NolGqK8eeDOKPOskwv1gTCyJDXZgBeEtWFixsS37RjeU6gX66CRnHN/Q9ag2PCuIyy+RBcGYY2FP1JMgWSZ6WBvIfjoNFkNla9B8tWM0OXyWu0hEmmAvaJIqwMvwSc=,iv:S2+n2bjNd+fYfqjYB97nPhhHQ/HR/K0/n0LAzone/0M=,tag:iZ+25oFHhZr45uDeuEW6nQ==,type:str] + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBvemE4SnNFalNEREkrMFdO + c1lMTnFrditMNW9KdVhXVUR4Q3JmTUx2OHhZCitDUFRmdGN0eEdiRDE2amVtcG5z + ZVE3cTRUY3lxOVdMaVF2VjF3L2IreGMKLS0tIE5UQ3c0UDhON2c5S1lRb3AwcXBQ + UitQcjFyVXNJWDI4cStnSzRSZGdiYk0K8rYQlSATbFomOnOY8ZW6FE10+UoWy4TR + muFmwo6FobRorsil2drLK+Jd5f7irnyPRKtnIJZycH5ROev5+SqQbA== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2023-04-06T21:47:44Z" + mac: ENC[AES256_GCM,data:57B5CicKHekJGC0MlTlFDIdlJ6KXUAvREsI06VpfxKmCy/z7zymYYlxFMYnN/26NcUk2pry+rjz8bQuRw6/wrtdbTnWFCCt9mhon1BP/eCWmmWmWtTU5m3gws+sl29hmhx72YaZolpFBXE1LKi9xH+UECHCtFeiFQ9pemomkpsU=,iv:qrJZn+4e097/eN3Kp5ulREssgNB61mj+OodbnP89UQA=,tag:v08sWBNcFXWY33VVSOB/0Q==,type:str] pgp: [] - encrypted_regex: ^(data|stringData|password)$ + encrypted_regex: ^(data|stringData|password|registration_shared_secret|shared_secret)$ version: 3.7.3