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:
1 parent
18167e7bc3
commit
b4678e5437
6 files changed
+32
-216
No files matched your search
@@ -1,66 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
name: authentik-postgres-service
|
|
||||||
namespace: authentik
|
|
||||||
spec:
|
|
||||||
clusterIP: None
|
|
||||||
selector:
|
|
||||||
app: authentik-postgres
|
|
||||||
ports:
|
|
||||||
- port: 5432
|
|
||||||
targetPort: 5432
|
|
||||||
---
|
|
||||||
apiVersion: apps/v1
|
|
||||||
kind: StatefulSet
|
|
||||||
metadata:
|
|
||||||
name: authentik-postgres-statefulset
|
|
||||||
namespace: authentik
|
|
||||||
spec:
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
app: authentik-postgres
|
|
||||||
serviceName: authentik-postgres-service
|
|
||||||
replicas: 1
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app: authentik-postgres
|
|
||||||
spec:
|
|
||||||
containers:
|
|
||||||
- name: postgres
|
|
||||||
image: docker.io/library/postgres:15.19-alpine
|
|
||||||
env:
|
|
||||||
- name: POSTGRES_DB
|
|
||||||
value: authentik
|
|
||||||
- name: POSTGRES_USER
|
|
||||||
valueFrom:
|
|
||||||
secretKeyRef:
|
|
||||||
name: authentik-secrets
|
|
||||||
key: AUTHENTIK_POSTGRESQL__USER
|
|
||||||
- name: POSTGRES_PASSWORD
|
|
||||||
valueFrom:
|
|
||||||
secretKeyRef:
|
|
||||||
name: authentik-secrets
|
|
||||||
key: AUTHENTIK_POSTGRESQL__PASSWORD
|
|
||||||
ports:
|
|
||||||
- containerPort: 5432
|
|
||||||
name: postgres
|
|
||||||
volumeMounts:
|
|
||||||
- name: postgres-data
|
|
||||||
mountPath: /var/lib/postgresql/data
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
memory: "256Mi"
|
|
||||||
cpu: "200m"
|
|
||||||
limits:
|
|
||||||
memory: "1Gi"
|
|
||||||
cpu: "500m"
|
|
||||||
volumeClaimTemplates:
|
|
||||||
- metadata:
|
|
||||||
name: postgres-data
|
|
||||||
spec:
|
|
||||||
accessModes: ["ReadWriteOnce"]
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
storage: 5Gi
|
|
||||||
@@ -1,62 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
name: gitea-postgres-service
|
|
||||||
namespace: gitea
|
|
||||||
spec:
|
|
||||||
clusterIP: None
|
|
||||||
selector:
|
|
||||||
app: gitea-postgres
|
|
||||||
ports:
|
|
||||||
- port: 5432
|
|
||||||
targetPort: 5432
|
|
||||||
---
|
|
||||||
apiVersion: apps/v1
|
|
||||||
kind: StatefulSet
|
|
||||||
metadata:
|
|
||||||
name: gitea-postgres-statefulset
|
|
||||||
namespace: gitea
|
|
||||||
spec:
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
app: gitea-postgres
|
|
||||||
serviceName: gitea-postgres-service
|
|
||||||
replicas: 1
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app: gitea-postgres
|
|
||||||
spec:
|
|
||||||
containers:
|
|
||||||
- name: gitea-postgres
|
|
||||||
image: postgres:14.24-alpine
|
|
||||||
env:
|
|
||||||
- name: POSTGRES_USER
|
|
||||||
valueFrom:
|
|
||||||
secretKeyRef:
|
|
||||||
name: gitea-secrets
|
|
||||||
key: GITEA__database__USER
|
|
||||||
- name: POSTGRES_PASSWORD
|
|
||||||
valueFrom:
|
|
||||||
secretKeyRef:
|
|
||||||
name: gitea-secrets
|
|
||||||
key: GITEA__database__PASSWD
|
|
||||||
- name: POSTGRES_DB
|
|
||||||
valueFrom:
|
|
||||||
secretKeyRef:
|
|
||||||
name: gitea-secrets
|
|
||||||
key: GITEA__database__NAME
|
|
||||||
ports:
|
|
||||||
- containerPort: 5432
|
|
||||||
name: postgres
|
|
||||||
volumeMounts:
|
|
||||||
- name: postgres-data
|
|
||||||
mountPath: /var/lib/postgresql/data
|
|
||||||
volumeClaimTemplates:
|
|
||||||
- metadata:
|
|
||||||
name: postgres-data
|
|
||||||
spec:
|
|
||||||
accessModes: ["ReadWriteOnce"]
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
storage: 1Gi
|
|
||||||
@@ -1,71 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
name: netronome-postgres-service
|
|
||||||
namespace: netronome
|
|
||||||
spec:
|
|
||||||
selector:
|
|
||||||
app: netronome-postgres
|
|
||||||
ports:
|
|
||||||
- protocol: TCP
|
|
||||||
port: 5432
|
|
||||||
targetPort: 5432
|
|
||||||
---
|
|
||||||
apiVersion: apps/v1
|
|
||||||
kind: StatefulSet
|
|
||||||
metadata:
|
|
||||||
name: netronome-postgres
|
|
||||||
namespace: netronome
|
|
||||||
spec:
|
|
||||||
serviceName: "netronome-postgres-service"
|
|
||||||
replicas: 1
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
app: netronome-postgres
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app: netronome-postgres
|
|
||||||
spec:
|
|
||||||
containers:
|
|
||||||
- name: netronome-postgres
|
|
||||||
image: postgres:17.11-alpine
|
|
||||||
ports:
|
|
||||||
- name: postgres-port
|
|
||||||
protocol: TCP
|
|
||||||
containerPort: 5432
|
|
||||||
env:
|
|
||||||
- name: POSTGRES_USER
|
|
||||||
valueFrom:
|
|
||||||
secretKeyRef:
|
|
||||||
name: netronome-secrets
|
|
||||||
key: NETRONOME__DB_USER
|
|
||||||
- name: POSTGRES_PASSWORD
|
|
||||||
valueFrom:
|
|
||||||
secretKeyRef:
|
|
||||||
name: netronome-secrets
|
|
||||||
key: NETRONOME__DB_PASSWORD
|
|
||||||
- name: POSTGRES_DB
|
|
||||||
valueFrom:
|
|
||||||
configMapKeyRef:
|
|
||||||
name: netronome-config
|
|
||||||
key: NETRONOME__DB_NAME
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
memory: "512Mi"
|
|
||||||
cpu: "500m"
|
|
||||||
limits:
|
|
||||||
memory: "1Gi"
|
|
||||||
cpu: "1000m"
|
|
||||||
volumeMounts:
|
|
||||||
- name: netronome-pg-data
|
|
||||||
mountPath: /var/lib/postgresql/data
|
|
||||||
volumeClaimTemplates:
|
|
||||||
- metadata:
|
|
||||||
name: netronome-pg-data
|
|
||||||
spec:
|
|
||||||
accessModes:
|
|
||||||
- ReadWriteOnce
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
storage: 1Gi
|
|
||||||
@@ -6,7 +6,7 @@ metadata:
|
|||||||
spec:
|
spec:
|
||||||
podSelector:
|
podSelector:
|
||||||
matchLabels:
|
matchLabels:
|
||||||
app.kubernetes.io/name: postgres
|
app.kubernetes.io/name: postgres17
|
||||||
policyTypes:
|
policyTypes:
|
||||||
- Ingress
|
- Ingress
|
||||||
ingress:
|
ingress:
|
||||||
@@ -23,6 +23,9 @@ spec:
|
|||||||
- namespaceSelector:
|
- namespaceSelector:
|
||||||
matchLabels:
|
matchLabels:
|
||||||
kubernetes.io/metadata.name: penpot
|
kubernetes.io/metadata.name: penpot
|
||||||
|
- namespaceSelector:
|
||||||
|
matchLabels:
|
||||||
|
kubernetes.io/metadata.name: statuspage
|
||||||
ports:
|
ports:
|
||||||
- protocol: TCP
|
- protocol: TCP
|
||||||
port: 5432
|
port: 5432
|
||||||
+27
-16
@@ -4,11 +4,11 @@ metadata:
|
|||||||
name: postgres
|
name: postgres
|
||||||
namespace: database
|
namespace: database
|
||||||
labels:
|
labels:
|
||||||
app.kubernetes.io/name: postgres
|
app.kubernetes.io/name: postgres17
|
||||||
app.kubernetes.io/part-of: homelab-database
|
app.kubernetes.io/part-of: homelab-database
|
||||||
spec:
|
spec:
|
||||||
selector:
|
selector:
|
||||||
app.kubernetes.io/name: postgres
|
app.kubernetes.io/name: postgres17
|
||||||
ports:
|
ports:
|
||||||
- name: postgres
|
- name: postgres
|
||||||
port: 5432
|
port: 5432
|
||||||
@@ -17,22 +17,22 @@ spec:
|
|||||||
apiVersion: apps/v1
|
apiVersion: apps/v1
|
||||||
kind: StatefulSet
|
kind: StatefulSet
|
||||||
metadata:
|
metadata:
|
||||||
name: postgres
|
name: postgres17
|
||||||
namespace: database
|
namespace: database
|
||||||
spec:
|
spec:
|
||||||
serviceName: postgres
|
serviceName: postgres17
|
||||||
replicas: 1
|
replicas: 1
|
||||||
selector:
|
selector:
|
||||||
matchLabels:
|
matchLabels:
|
||||||
app.kubernetes.io/name: postgres
|
app.kubernetes.io/name: postgres17
|
||||||
template:
|
template:
|
||||||
metadata:
|
metadata:
|
||||||
labels:
|
labels:
|
||||||
app.kubernetes.io/name: postgres
|
app.kubernetes.io/name: postgres17
|
||||||
spec:
|
spec:
|
||||||
containers:
|
containers:
|
||||||
- name: postgres
|
- name: postgres
|
||||||
image: postgres:15.19-alpine
|
image: postgres:17.6-alpine
|
||||||
ports:
|
ports:
|
||||||
- name: postgres
|
- name: postgres
|
||||||
containerPort: 5432
|
containerPort: 5432
|
||||||
@@ -66,19 +66,28 @@ spec:
|
|||||||
initialDelaySeconds: 30
|
initialDelaySeconds: 30
|
||||||
periodSeconds: 20
|
periodSeconds: 20
|
||||||
volumes:
|
volumes:
|
||||||
|
- name: postgres-data
|
||||||
|
persistentVolumeClaim:
|
||||||
|
claimName: postgres17-data
|
||||||
- name: initdb
|
- name: initdb
|
||||||
configMap:
|
configMap:
|
||||||
name: postgres-initdb
|
name: postgres-initdb
|
||||||
defaultMode: 0755
|
defaultMode: 0755
|
||||||
volumeClaimTemplates:
|
---
|
||||||
- metadata:
|
apiVersion: v1
|
||||||
name: postgres-data
|
kind: PersistentVolumeClaim
|
||||||
spec:
|
metadata:
|
||||||
accessModes: ["ReadWriteOnce"]
|
name: postgres17-data
|
||||||
storageClassName: local-path-retain
|
namespace: database
|
||||||
resources:
|
labels:
|
||||||
requests:
|
app.kubernetes.io/name: postgres17
|
||||||
storage: 20Gi
|
app.kubernetes.io/part-of: homelab-database
|
||||||
|
spec:
|
||||||
|
accessModes: ["ReadWriteOnce"]
|
||||||
|
storageClassName: local-path-retain
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
storage: 20Gi
|
||||||
---
|
---
|
||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
kind: ConfigMap
|
kind: ConfigMap
|
||||||
@@ -94,6 +103,7 @@ data:
|
|||||||
: "${GITEA_DB_PASSWORD:?GITEA_DB_PASSWORD is required}"
|
: "${GITEA_DB_PASSWORD:?GITEA_DB_PASSWORD is required}"
|
||||||
: "${NETRONOME_DB_PASSWORD:?NETRONOME_DB_PASSWORD is required}"
|
: "${NETRONOME_DB_PASSWORD:?NETRONOME_DB_PASSWORD is required}"
|
||||||
: "${PENPOT_DB_PASSWORD:?PENPOT_DB_PASSWORD is required}"
|
: "${PENPOT_DB_PASSWORD:?PENPOT_DB_PASSWORD is required}"
|
||||||
|
: "${STATUSPAGE_DB_PASSWORD:?STATUSPAGE_DB_PASSWORD is required}"
|
||||||
|
|
||||||
create_role_and_database() {
|
create_role_and_database() {
|
||||||
local role="$1"
|
local role="$1"
|
||||||
@@ -113,3 +123,4 @@ data:
|
|||||||
create_role_and_database gitea gitea "$GITEA_DB_PASSWORD"
|
create_role_and_database gitea gitea "$GITEA_DB_PASSWORD"
|
||||||
create_role_and_database netronome netronome "$NETRONOME_DB_PASSWORD"
|
create_role_and_database netronome netronome "$NETRONOME_DB_PASSWORD"
|
||||||
create_role_and_database penpot penpot "$PENPOT_DB_PASSWORD"
|
create_role_and_database penpot penpot "$PENPOT_DB_PASSWORD"
|
||||||
|
create_role_and_database statuspage statuspage "$STATUSPAGE_DB_PASSWORD"
|
||||||
@@ -10,3 +10,4 @@ stringData:
|
|||||||
GITEA_DB_PASSWORD: ""
|
GITEA_DB_PASSWORD: ""
|
||||||
NETRONOME_DB_PASSWORD: ""
|
NETRONOME_DB_PASSWORD: ""
|
||||||
PENPOT_DB_PASSWORD: ""
|
PENPOT_DB_PASSWORD: ""
|
||||||
|
STATUSPAGE_DB_PASSWORD: ""
|
||||||
Reference in new issue
Block a user