feat: Postgers | use client managed certificates

This commit is contained in:
2024-10-11 15:04:41 +05:00
parent 77a9668446
commit c6933157c0
2 changed files with 129 additions and 10 deletions

View File

@@ -0,0 +1,15 @@
---
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: shahab-client-cert
namespace: postgres-system
spec:
secretName: shahab-client-cert
usages:
- client auth
commonName: shahab
issuerRef:
name: postgres-client-ca-issuer
kind: Issuer
group: cert-manager.io

View File

@@ -1,4 +1,114 @@
--- ---
apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
name: selfsigned-issuer
namespace: postgres-system
spec:
selfSigned: {}
---
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: server-ca
namespace: postgres-system
spec:
isCA: true
commonName: postgres-server-ca
secretName: postgres-server-ca
privateKey:
algorithm: ECDSA
size: 384
issuerRef:
name: selfsigned-issuer
kind: Issuer
group: cert-manager.io
---
apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
name: postgres-server-ca-issuer
namespace: postgres-system
spec:
ca:
secretName: postgres-server-ca
---
apiVersion: v1
kind: Secret
metadata:
name: postgres-server-cert
namespace: postgres-system
labels:
cnpg.io/reload: ""
---
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: postgres-server-cert
namespace: postgres-system
spec:
secretName: postgres-server-cert
usages:
- server auth
dnsNames:
- postgres-cluster-rw.postgres-system.svc.cluster.local
- postgres-cluster-ro.postgres-system.svc.cluster.local
- postgres-cluster-r.postgres-system.svc.cluster.local
- postgres.dogar.dev
issuerRef:
name: postgres-server-ca-issuer
kind: Issuer
group: cert-manager.io
---
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: client-ca
namespace: postgres-system
spec:
isCA: true
commonName: postgres-client-ca
secretName: postgres-client-ca
privateKey:
algorithm: ECDSA
size: 256
issuerRef:
name: selfsigned-issuer
kind: Issuer
group: cert-manager.io
---
apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
name: postgres-client-ca-issuer
namespace: postgres-system
spec:
ca:
secretName: postgres-client-ca
---
apiVersion: v1
kind: Secret
metadata:
name: postgres-client-cert
namespace: postgres-system
labels:
cnpg.io/reload: ""
---
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: postgres-client-cert
namespace: postgres-system
spec:
secretName: postgres-client-cert
usages:
- client auth
commonName: streaming_replica
issuerRef:
name: postgres-client-ca-issuer
kind: Issuer
group: cert-manager.io
---
apiVersion: postgresql.cnpg.io/v1 apiVersion: postgresql.cnpg.io/v1
kind: Cluster kind: Cluster
metadata: metadata:
@@ -6,16 +116,16 @@ metadata:
namespace: postgres-system namespace: postgres-system
spec: spec:
instances: 3 instances: 3
minSyncReplicas: 0
maxSyncReplicas: 0 maxSyncReplicas: 0
primaryUpdateStrategy: unsupervised primaryUpdateStrategy: unsupervised
certificates: certificates:
serverAltDNSNames: serverCASecret: postgres-server-cert
- postgres.dogar.dev serverTLSSecret: postgres-server-cert
clientCASecret: postgres-client-cert
replicationTLSSecret: postgres-client-cert
postgresql: postgresql:
pg_hba: pg_hba:
- hostssl all shahab all cert - hostssl all shahab all cert
- hostssl all dogar all cert
- hostssl sameuser all all cert - hostssl sameuser all all cert
- hostssl giteadb gitea 10.42.0.0/16 scram-sha-256 - hostssl giteadb gitea 10.42.0.0/16 scram-sha-256
enableSuperuserAccess: false enableSuperuserAccess: false
@@ -26,11 +136,5 @@ spec:
name: postgres-password name: postgres-password
postInitSQL: postInitSQL:
- 'CREATE USER shahab SUPERUSER;' - 'CREATE USER shahab SUPERUSER;'
- 'CREATE USER dogar SUPERUSER;'
- 'CREATE USER leviathan;'
- 'CREATE DATABASE leviathan;'
- 'CREATE USER "schedule-consist";'
- 'CREATE DATABASE "schedule-consist";'
- 'CREATE DATABASE giteadb;'
storage: storage:
size: 1Gi size: 1Gi