# Argo CD Application — single source, values inlined.
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: stateful
  namespace: argocd
spec:
  project: default
  destination:
    server: https://kubernetes.default.svc
    namespace: stateful
  source:
    repoURL: ghcr.io/purisev
    chart: universal-helm-chart
    targetRevision: 3.3.0
    helm:
      releaseName: stateful
      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
  syncPolicy:
    automated:
      prune: true
      selfHeal: true
    syncOptions:
      - CreateNamespace=true
      - ServerSideApply=true
