apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
metadata:
  name: stateful
  namespace: stateful
spec:
  interval: 5m
  releaseName: stateful
  chartRef:
    kind: OCIRepository
    name: universal-helm-chart
    namespace: flux-system
  install:
    createNamespace: true
  values:
    statefulSets:
      db:
        enabled: true
        replicaCount: 3
        image:
          repository: postgres
          tag: "16.3"
        service:
          enabled: true
          clusterIP: None
          ports:
            postgres:
              port: 5432
              targetPort: 5432
        env:
          POSTGRES_DB:
            value: app
          PGDATA:
            value: /var/lib/postgresql/data/pgdata
        envSecrets:
          - db-credentials
        volumeClaimTemplates:
          - metadata:
              name: data
            spec:
              accessModes:
                - ReadWriteOnce
              resources:
                requests:
                  storage: 10Gi
        volumeMounts:
          data:
            mountPath: /var/lib/postgresql/data
        resources:
          requests:
            cpu: 200m
            memory: 512Mi
          limits:
            memory: 1Gi
        securityContext:
          readOnlyRootFilesystem: false
          allowPrivilegeEscalation: false
          capabilities:
            drop:
              - ALL
        podSecurityContext:
          runAsNonRoot: true
          runAsUser: 999
          runAsGroup: 999
          fsGroup: 999
          seccompProfile:
            type: RuntimeDefault
    podDisruptionBudget:
      enabled: true
      minAvailable: 2
