From 25c4310c16be2a03ce505b2a71bfe73d658f3a58 Mon Sep 17 00:00:00 2001 From: Ian Armour Date: Tue, 9 May 2023 03:59:58 -0700 Subject: [PATCH] NAS-121803 / 23.10 / Added overseerr helm chart to community train. (#1170) * Added overseerr helm chart to community train. * Fixed up formatting, removed extra storage and added TZ * Added user configurable timezone and removed additional storage * Use override of built in TZ * Addressed commented feedback in various files * Update library/ix-dev/community/overseerr/app-readme.md * add metadata.yaml --------- Co-authored-by: Ian Armour Co-authored-by: Stavros Kois <47820033+stavros-k@users.noreply.github.com> --- library/ix-dev/community/overseerr/Chart.lock | 6 + library/ix-dev/community/overseerr/Chart.yaml | 25 +++ library/ix-dev/community/overseerr/README.md | 8 + .../ix-dev/community/overseerr/app-readme.md | 8 + .../overseerr/charts/common-1.0.6.tgz | Bin 0 -> 54955 bytes .../community/overseerr/ci/basic-values.yaml | 11 ++ .../overseerr/ci/hostNet-values.yaml | 8 + library/ix-dev/community/overseerr/item.yaml | 3 + .../ix-dev/community/overseerr/metadata.yaml | 8 + .../ix-dev/community/overseerr/questions.yaml | 178 ++++++++++++++++++ .../community/overseerr/templates/NOTES.txt | 1 + .../overseerr/templates/_overseerr.tpl | 84 +++++++++ .../community/overseerr/templates/_portal.tpl | 12 ++ .../community/overseerr/templates/common.yaml | 9 + .../community/overseerr/upgrade_info.json | 1 + .../community/overseerr/upgrade_strategy | 31 +++ .../ix-dev/community/overseerr/values.yaml | 26 +++ 17 files changed, 419 insertions(+) create mode 100644 library/ix-dev/community/overseerr/Chart.lock create mode 100644 library/ix-dev/community/overseerr/Chart.yaml create mode 100644 library/ix-dev/community/overseerr/README.md create mode 100644 library/ix-dev/community/overseerr/app-readme.md create mode 100644 library/ix-dev/community/overseerr/charts/common-1.0.6.tgz create mode 100644 library/ix-dev/community/overseerr/ci/basic-values.yaml create mode 100644 library/ix-dev/community/overseerr/ci/hostNet-values.yaml create mode 100644 library/ix-dev/community/overseerr/item.yaml create mode 100644 library/ix-dev/community/overseerr/metadata.yaml create mode 100644 library/ix-dev/community/overseerr/questions.yaml create mode 100644 library/ix-dev/community/overseerr/templates/NOTES.txt create mode 100644 library/ix-dev/community/overseerr/templates/_overseerr.tpl create mode 100644 library/ix-dev/community/overseerr/templates/_portal.tpl create mode 100644 library/ix-dev/community/overseerr/templates/common.yaml create mode 100644 library/ix-dev/community/overseerr/upgrade_info.json create mode 100755 library/ix-dev/community/overseerr/upgrade_strategy create mode 100644 library/ix-dev/community/overseerr/values.yaml diff --git a/library/ix-dev/community/overseerr/Chart.lock b/library/ix-dev/community/overseerr/Chart.lock new file mode 100644 index 0000000000..b9f2e729b4 --- /dev/null +++ b/library/ix-dev/community/overseerr/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: file://../../../common + version: 1.0.6 +digest: sha256:2f1f31c15fb7f92db141a66adbb8d23a8598727730050a3883a211763a4e5472 +generated: "2023-04-29T20:31:11.523275154-07:00" diff --git a/library/ix-dev/community/overseerr/Chart.yaml b/library/ix-dev/community/overseerr/Chart.yaml new file mode 100644 index 0000000000..051b1767bf --- /dev/null +++ b/library/ix-dev/community/overseerr/Chart.yaml @@ -0,0 +1,25 @@ +name: overseerr +description: Overseerr is a free and open source software application for managing requests for your media library. +annotations: + title: Overseerr +type: application +version: 1.0.0 +apiVersion: v2 +appVersion: '1.32.5' +kubeVersion: '>=1.16.0-0' +maintainers: + - name: truenas + url: https://www.truenas.com/ + email: dev@ixsystems.com +dependencies: + - name: common + repository: file://../../../common + version: 1.0.6 +home: https://github.com/sct/overseerr +icon: https://raw.githubusercontent.com/sct/overseerr/develop/public/os_icon.svg +sources: + - https://hub.docker.com/r/sctx/overseerr + - https://github.com/truenas/charts/tree/master/community/overseer + - https://github.com/sct/overseerr +keywords: + - media diff --git a/library/ix-dev/community/overseerr/README.md b/library/ix-dev/community/overseerr/README.md new file mode 100644 index 0000000000..6a7fe2fd77 --- /dev/null +++ b/library/ix-dev/community/overseerr/README.md @@ -0,0 +1,8 @@ +# Overseerr + +[Overseerr](https://github.com/sct/overseerr) is a free and open source software application for managing requests for your media library. It integrates with your existing services, such as Sonarr, Radarr, and Plex! + +> When application is installed, a container will be launched with **root** privileges. +> This is required in order to apply the correct permissions to the `Overseerr` directories. +> Afterward, the `Overseerr` container will run as a **non**-root user (Default: `568`). +> All mounted storage(s) will be `chown`ed only if the parent directory does not match the configured user. diff --git a/library/ix-dev/community/overseerr/app-readme.md b/library/ix-dev/community/overseerr/app-readme.md new file mode 100644 index 0000000000..6a7fe2fd77 --- /dev/null +++ b/library/ix-dev/community/overseerr/app-readme.md @@ -0,0 +1,8 @@ +# Overseerr + +[Overseerr](https://github.com/sct/overseerr) is a free and open source software application for managing requests for your media library. It integrates with your existing services, such as Sonarr, Radarr, and Plex! + +> When application is installed, a container will be launched with **root** privileges. +> This is required in order to apply the correct permissions to the `Overseerr` directories. +> Afterward, the `Overseerr` container will run as a **non**-root user (Default: `568`). +> All mounted storage(s) will be `chown`ed only if the parent directory does not match the configured user. diff --git a/library/ix-dev/community/overseerr/charts/common-1.0.6.tgz b/library/ix-dev/community/overseerr/charts/common-1.0.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..3cad47477708d72504b24891e40012c3796c5916 GIT binary patch literal 54955 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 + schema: + type: boolean + default: false + + - variable: overseerrStorage + label: "" + group: Storage Configuration + schema: + type: dict + attrs: + - variable: config + label: Overseerr Config Storage + description: The path to store Overseerr Configuration. + schema: + type: dict + attrs: + - variable: type + label: Type + description: | + ixVolume: Is dataset created automatically by the system.
+ Host Path: Is a path that already exists on the system. + schema: + type: string + required: true + default: "ixVolume" + enum: + - value: "hostPath" + description: Host Path (Path that already exists on the system) + - value: "ixVolume" + description: ixVolume (Dataset created automatically by the system) + - variable: datasetName + label: Dataset Name + schema: + type: string + show_if: [["type", "=", "ixVolume"]] + required: true + hidden: true + immutable: true + default: "config" + $ref: + - "normalize/ixVolume" + - variable: hostPath + label: Host Path + schema: + type: hostpath + show_if: [["type", "=", "hostPath"]] + immutable: true + required: true + + - variable: resources + group: Resources Configuration + label: "" + schema: + type: dict + attrs: + - variable: limits + label: Limits + schema: + type: dict + attrs: + - variable: cpu + label: CPU + description: CPU limit for Overseerr. + schema: + type: string + default: "4000m" + required: true + - variable: memory + label: Memory + description: Memory limit for Overseerr. + schema: + type: string + default: "8Gi" + required: true diff --git a/library/ix-dev/community/overseerr/templates/NOTES.txt b/library/ix-dev/community/overseerr/templates/NOTES.txt new file mode 100644 index 0000000000..ba4e01146c --- /dev/null +++ b/library/ix-dev/community/overseerr/templates/NOTES.txt @@ -0,0 +1 @@ +{{ include "ix.v1.common.lib.chart.notes" $ }} diff --git a/library/ix-dev/community/overseerr/templates/_overseerr.tpl b/library/ix-dev/community/overseerr/templates/_overseerr.tpl new file mode 100644 index 0000000000..68dc6fbb44 --- /dev/null +++ b/library/ix-dev/community/overseerr/templates/_overseerr.tpl @@ -0,0 +1,84 @@ +{{- define "overseerr.workload" -}} +workload: + overseerr: + enabled: true + primary: true + type: Deployment + podSpec: + hostNetwork: {{ .Values.overseerrNetwork.hostNetwork }} + containers: + overseerr: + enabled: true + primary: true + imageSelector: image + securityContext: + runAsUser: {{ .Values.overseerrRunAs.user }} + runAsGroup: {{ .Values.overseerrRunAs.group }} + env: + PORT: {{ .Values.overseerrNetwork.webPort }} + envList: + {{ with .Values.overseerrConfig.additionalEnvs }} + {{ range $env := . }} + - name: {{ $env.name }} + value: {{ $env.value }} + {{ end }} + {{ end }} + probes: + liveness: + enabled: true + type: http + port: {{ .Values.overseerrNetwork.webPort }} + path: /api/v1/status + readiness: + enabled: true + type: http + port: {{ .Values.overseerrNetwork.webPort }} + path: /api/v1/status + startup: + enabled: true + type: http + port: {{ .Values.overseerrNetwork.webPort }} + path: /api/v1/status + initContainers: + {{- include "ix.v1.common.app.permissions" (dict "containerName" "01-permissions" + "UID" .Values.overseerrRunAs.user + "GID" .Values.overseerrRunAs.group + "mode" "check" + "type" "init") | nindent 8 }} + +{{/* Service */}} +service: + overseerr: + enabled: true + primary: true + type: NodePort + targetSelector: overseerr + ports: + webui: + enabled: true + primary: true + port: {{ .Values.overseerrNetwork.webPort }} + nodePort: {{ .Values.overseerrNetwork.webPort }} + targetSelector: overseerr + +{{/* Persistence */}} +persistence: + config: + enabled: true + type: {{ .Values.overseerrStorage.config.type }} + datasetName: {{ .Values.overseerrStorage.config.datasetName | default "" }} + hostPath: {{ .Values.overseerrStorage.config.hostPath | default "" }} + targetSelector: + overseerr: + overseerr: + mountPath: /app/config + 01-permissions: + mountPath: /mnt/directories/config + tmp: + enabled: true + type: emptyDir + targetSelector: + overseerr: + overseerr: + mountPath: /tmp +{{- end -}} diff --git a/library/ix-dev/community/overseerr/templates/_portal.tpl b/library/ix-dev/community/overseerr/templates/_portal.tpl new file mode 100644 index 0000000000..5d840a82bd --- /dev/null +++ b/library/ix-dev/community/overseerr/templates/_portal.tpl @@ -0,0 +1,12 @@ +{{- define "overseerr.portal" -}} +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: portal +data: + path: "/" + port: {{ .Values.overseerrNetwork.webPort | quote }} + protocol: http + host: $node_ip +{{- end -}} diff --git a/library/ix-dev/community/overseerr/templates/common.yaml b/library/ix-dev/community/overseerr/templates/common.yaml new file mode 100644 index 0000000000..69a4062be7 --- /dev/null +++ b/library/ix-dev/community/overseerr/templates/common.yaml @@ -0,0 +1,9 @@ +{{- include "ix.v1.common.loader.init" . -}} + +{{/* Merge the templates with Values */}} +{{- $_ := mustMergeOverwrite .Values (include "overseerr.workload" $ | fromYaml) -}} + +{{/* Create the configmap for portal manually*/}} +{{- include "overseerr.portal" $ -}} + +{{- include "ix.v1.common.loader.apply" . -}} diff --git a/library/ix-dev/community/overseerr/upgrade_info.json b/library/ix-dev/community/overseerr/upgrade_info.json new file mode 100644 index 0000000000..767388094a --- /dev/null +++ b/library/ix-dev/community/overseerr/upgrade_info.json @@ -0,0 +1 @@ +{"filename": "values.yaml", "keys": ["image"]} diff --git a/library/ix-dev/community/overseerr/upgrade_strategy b/library/ix-dev/community/overseerr/upgrade_strategy new file mode 100755 index 0000000000..41e9448b21 --- /dev/null +++ b/library/ix-dev/community/overseerr/upgrade_strategy @@ -0,0 +1,31 @@ +#!/usr/bin/python3 +import json +import re +import sys + +from catalog_update.upgrade_strategy import semantic_versioning + + +RE_STABLE_VERSION = re.compile(r'[0-9]+\.[0-9]+\.[0-9]+') + + +def newer_mapping(image_tags): + key = list(image_tags.keys())[0] + tags = {t: t for t in image_tags[key] if RE_STABLE_VERSION.fullmatch(t)} + version = semantic_versioning(list(tags)) + if not version: + return {} + + return { + 'tags': {key: tags[version]}, + 'app_version': version, + } + + +if __name__ == '__main__': + try: + versions_json = json.loads(sys.stdin.read()) + except ValueError: + raise ValueError('Invalid json specified') + + print(json.dumps(newer_mapping(versions_json))) diff --git a/library/ix-dev/community/overseerr/values.yaml b/library/ix-dev/community/overseerr/values.yaml new file mode 100644 index 0000000000..0cfefda05d --- /dev/null +++ b/library/ix-dev/community/overseerr/values.yaml @@ -0,0 +1,26 @@ +image: + repository: sctx/overseerr + pullPolicy: IfNotPresent + tag: '1.32.5' + +resources: + limits: + cpu: 4000m + memory: 8Gi + +overseerrConfig: + additionalEnvs: [] + +overseerrNetwork: + webPort: 30000 + hostNetwork: false + +overseerrRunAs: + user: 568 + group: 568 + +overseerrStorage: + config: + type: ixVolume + hostPath: '' + datasetName: config