feat(postgres): adding pgbouncer support for cnpg component

Mandatory for large scale deployements
This commit is contained in:
Philippe Caseiro 2024-09-26 09:50:54 +02:00
parent a5cecb385c
commit 98f12274a6
6 changed files with 65 additions and 34 deletions

View File

@ -6,28 +6,28 @@ configurations:
resources: resources:
- ./resources/hydra-cnpg-cluster.yaml - ./resources/hydra-cnpg-cluster.yaml
- ./resources/hydra-postgres-pooler-rw.yaml
secretGenerator: #secretGenerator:
- name: hydra-postgres-admin #- name: hydra-postgres-admin
type: Secret # type: Secret
literals: # literals:
- username=postgres # - username=postgres
- password=NotSoSecret # - password=NotSoSecret
- name: hydra-postgres-user #- name: hydra-postgres-user
type: Secret # type: Secret
literals: # literals:
- username=hydra # - username=hydra
- password=NotSoSecret # - password=NotSoSecret
#vars:
vars: #- name: HYDRA_DATABASE_SERVICE_NAME
- name: HYDRA_DATABASE_SERVICE_NAME # objref:
objref: # name: hydra-postgres
name: hydra-postgres # kind: Cluster
kind: Cluster # apiVersion: postgresql.cnpg.io/v1
apiVersion: postgresql.cnpg.io/v1 # fieldref:
fieldref: # fieldpath: metadata.name
fieldpath: metadata.name
patches: patches:
- target: - target:

View File

@ -4,7 +4,7 @@
name: HYDRA_DATABASE_USER name: HYDRA_DATABASE_USER
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
name: hydra-postgres-user name: hydra-postgres-app
key: username key: username
- op: add - op: add
path: "/spec/template/spec/containers/0/env/-" path: "/spec/template/spec/containers/0/env/-"
@ -12,10 +12,15 @@
name: HYDRA_DATABASE_PASSWORD name: HYDRA_DATABASE_PASSWORD
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
name: hydra-postgres-user name: hydra-postgres-app
key: password key: password
- op: add
path: "/spec/template/spec/containers/0/env/-"
value:
name: HYDRA_DATABASE_SERVICE_NAME
value: hydra-postgres-pooler-rw
- op: add - op: add
path: "/spec/template/spec/containers/0/env/-" path: "/spec/template/spec/containers/0/env/-"
value: value:
name: DSN name: DSN
value: "postgres://$(HYDRA_DATABASE_USER):$(HYDRA_DATABASE_PASSWORD)@$(HYDRA_DATABASE_SERVICE_NAME)-rw:5432/hydra?sslmode=disable" value: "postgres://$(HYDRA_DATABASE_USER):$(HYDRA_DATABASE_PASSWORD)@$(HYDRA_DATABASE_SERVICE_NAME):5432/hydra?sslmode=disable"

View File

@ -4,7 +4,7 @@
name: HYDRA_DATABASE_USER name: HYDRA_DATABASE_USER
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
name: hydra-postgres-user name: hydra-postgres-app
key: username key: username
- op: add - op: add
path: "/spec/jobTemplate/spec/template/spec/containers/0/env/-" path: "/spec/jobTemplate/spec/template/spec/containers/0/env/-"
@ -12,10 +12,18 @@
name: HYDRA_DATABASE_PASSWORD name: HYDRA_DATABASE_PASSWORD
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
name: hydra-postgres-user name: hydra-postgres-app
key: password key: password
- op: add
path: "/spec/jobTemplate/spec/template/spec/containers/0/env/-"
value:
name: HYDRA_DATABASE_SERVICE_NAME
valueFrom:
secretKeyRef:
name: hydra-postgres-app
key: host
- op: add - op: add
path: "/spec/jobTemplate/spec/template/spec/containers/0/env/-" path: "/spec/jobTemplate/spec/template/spec/containers/0/env/-"
value: value:
name: DSN name: DSN
value: "postgres://$(HYDRA_DATABASE_USER):$(HYDRA_DATABASE_PASSWORD)@$(HYDRA_DATABASE_SERVICE_NAME)-rw:5432/hydra?sslmode=disable" value: "postgres://$(HYDRA_DATABASE_USER):$(HYDRA_DATABASE_PASSWORD)@$(HYDRA_DATABASE_SERVICE_NAME):5432/hydra?sslmode=disable"

View File

@ -4,7 +4,7 @@
name: HYDRA_DATABASE_USER name: HYDRA_DATABASE_USER
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
name: hydra-postgres-user name: hydra-postgres-app
key: username key: username
- op: add - op: add
path: "/spec/template/spec/containers/0/env/-" path: "/spec/template/spec/containers/0/env/-"
@ -12,10 +12,18 @@
name: HYDRA_DATABASE_PASSWORD name: HYDRA_DATABASE_PASSWORD
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
name: hydra-postgres-user name: hydra-postgres-app
key: password key: password
- op: add
path: "/spec/template/spec/containers/0/env/-"
value:
name: HYDRA_DATABASE_SERVICE_NAME
valueFrom:
secretKeyRef:
name: hydra-postgres-app
key: host
- op: add - op: add
path: "/spec/template/spec/containers/0/env/-" path: "/spec/template/spec/containers/0/env/-"
value: value:
name: DSN name: DSN
value: "postgres://$(HYDRA_DATABASE_USER):$(HYDRA_DATABASE_PASSWORD)@$(HYDRA_DATABASE_SERVICE_NAME)-rw:5432/hydra?sslmode=disable" value: "postgres://$(HYDRA_DATABASE_USER):$(HYDRA_DATABASE_PASSWORD)@$(HYDRA_DATABASE_SERVICE_NAME):5432/hydra?sslmode=disable"

View File

@ -5,13 +5,9 @@ metadata:
spec: spec:
instances: 3 instances: 3
primaryUpdateStrategy: unsupervised primaryUpdateStrategy: unsupervised
superuserSecret:
name: hydra-postgres-admin
bootstrap: bootstrap:
initdb: initdb:
database: hydra database: hydra
owner: hydra owner: hydra
secret:
name: hydra-postgres-user
storage: storage:
size: 2Gi size: 2Gi

View File

@ -0,0 +1,14 @@
apiVersion: postgresql.cnpg.io/v1
kind: Pooler
metadata:
name: hydra-postgres-pooler-rw
spec:
cluster:
name: hydra-postgres
instances: 3
type: rw
pgbouncer:
poolMode: session
parameters:
max_client_conn: "1000"
default_pool_size: "50"