Files
Wabenhain/k8s/03-postgres.yaml
T
Nick Szaunig 5889f58da7
Docker Image bauen und veroeffentlichen / build-and-push (push) Waiting to run
feat: Docker-, Kubernetes- und Gitea-Actions-Deployment-Pipeline
Dockerfile (Multi-Stage, "output: standalone"), docker-compose.yml mit
Caddy als einzigem nach aussen offenem Reverse-Proxy (verhindert
X-Forwarded-For-Faelschung fuer das App-eigene Rate-Limiting), Gitea
Actions Workflow der bei jedem Push zwei Image-Tags in die Gitea-
Container-Registry baut (schlankes Laufzeit-Image + ein Migrations-
Image mit Prisma-CLI), sowie rohe Kubernetes-Manifeste (Namespace,
ConfigMap, Secret-Vorlage, Postgres-/MySQL-StatefulSet, Migrations-Job,
App-Deployment, Ingress) fuer den Cluster-Betrieb. Siehe k8s/README.md
fuer den vollstaendigen Einrichtungs-/Deployment-Ablauf.
2026-08-17 14:30:46 +02:00

73 lines
1.9 KiB
YAML

# Standard-Datenbank (DATABASE_PROVIDER=postgresql in 01-configmap.yaml).
# Nur anwenden, wenn du Postgres nutzt — fuer MySQL stattdessen 03-mysql.yaml
# anwenden (nicht beide gleichzeitig).
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: wabenhain-postgres
namespace: wabenhain
spec:
serviceName: wabenhain-postgres
replicas: 1
selector:
matchLabels:
app: wabenhain-postgres
template:
metadata:
labels:
app: wabenhain-postgres
spec:
containers:
- name: postgres
image: postgres:16.15-alpine
ports:
- containerPort: 5432
env:
- name: POSTGRES_USER
value: wabenhain
- name: POSTGRES_DB
value: wabenhain
- name: POSTGRES_PASSWORD
valueFrom:
secretKeyRef:
name: wabenhain-secrets
key: DB_PASSWORD
volumeMounts:
- name: data
mountPath: /var/lib/postgresql/data
readinessProbe:
exec:
command: ["pg_isready", "-U", "wabenhain"]
initialDelaySeconds: 5
periodSeconds: 5
resources:
requests:
cpu: 100m
memory: 256Mi
limits:
memory: 512Mi
volumeClaimTemplates:
- metadata:
name: data
spec:
accessModes: ["ReadWriteOnce"]
resources:
requests:
# Bei Bedarf anpassen — abhaengig vom StorageClass deines Clusters.
storage: 5Gi
---
apiVersion: v1
kind: Service
metadata:
name: wabenhain-postgres
namespace: wabenhain
spec:
# Headless (kein eigener ClusterIP) — Standard fuer StatefulSets, DNS-Name
# "wabenhain-postgres.wabenhain.svc.cluster.local" bleibt stabil.
clusterIP: None
selector:
app: wabenhain-postgres
ports:
- port: 5432
targetPort: 5432