infrastructure/databases/pgbouncer.yaml

103 lines
2.5 KiB
YAML

apiVersion: v1
kind: Namespace
metadata:
name: databases
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: pgbouncer
namespace: databases
spec:
serviceName: "pgbouncer"
replicas: 1
selector:
matchLabels:
app: pgbouncer
template:
metadata:
labels:
app: pgbouncer
spec:
containers:
- name: pgbouncer
image: bitnami/pgbouncer:latest
ports:
- containerPort: 5432
env:
- name: POSTGRESQL_PASSWORD
valueFrom:
secretKeyRef:
name: secrets
key: POSTGRES_PASSWORD
- name: PGBOUNCER_PORT
value: "5432"
- name: PGBOUNCER_USER
value: "postgres"
- name: PGBOUNCER_PASSWORD
valueFrom:
secretKeyRef:
name: secrets
key: POSTGRES_PASSWORD
- name: POSTGRESQL_HOST
value: postgres.databases
- name: PGBOUNCER_DATABASE
value: nocodelytics_production
- name: PGBOUNCER_DEFAULT_POOL_SIZE
value: "100"
- name: PGBOUNCER_MAX_CLIENT_CONN
value: "700"
- name: PGBOUNCER_SERVER_IDLE_TIMEOUT
value: "60"
- name: PGBOUNCER_POOL_MODE
value: session
- name: PGBOUNCER_RESERVE_POOL_SIZE
value: "10"
- name: PGBOUNCER_RESERVE_POOL_TIMEOUT
value: "5"
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: pgbouncer-exporter
namespace: databases
spec:
replicas: 1
selector:
matchLabels:
app: pgbouncer-exporter
template:
metadata:
labels:
app: pgbouncer-exporter
annotations:
prometheus.io/scrape: "true"
prometheus.io/port: "9127"
spec:
containers:
- name: pgbouncer-exporter
image: prometheuscommunity/pgbouncer-exporter:latest
ports:
- containerPort: 9127
args:
- --pgBouncer.connectionString=postgres://postgres:$(POSTGRES_PASSWORD)@pgbouncer.databases:5432/pgbouncer?sslmode=disable
- --web.listen-address=:9127
env:
- name: POSTGRES_PASSWORD
valueFrom:
secretKeyRef:
name: secrets
key: POSTGRES_PASSWORD
---
apiVersion: v1
kind: Service
metadata:
name: pgbouncer
namespace: databases
spec:
ports:
- port: 5432
targetPort: 5432
selector:
app: pgbouncer