pleroma/manifests/postgres/statefulset.yaml
2025-06-21 22:17:04 -04:00

131 lines
No EOL
3.6 KiB
YAML

---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: postgres
namespace: darkdork-dev
labels:
app: postgres
spec:
replicas: 1
selector:
matchLabels:
app: postgres
updateStrategy:
type: RollingUpdate
template:
metadata:
labels:
app: postgres
spec:
terminationGracePeriodSeconds: 30
imagePullSecrets:
- name: registry-credentials
securityContext:
fsGroup: 1000
affinity:
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 100
podAffinityTerm:
labelSelector:
matchExpressions:
- key: app
operator: In
values:
- postgres
topologyKey: kubernetes.io/hostname
containers:
- name: postgres
image: postgres:17-alpine
imagePullPolicy: Always
# securityContext:
# runAsUser: 1001
# runAsGroup: 1001
# allowPrivilegeEscalation: false
volumeMounts:
- name: postgres-data-statefulset
mountPath: /var/lib/postgresql/data
subPath: pgdata # Using subPath to avoid permission issues
- name: postgres-init-volume
mountPath: /docker-entrypoint-initdb.d
- name: postgres-config-volume
mountPath: /etc/postgresql/postgresql.conf
subPath: postgresql.conf
ports:
- containerPort: 5432
env:
- name: POSTGRES_PASSWORD
valueFrom:
secretKeyRef:
name: postgres
key: postgres-password
- name: DB_PASS
valueFrom:
secretKeyRef:
name: postgres
key: postgres-password
- name: PGDATA
value: /var/lib/postgresql/data/pgdata
- name: POSTGRES_INITDB_ARGS
value: "-c config_file=/etc/postgresql/postgresql.conf"
resources:
requests:
memory: "256Mi"
cpu: "100m"
limits:
memory: "8Gi"
cpu: "3000m"
livenessProbe:
exec:
command:
- pg_isready
- -U
- postgres
- -d
- pleroma
initialDelaySeconds: 30
periodSeconds: 10
timeoutSeconds: 5
failureThreshold: 6
readinessProbe:
exec:
command:
- pg_isready
- -U
- postgres
- -d
- pleroma
initialDelaySeconds: 5
periodSeconds: 5
timeoutSeconds: 3
failureThreshold: 3
startupProbe:
exec:
command:
- pg_isready
- -U
- postgres
- -d
- pleroma
initialDelaySeconds: 15
periodSeconds: 5
timeoutSeconds: 3
failureThreshold: 12
volumes:
- name: postgres-init-volume
configMap:
name: postgres-init
defaultMode: 0755
- name: postgres-config-volume
configMap:
name: postgres-config
volumeClaimTemplates:
- metadata:
name: postgres-data-statefulset
spec:
accessModes: ["ReadWriteOnce"]
storageClassName: longhorn-ssd
resources:
requests:
storage: 10Gi