feat(postgres): upgrade shared database to PostgreSQL 17

Move the shared postgres service from 15.19 to 17.6 as the postgres17 StatefulSet with its own PVC, extend the initdb and ingress policy with the statuspage database, and drop the now-unused per-app postgres manifests for authentik, gitea and netronome.
This commit is contained in:
forust authored and forust committed 2026-09-17 17:55:50 +00:00
1 parent b3463705c3
commit 003b1e5dca
6 files changed
+32 -216

No files matched your search

+4 -1
View File
@@ -6,7 +6,7 @@ metadata:
spec:
podSelector:
matchLabels:
app.kubernetes.io/name: postgres
app.kubernetes.io/name: postgres17
policyTypes:
- Ingress
ingress:
@@ -23,6 +23,9 @@ spec:
- namespaceSelector:
matchLabels:
kubernetes.io/metadata.name: penpot
- namespaceSelector:
matchLabels:
kubernetes.io/metadata.name: statuspage
ports:
- protocol: TCP
port: 5432
+27 -16
View File
@@ -4,11 +4,11 @@ metadata:
name: postgres
namespace: database
labels:
app.kubernetes.io/name: postgres
app.kubernetes.io/name: postgres17
app.kubernetes.io/part-of: homelab-database
spec:
selector:
app.kubernetes.io/name: postgres
app.kubernetes.io/name: postgres17
ports:
- name: postgres
port: 5432
@@ -17,22 +17,22 @@ spec:
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: postgres
name: postgres17
namespace: database
spec:
serviceName: postgres
serviceName: postgres17
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: postgres
app.kubernetes.io/name: postgres17
template:
metadata:
labels:
app.kubernetes.io/name: postgres
app.kubernetes.io/name: postgres17
spec:
containers:
- name: postgres
image: postgres:15.19-alpine
image: postgres:17.6-alpine
ports:
- name: postgres
containerPort: 5432
@@ -66,19 +66,28 @@ spec:
initialDelaySeconds: 30
periodSeconds: 20
volumes:
- name: postgres-data
persistentVolumeClaim:
claimName: postgres17-data
- name: initdb
configMap:
name: postgres-initdb
defaultMode: 0755
volumeClaimTemplates:
- metadata:
name: postgres-data
spec:
accessModes: ["ReadWriteOnce"]
storageClassName: local-path-retain
resources:
requests:
storage: 20Gi
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: postgres17-data
namespace: database
labels:
app.kubernetes.io/name: postgres17
app.kubernetes.io/part-of: homelab-database
spec:
accessModes: ["ReadWriteOnce"]
storageClassName: local-path-retain
resources:
requests:
storage: 20Gi
---
apiVersion: v1
kind: ConfigMap
@@ -94,6 +103,7 @@ data:
: "${GITEA_DB_PASSWORD:?GITEA_DB_PASSWORD is required}"
: "${NETRONOME_DB_PASSWORD:?NETRONOME_DB_PASSWORD is required}"
: "${PENPOT_DB_PASSWORD:?PENPOT_DB_PASSWORD is required}"
: "${STATUSPAGE_DB_PASSWORD:?STATUSPAGE_DB_PASSWORD is required}"
create_role_and_database() {
local role="$1"
@@ -113,3 +123,4 @@ data:
create_role_and_database gitea gitea "$GITEA_DB_PASSWORD"
create_role_and_database netronome netronome "$NETRONOME_DB_PASSWORD"
create_role_and_database penpot penpot "$PENPOT_DB_PASSWORD"
create_role_and_database statuspage statuspage "$STATUSPAGE_DB_PASSWORD"
+1
View File
@@ -10,3 +10,4 @@ stringData:
GITEA_DB_PASSWORD: ""
NETRONOME_DB_PASSWORD: ""
PENPOT_DB_PASSWORD: ""
STATUSPAGE_DB_PASSWORD: ""