apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
metadata:
  name: &app recyclarr
  namespace: arr
spec:
  interval: 15m
  chart:
    spec:
      chart: app-template
      version: 3.7.1
      interval: 30m
      sourceRef:
        kind: HelmRepository
        name: bjw-s
        namespace: flux-system

  install:
    remediation:
      retries: 3

  upgrade:
    remediation:
      retries: 3

  values:
    global:
      fullnameOverride: *app
      namespace: arr

    controllers:
      recyclarr:
        enabled: true
        type: cronjob
        annotations:
          reloader.stakater.com/auto: "true"
        cronjob:
          concurrencyPolicy: Forbid
          schedule: "0 2 * * 1"
          startingDeadlineSeconds: 30
          successfulJobsHistory: 1
          failedJobsHistory: 1
          backoffLimit: 1

        pod:
          securityContext:
            runAsUser: &context 1000
            runAsGroup: *context
            fsGroup: *context
            fsGroupChangePolicy: "OnRootMismatch"
          dnsPolicy: None

        containers:
          app:
            image:
              repository: ghcr.io/recyclarr/recyclarr
              tag: 7.4.1
            command: ["/app/recyclarr/recyclarr"]
            args: ["sync"]
            env:
              TZ: ${TZ}
              SONARR_API_KEY:
                valueFrom:
                  secretKeyRef:
                    name: recyclarr-secrets
                    key: SONARR_API_KEY
              RADARR_API_KEY:
                valueFrom:
                  secretKeyRef:
                    name: recyclarr-secrets
                    key: RADARR_API_KEY
            securityContext:
              allowPrivilegeEscalation: false
              capabilities:
                drop:
                  - ALL
            resources:
              requests:
                cpu: 5m
                memory: 36Mi
              limits:
                memory: 200Mi

    persistence:
      config-file:
        type: configMap
        name: recyclarr-config
        globalMounts:
          - path: /config/recyclarr.yml
            subPath: recyclarr.yml
            readOnly: true
      config:
        type: emptyDir
        globalMounts:
          - path: /config