apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
metadata:
  name: &app sonarr
  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:
      sonarr:
        enabled: true
        type: statefulset
        annotations:
          reloader.stakater.com/auto: "true"

        replicas: 1

        statefulset:
          volumeClaimTemplates:
            - name: sonarr-config
              accessMode: ReadWriteOnce
              size: 3Gi
              storageClass: longhorn
              globalMounts:
                - path: /config

        pod:
          securityContext:
            runAsUser: 1000
            runAsGroup: &group 1000
            fsGroup: *group
            fsGroupChangePolicy: "OnRootMismatch"

        containers:
          app:
            image:
              repository: ghcr.io/onedr0p/sonarr
              tag: 4.0.13.2932
              pullPolicy: IfNotPresent
            env:
              TZ: "${TZ}"
              SONARR__INSTANCE_NAME: *app
              SONARR__PORT: &port 8989
              SONARR__APPLICATION_URL: "https://sonarr.${LOCAL_DOMAIN}"
              SONARR__THEME: dark
              SONARR__LOG_LEVEL: info

            probes:
              liveness:
                enabled: false

            securityContext:
              allowPrivilegeEscalation: false
              capabilities:
                drop:
                  - ALL

            resources:
              requests:
                cpu: 100m
                memory: 200Mi
              limits:
                memory: 512Mi

    service:
      app:
        primary: true
        controller: sonarr
        ports:
          http:
            port: *port

    ingress:
      internal:
        enabled: true
        className: nginx
        hosts:
          - host: "sonarr.${LOCAL_DOMAIN}"
            paths:
              - path: /
                pathType: Prefix
                service:
                  identifier: app
                  port: http
        tls:
          - hosts:
              - "sonarr.${LOCAL_DOMAIN}"
            secretName: local-mafyuh-dev-production-tls

    persistence:
      data:
        enabled: true
        type: nfs
        server: "${NAS_IP}"
        path: /mnt/thePool/thePoolShare
        globalMounts:
          - path: /data