# PostgreSQL fuer Buchungen, Zahlungen, Gutscheine und Protokoll. # # Datenverzeichnis: PVC "artista-modelcamp-postgres-data" (storage.yaml), im # Produktions-Overlay auf SMB. Das ist eine BEWUSSTE, vom Betreiber # akzeptierte Ausnahme von der Empfehlung "Blockspeicher": SMB garantiert # Sperren und fsync nicht in jedem Fall wie ein lokales Dateisystem. Die # Mount-Optionen in smb-volumes.yaml sind darauf ausgelegt; Risiken und # Hinweise zur Sicherung stehen in docs/BETRIEB.md. apiVersion: apps/v1 kind: StatefulSet metadata: name: artista-modelcamp-postgres spec: serviceName: artista-modelcamp-postgres replicas: 1 selector: matchLabels: app.kubernetes.io/name: artista-modelcamp-postgres template: metadata: labels: app.kubernetes.io/name: artista-modelcamp-postgres spec: automountServiceAccountToken: false # Beim Beenden sauber herunterfahren (Checkpoint), bevor das Volume # ausgehaengt wird — auf Netzwerkspeicher besonders wichtig. terminationGracePeriodSeconds: 120 securityContext: runAsNonRoot: true runAsUser: 70 runAsGroup: 70 seccompProfile: { type: RuntimeDefault } containers: - name: postgres image: postgres:18.1-alpine ports: - containerPort: 5432 env: - name: POSTGRES_USER value: artista - name: POSTGRES_DB value: artista - name: POSTGRES_PASSWORD valueFrom: secretKeyRef: { name: artista-modelcamp-secrets, key: DB_PASSWORD } volumeMounts: # Ab PostgreSQL 18 liegt PGDATA unter /var/lib/postgresql/18/docker. - name: data mountPath: /var/lib/postgresql readinessProbe: exec: { command: ["pg_isready", "-U", "artista"] } periodSeconds: 5 livenessProbe: exec: { command: ["pg_isready", "-U", "artista"] } initialDelaySeconds: 60 periodSeconds: 20 failureThreshold: 6 resources: requests: { cpu: 100m, memory: 256Mi } limits: { memory: 1Gi } securityContext: allowPrivilegeEscalation: false capabilities: { drop: ["ALL"] } volumes: - name: data persistentVolumeClaim: { claimName: artista-modelcamp-postgres-data } --- apiVersion: v1 kind: Service metadata: name: artista-modelcamp-postgres spec: clusterIP: None selector: app.kubernetes.io/name: artista-modelcamp-postgres ports: - port: 5432