From 9e126bd52e353e1313360515b8a24dfe36e976fb Mon Sep 17 00:00:00 2001 From: Joseph Hanson Date: Thu, 5 Sep 2024 05:40:23 -0500 Subject: [PATCH] add recyclarr --- kubernetes/apps/default/kustomization.yaml | 1 + .../default/recyclarr/app/externalsecret.yaml | 30 +++ .../default/recyclarr/app/helmrelease.yaml | 72 +++++++ .../default/recyclarr/app/kustomization.yaml | 14 ++ .../recyclarr/app/resources/recyclarr.yml | 200 ++++++++++++++++++ kubernetes/apps/default/recyclarr/ks.yaml | 28 +++ 6 files changed, 345 insertions(+) create mode 100644 kubernetes/apps/default/recyclarr/app/externalsecret.yaml create mode 100644 kubernetes/apps/default/recyclarr/app/helmrelease.yaml create mode 100644 kubernetes/apps/default/recyclarr/app/kustomization.yaml create mode 100644 kubernetes/apps/default/recyclarr/app/resources/recyclarr.yml create mode 100644 kubernetes/apps/default/recyclarr/ks.yaml diff --git a/kubernetes/apps/default/kustomization.yaml b/kubernetes/apps/default/kustomization.yaml index 171fe40..4be3a42 100644 --- a/kubernetes/apps/default/kustomization.yaml +++ b/kubernetes/apps/default/kustomization.yaml @@ -20,3 +20,4 @@ resources: - ./omegabrr/ks.yaml - ./it-tools/ks.yaml - ./excalidraw/ks.yaml + - ./recyclarr/ks.yaml diff --git a/kubernetes/apps/default/recyclarr/app/externalsecret.yaml b/kubernetes/apps/default/recyclarr/app/externalsecret.yaml new file mode 100644 index 0000000..380172c --- /dev/null +++ b/kubernetes/apps/default/recyclarr/app/externalsecret.yaml @@ -0,0 +1,30 @@ +--- +# yaml-language-server: $schema=https://ks.hsn.dev/external-secrets.io/externalsecret_v1beta1.json +apiVersion: external-secrets.io/v1beta1 +kind: ExternalSecret +metadata: + name: recyclarr +spec: + secretStoreRef: + kind: ClusterSecretStore + name: onepassword-connect + target: + name: recyclarr-secret + template: + engineVersion: v2 + data: + RADARR_API_KEY: "{{ .radarr_api_key }}" + SONARR_API_KEY: "{{ .sonarr_api_key }}" + dataFrom: + - extract: + key: radarr + rewrite: + - regexp: + source: "(.*)" + target: "radarr_$1" + - extract: + key: sonarr + rewrite: + - regexp: + source: "(.*)" + target: "sonarr_$1" diff --git a/kubernetes/apps/default/recyclarr/app/helmrelease.yaml b/kubernetes/apps/default/recyclarr/app/helmrelease.yaml new file mode 100644 index 0000000..7402e9f --- /dev/null +++ b/kubernetes/apps/default/recyclarr/app/helmrelease.yaml @@ -0,0 +1,72 @@ +--- +# yaml-language-server: $schema=https://ks.hsn.dev/helm.toolkit.fluxcd.io/helmrelease_v2beta2.json +apiVersion: helm.toolkit.fluxcd.io/v2 +kind: HelmRelease +metadata: + name: recyclarr +spec: + interval: 30m + chart: + spec: + chart: app-template + version: 3.4.0 + sourceRef: + kind: HelmRepository + name: bjw-s + namespace: flux-system + install: + remediation: + retries: 3 + upgrade: + cleanupOnFail: true + remediation: + retries: 3 + strategy: rollback + values: + controllers: + recyclarr: + type: cronjob + annotations: + reloader.stakater.com/auto: "true" + cronjob: + schedule: "@daily" + containers: + app: + image: + repository: ghcr.io/recyclarr/recyclarr + tag: 7.2.2@sha256:149eacfb27a51e001c50b60bf6b0eeae15c4dbbde46a1e1d30bf11032ef7f734 + env: + # Ref: https://github.com/Radarr/Radarr/issues/7030#issuecomment-1039689518 + # Ref: https://github.com/dotnet/runtime/issues/9336 + COMPlus_EnableDiagnostics: "0" + TZ: America/Chicago + envFrom: + - secretRef: + name: recyclarr-secret + args: ["sync"] + securityContext: + allowPrivilegeEscalation: false + readOnlyRootFilesystem: true + capabilities: { drop: ["ALL"] } + resources: + requests: + cpu: 10m + limits: + memory: 128Mi + pod: + securityContext: + runAsUser: 568 + runAsGroup: 568 + runAsNonRoot: true + fsGroup: 568 + fsGroupChangePolicy: OnRootMismatch + persistence: + config: + existingClaim: recyclarr + config-file: + type: configMap + name: recyclarr-configmap + globalMounts: + - path: /config/recyclarr.yml + subPath: recyclarr.yml + readOnly: true diff --git a/kubernetes/apps/default/recyclarr/app/kustomization.yaml b/kubernetes/apps/default/recyclarr/app/kustomization.yaml new file mode 100644 index 0000000..bdf6840 --- /dev/null +++ b/kubernetes/apps/default/recyclarr/app/kustomization.yaml @@ -0,0 +1,14 @@ +--- +# yaml-language-server: $schema=https://json.schemastore.org/kustomization +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +resources: + - ./externalsecret.yaml + - ./helmrelease.yaml + - ../../../../templates/volsync +configMapGenerator: + - name: recyclarr-configmap + files: + - recyclarr.yml=./resources/recyclarr.yml +generatorOptions: + disableNameSuffixHash: true diff --git a/kubernetes/apps/default/recyclarr/app/resources/recyclarr.yml b/kubernetes/apps/default/recyclarr/app/resources/recyclarr.yml new file mode 100644 index 0000000..51337c7 --- /dev/null +++ b/kubernetes/apps/default/recyclarr/app/resources/recyclarr.yml @@ -0,0 +1,200 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/recyclarr/recyclarr/master/schemas/config-schema.json +sonarr: + sonarr: + base_url: http://sonarr.default.svc.cluster.local + api_key: !env_var SONARR_API_KEY + + delete_old_custom_formats: true + replace_existing_custom_formats: true + + quality_definition: + type: series + + quality_profiles: + - name: Web 1080p + reset_unmatched_scores: + enabled: true + upgrade: + allowed: true + until_quality: Web-1080p + until_score: 10000 + min_format_score: 0 + quality_sort: top + qualities: + - name: Web-1080p + qualities: + - WEBDL-1080p + - WEBRip-1080p + - name: HDTV-1080p + - name: Web-720p + qualities: + - WEBDL-720p + - WEBRip-720p + - name: HDTV-720p + - name: Web-480p + qualities: + - WEBDL-480p + - WEBRip-480p + - name: DVD + - name: SDTV + - name: Web 720p + reset_unmatched_scores: + enabled: true + upgrade: + allowed: true + until_quality: Web-720p + until_score: 10000 + min_format_score: 0 + quality_sort: top + qualities: + - name: Web-720p + qualities: + - WEBDL-720p + - WEBRip-720p + - name: HDTV-720p + - name: Web-480p + qualities: + - WEBDL-480p + - WEBRip-480p + - name: DVD + - name: SDTV + custom_formats: + - trash_ids: + # Unwanted + - 85c61753df5da1fb2aab6f2a47426b09 # BR-DISK + - 9c11cd3f07101cdba90a2d81cf0e56b4 # LQ + - 47435ece6b99a0b477caf360e79ba0bb # x265 (HD) + - fbcb31d8dabd2a319072b84fc0b7249c # Extras + # Misc + - ec8fa7296b64e8cd390a1600981f3923 # Repack/Proper + - eb3d5cc0a2be0db205fb823640db6a3c # Repack v2 + - 44e7c4de10ae50265753082e5dc76047 # Repack v3 + # Streaming Services + - d660701077794679fd59e8bdf4ce3a29 # AMZN + - f67c9ca88f463a48346062e8ad07713f # ATVP + - 4e9a630db98d5391aec1368a0256e2fe # CRAV + - 36b72f59f4ea20aad9316f475f2d9fbb # DCU + - 89358767a60cc28783cdc3d0be9388a4 # DSNP + - 7a235133c87f7da4c8cccceca7e3c7a6 # HBO + - a880d6abc21e7c16884f3ae393f84179 # HMAX + - f6cce30f1733d5c8194222a7507909bb # HULU + - 0ac24a2a68a9700bcb7eeca8e5cd644c # iT + - 81d1fbf600e2540cee87f3a23f9d3c1c # MAX + - d34870697c9db575f17700212167be23 # NF + - b2b980877494b560443631eb1f473867 # NLZ + - fb1a91cdc0f26f7ca0696e0e95274645 # OViD + - 1656adc6d7bb2c8cca6acfb6592db421 # PCOK + - c67a75ae4a1715f2bb4d492755ba4195 # PMTP + - 3ac5d84fce98bab1b531393e9c82f467 # QIBI + - c30d2958827d1867c73318a5a2957eb1 # RED + - ae58039e1319178e6be73caab5c42166 # SHO + - 1efe8da11bfd74fbbcd4d8117ddb9213 # STAN + - 5d2317d99af813b6529c7ebf01c83533 # VDL + - 77a7b25585c18af08f60b1547bb9b4fb # CC + # HQ Source Groups + - e6258996055b9fbab7e9cb2f75819294 # WEB Tier 01 + - 58790d4e2fdcd9733aa7ae68ba2bb503 # WEB Tier 02 + - d84935abd3f8556dcd51d4f27e22d0a6 # WEB Tier 03 + - d0c516558625b04b363fa6c5c2c7cfd4 # WEB Scene + quality_profiles: + - name: Web 1080p + - name: Web 720p + +radarr: + radarr: + base_url: http://radarr.default.svc.cluster.local + api_key: !env_var RADARR_API_KEY + + delete_old_custom_formats: true + replace_existing_custom_formats: true + + quality_definition: + type: movie + + quality_profiles: + - name: Remux/Web 1080p + reset_unmatched_scores: + enabled: true + upgrade: + allowed: true + until_quality: Remux-1080p + until_score: 10000 + min_format_score: 0 + quality_sort: top + qualities: + - name: Remux-1080p + - name: Bluray-1080p + enabled: false + - name: Web-1080p + qualities: + - WEBDL-1080p + - WEBRip-1080p + - name: HDTV-1080p + custom_formats: + - trash_ids: + # Audio + - 496f355514737f7d83bf7aa4d24f8169 # TrueHD Atmos + - 2f22d89048b01681dde8afe203bf2e95 # DTS X + - 417804f7f2c4308c1f4c5d380d4c4475 # ATMOS (undefined) + - 1af239278386be2919e1bcee0bde047e # DD+ ATMOS + - 3cafb66171b47f226146a0770576870f # TrueHD + - dcf3ec6938fa32445f590a4da84256cd # DTS-HD MA + - a570d4a0e56a2874b64e5bfa55202a1b # FLAC + - e7c2fcae07cbada050a0af3357491d7b # PCM + - 8e109e50e0a0b83a5098b056e13bf6db # DTS-HD HRA + - 185f1dd7264c4562b9022d963ac37424 # DD+ + - f9f847ac70a0af62ea4a08280b859636 # DTS-ES + - 1c1a4c5e823891c75bc50380a6866f73 # DTS + - 240770601cc226190c367ef59aba7463 # AAC + - c2998bd0d90ed5621d8df281e839436e # DD + # Movie Versions + - 0f12c086e289cf966fa5948eac571f44 # Hybrid + - 570bc9ebecd92723d2d21500f4be314c # Remaster + - eca37840c13c6ef2dd0262b141a5482f # 4K Remaster + - e0c07d59beb37348e975a930d5e50319 # Criterion Collection + - 9d27d9d2181838f76dee150882bdc58c # Masters of Cinema + - db9b4c4b53d312a3ca5f1378f6440fc9 # Vinegar Syndrome + - 957d0f44b592285f26449575e8b1167e # Special Edition + - eecf3a857724171f968a66cb5719e152 # IMAX + - 9f6cbff8cfe4ebbc1bde14c7b7bec0de # IMAX Enhanced + # HQ Release Groups + - 3a3ff47579026e76d6504ebea39390de # Remux Tier 01 + - 9f98181fe5a3fbeb0cc29340da2a468a # Remux Tier 02 + - 8baaf0b3142bf4d94c42a724f034e27a # Remux Tier 03 + - c20f169ef63c5f40c2def54abaf4438e # WEB Tier 01 + - 403816d65392c79236dcb6dd591aeda4 # WEB Tier 02 + - af94e0fe497124d1f9ce732069ec8c3b # WEB Tier 03 + # Misc + - e7718d7a3ce595f289bfee26adc178f5 # Repack/Proper + - ae43b294509409a6a13919dedd4764c4 # Repack2 + # Unwanted + - ed38b889b31be83fda192888e2286d83 # BR-DISK + - 90a6f9a284dff5103f6346090e6280c8 # LQ + - dc98083864ea246d05a42df0d05f81cc # x265 (HD) + - b8cd450cbfa689c0259a01d9e29ba3d6 # 3D + # Streaming Services + - cc5e51a9e85a6296ceefe097a77f12f4 # BCORE + - 2a6039655313bf5dab1e43523b62c374 # MA + - 16622a6911d1ab5d5b8b713d5b0036d4 # CRiT + quality_profiles: + - name: Remux/Web 1080p + - trash_ids: + # Streaming Services + - b3b3a6ac74ecbd56bcdbefa4799fb9df # AMZN + - 40e9380490e748672c2522eaaeb692f7 # ATVP + - f6ff65b3f4b464a79dcc75950fe20382 # CRAV + - 84272245b2988854bfb76a16e60baea5 # DSNP + - 509e5f41146e278f9eab1ddaceb34515 # HBO + - 5763d1b0ce84aff3b21038eea8e9b8ad # HMAX + - 526d445d4c16214309f0fd2b3be18a89 # Hulu + - 6a061313d22e51e0f25b7cd4dc065233 # MAX + - 170b1d363bd8516fbf3a3eb05d4faff6 # NF + - fbca986396c5e695ef7b2def3c755d01 # OViD + - bf7e73dd1d85b12cc527dc619761c840 # Pathe + - c9fd353f8f5f1baf56dc601c4cb29920 # PCOK + - e36a0ba1bc902b26ee40818a1d59b8bd # PMTP + - c2863d2a50c9acad1fb50e53ece60817 # STAN + quality_profiles: + - name: Remux/Web 1080p + score: 0 diff --git a/kubernetes/apps/default/recyclarr/ks.yaml b/kubernetes/apps/default/recyclarr/ks.yaml new file mode 100644 index 0000000..d9bbcdb --- /dev/null +++ b/kubernetes/apps/default/recyclarr/ks.yaml @@ -0,0 +1,28 @@ +--- +# yaml-language-server: $schema=https://ks.hsn.dev/kustomize.toolkit.fluxcd.io/kustomization_v1.json +apiVersion: kustomize.toolkit.fluxcd.io/v1 +kind: Kustomization +metadata: + name: &app recyclarr + namespace: flux-system +spec: + targetNamespace: default + commonMetadata: + labels: + app.kubernetes.io/name: *app + dependsOn: + - name: external-secrets-stores + - name: volsync + path: ./kubernetes/apps/default/recyclarr/app + prune: true + sourceRef: + kind: GitRepository + name: theshire + wait: false + interval: 30m + retryInterval: 1m + timeout: 5m + postBuild: + substitute: + APP: *app + VOLSYNC_CAPACITY: 1Gi