# PostgreSQL 18 with pgvector for Discourse. Runs alongside the old Bitnami # PostgreSQL 17 StatefulSet, whose volume stays untouched for rollback. apiVersion: v1 kind: Service metadata: name: discourse-postgres18 namespace: discourse labels: app.kubernetes.io/name: discourse-postgres18 spec: clusterIP: None selector: app.kubernetes.io/name: discourse-postgres18 ports: - name: postgresql port: 5432 targetPort: postgresql --- apiVersion: apps/v1 kind: StatefulSet metadata: name: discourse-postgres18 namespace: discourse labels: app.kubernetes.io/name: discourse-postgres18 spec: serviceName: discourse-postgres18 replicas: 1 selector: matchLabels: app.kubernetes.io/name: discourse-postgres18 template: metadata: labels: app.kubernetes.io/name: discourse-postgres18 spec: containers: - name: postgresql image: pgvector/pgvector:pg18 ports: - name: postgresql containerPort: 5432 env: - name: POSTGRES_USER value: postgres - name: POSTGRES_PASSWORD valueFrom: secretKeyRef: name: discourse-postgresql key: postgres-password readinessProbe: exec: command: ["pg_isready", "-U", "postgres", "-h", "127.0.0.1"] periodSeconds: 10 failureThreshold: 6 livenessProbe: exec: command: ["pg_isready", "-U", "postgres", "-h", "127.0.0.1"] initialDelaySeconds: 60 periodSeconds: 10 failureThreshold: 6 volumeMounts: - name: data mountPath: /var/lib/postgresql volumeClaimTemplates: - metadata: name: data spec: accessModes: ["ReadWriteOnce"] storageClassName: nfs-client resources: requests: storage: 2Ti