diff --git a/catalog.json b/catalog.json index 6888ecec7b..06226ebd97 100644 --- a/catalog.json +++ b/catalog.json @@ -30,7 +30,7 @@ "latest_version": "1.0.77", "latest_app_version": "2023.4.2", "latest_human_version": "2023.4.2_1.0.77", - "last_update": "2023-04-07 17:50:37", + "last_update": "2023-04-10 15:27:14", "name": "home-assistant", "recommended": false, "title": "Home Assistant", @@ -73,25 +73,6 @@ "title": "Emby Server", "icon_url": "https://images-na.ssl-images-amazon.com/images/I/41NwssJC1iL.png" }, - "sonarr": { - "app_readme": "

Sonarr

\n

Sonarr is a PVR for Usenet and BitTorrent users. It can monitor multiple RSS feeds for new episodes of your favorite shows and will grab, sort and rename them.

\n
\n

When application is installed, a container will be launched with root privileges.\nThis is required in order to apply the correct permissions to the Sonarr directories.\nAfterward, the Sonarr container will run as a non-root user (Default: 568).\nAll mounted storage(s) will be chowned only if the parent directory does not match the configured user.

\n
", - "categories": [ - "media", - "series" - ], - "description": "Sonarr is a PVR for Usenet and BitTorrent users.", - "healthy": true, - "healthy_error": null, - "location": "/__w/charts/charts/charts/sonarr", - "latest_version": "1.0.0", - "latest_app_version": "3.0.10.1567", - "latest_human_version": "3.0.10.1567_1.0.0", - "last_update": "2023-04-07 17:42:39", - "name": "sonarr", - "recommended": false, - "title": "Sonarr", - "icon_url": "https://raw.githubusercontent.com/Sonarr/Sonarr/develop/Logo/256.png" - }, "diskoverdata": { "app_readme": "

DiskOver App for TrueNAS SCALE

", "categories": [ @@ -149,25 +130,6 @@ "title": "Pi-hole", "icon_url": "https://github.com/pi-hole/graphics/raw/master/Vortex/Vortex_Vertical_wordmark_lightmode.png?raw=true)" }, - "radarr": { - "app_readme": "

Radarr

\n

Radarr is a movie collection manager for Usenet and BitTorrent users.

\n
\n

When application is installed, a container will be launched with root privileges.\nThis is required in order to apply the correct permissions to the Radarr directories.\nAfterward, the Radarr container will run as a non-root user (Default: 568).\nAll mounted storage(s) will be chowned only if the parent directory does not match the configured user.

\n
", - "categories": [ - "media", - "movies" - ], - "description": "Radarr is a movie collection manager for Usenet and BitTorrent users.", - "healthy": true, - "healthy_error": null, - "location": "/__w/charts/charts/charts/radarr", - "latest_version": "1.0.0", - "latest_app_version": "4.3.2.6857", - "latest_human_version": "4.3.2.6857_1.0.0", - "last_update": "2023-04-07 17:43:54", - "name": "radarr", - "recommended": false, - "title": "Radarr", - "icon_url": "https://raw.githubusercontent.com/Radarr/Radarr/develop/Logo/256.png" - }, "wg-easy": { "app_readme": "

WG-Easy

\n

WG-Easy (WireGuard Easy) is the easiest way to install & manage WireGuard!

", "categories": [ @@ -325,6 +287,25 @@ "title": "qBittorrent", "icon_url": "https://upload.wikimedia.org/wikipedia/commons/9/9e/Qbittorrent_logo.png" }, + "sonarr": { + "app_readme": "

Sonarr

\n

Sonarr is a PVR for Usenet and BitTorrent users. It can monitor multiple RSS feeds for new episodes of your favorite shows and will grab, sort and rename them.

\n
\n

When application is installed, a container will be launched with root privileges.\nThis is required in order to apply the correct permissions to the Sonarr directories.\nAfterward, the Sonarr container will run as a non-root user (Default: 568).\nAll mounted storage(s) will be chowned only if the parent directory does not match the configured user.

\n
", + "categories": [ + "media", + "series" + ], + "description": "Sonarr is a PVR for Usenet and BitTorrent users.", + "healthy": true, + "healthy_error": null, + "location": "/__w/charts/charts/community/sonarr", + "latest_version": "1.0.0", + "latest_app_version": "3.0.10.1567", + "latest_human_version": "3.0.10.1567_1.0.0", + "last_update": null, + "name": "sonarr", + "recommended": false, + "title": "Sonarr", + "icon_url": "https://raw.githubusercontent.com/Sonarr/Sonarr/develop/Logo/256.png" + }, "chia": { "app_readme": "

Chia

\n

This container runs as root user.

\n

When a port is set to < 9000. Host Networking is enabled automatically.

\n
\n

Also NodePort services turn to ClusterIP services, to avoid attempts to bind ports twice.

\n
\n

Key file is stored in /plots/keyfile and is generated automatically, only if the file does not exist.\nIf you want to use your own keyfile, you can create a file called keyfile in the /plots directory and it will be used instead.

\n
\n

When set on harvester mode keys variable is set to none and no generation is performed.

\n
", "categories": [ @@ -344,6 +325,25 @@ "title": "Chia", "icon_url": "https://www.chia.net/wp-content/uploads/2022/09/chia-logo.svg" }, + "radarr": { + "app_readme": "

Radarr

\n

Radarr is a movie collection manager for Usenet and BitTorrent users.

\n
\n

When application is installed, a container will be launched with root privileges.\nThis is required in order to apply the correct permissions to the Radarr directories.\nAfterward, the Radarr container will run as a non-root user (Default: 568).\nAll mounted storage(s) will be chowned only if the parent directory does not match the configured user.

\n
", + "categories": [ + "media", + "movies" + ], + "description": "Radarr is a movie collection manager for Usenet and BitTorrent users.", + "healthy": true, + "healthy_error": null, + "location": "/__w/charts/charts/community/radarr", + "latest_version": "1.0.0", + "latest_app_version": "4.3.2.6857", + "latest_human_version": "4.3.2.6857_1.0.0", + "last_update": null, + "name": "radarr", + "recommended": false, + "title": "Radarr", + "icon_url": "https://raw.githubusercontent.com/Radarr/Radarr/develop/Logo/256.png" + }, "ipfs": { "app_readme": "

IPFS

\n

Interplanetary Filesystem - the Web3 standard for content-addressing, interoperable with HTTP

\n
\n

When application is installed, a container will be launched with root privileges.\nThis is required in order to apply the correct permissions to the ipfs directories.\nAfterward, the ipfs container will run as a non-root user (Default: 568).

\n
", "categories": [ diff --git a/community/radarr/1.0.0/Chart.lock b/community/radarr/1.0.0/Chart.lock new file mode 100644 index 0000000000..e9f55bee40 --- /dev/null +++ b/community/radarr/1.0.0/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: file://../../../common + version: 1.0.3 +digest: sha256:1a090020cfa582aff29906320874ffe9b543fcc6c2423c281f434514f2653e02 +generated: "2023-04-07T14:31:28.408246409+03:00" diff --git a/community/radarr/1.0.0/Chart.yaml b/community/radarr/1.0.0/Chart.yaml new file mode 100644 index 0000000000..e7b668de02 --- /dev/null +++ b/community/radarr/1.0.0/Chart.yaml @@ -0,0 +1,25 @@ +name: radarr +description: Radarr is a movie collection manager for Usenet and BitTorrent users. +annotations: + title: Radarr +type: application +version: 1.0.0 +apiVersion: v2 +appVersion: '4.3.2.6857' +kubeVersion: '>=1.16.0-0' +maintainers: + - name: truenas + url: https://www.truenas.com/ +dependencies: + - name: common + repository: file://../../../common + version: 1.0.3 +home: https://github.com/Radarr/Radarr +icon: https://raw.githubusercontent.com/Radarr/Radarr/develop/Logo/256.png +sources: + - https://github.com/onedr0p/containers/tree/main/apps/radarr + - https://github.com/truenas/charts/tree/master/charts/radarr + - https://github.com/Radarr/Radarr +keywords: + - media + - movies diff --git a/community/radarr/1.0.0/README.md b/community/radarr/1.0.0/README.md new file mode 100644 index 0000000000..e447cfd769 --- /dev/null +++ b/community/radarr/1.0.0/README.md @@ -0,0 +1,8 @@ +# Radarr + +[Radarr](https://github.com/Radarr/Radarr) is a movie collection manager for Usenet and BitTorrent users. + +> When application is installed, a container will be launched with **root** privileges. +> This is required in order to apply the correct permissions to the `Radarr` directories. +> Afterward, the `Radarr` 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/community/radarr/1.0.0/app-readme.md b/community/radarr/1.0.0/app-readme.md new file mode 100644 index 0000000000..e447cfd769 --- /dev/null +++ b/community/radarr/1.0.0/app-readme.md @@ -0,0 +1,8 @@ +# Radarr + +[Radarr](https://github.com/Radarr/Radarr) is a movie collection manager for Usenet and BitTorrent users. + +> When application is installed, a container will be launched with **root** privileges. +> This is required in order to apply the correct permissions to the `Radarr` directories. +> Afterward, the `Radarr` 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/community/radarr/1.0.0/charts/common-1.0.3.tgz b/community/radarr/1.0.0/charts/common-1.0.3.tgz new file mode 100644 index 0000000000..624e70f9dc Binary files /dev/null and b/community/radarr/1.0.0/charts/common-1.0.3.tgz differ diff --git a/community/radarr/1.0.0/ci/basic-values.yaml b/community/radarr/1.0.0/ci/basic-values.yaml new file mode 100644 index 0000000000..9bd5559cf9 --- /dev/null +++ b/community/radarr/1.0.0/ci/basic-values.yaml @@ -0,0 +1,11 @@ +radarrNetwork: + webPort: 31000 + +radarrRunAs: + user: 1000 + group: 1000 + +radarrStorage: + config: + type: hostPath + hostPath: /mnt/{{ .Release.Namespace }}/config diff --git a/community/radarr/1.0.0/ci/extra-values.yaml b/community/radarr/1.0.0/ci/extra-values.yaml new file mode 100644 index 0000000000..7c71264f61 --- /dev/null +++ b/community/radarr/1.0.0/ci/extra-values.yaml @@ -0,0 +1,21 @@ +radarrConfig: + additionalEnvs: + - name: RADARR__AUTHENTICATION_METHOD + value: some-long-api-key + - name: RADARR__LOG_LEVEL + value: error + +radarrNetwork: + webPort: 31000 + +radarrStorage: + config: + type: hostPath + hostPath: /mnt/{{ .Release.Namespace }}/config + additionalStorages: + - type: hostPath + hostPath: /mnt/{{ .Release.Namespace }}/action_movies + mountPath: /action_movies + - type: hostPath + hostPath: /mnt/{{ .Release.Namespace }}/adventure_movies + mountPath: /adventure_movies diff --git a/community/radarr/1.0.0/ci/hostNet-values.yaml b/community/radarr/1.0.0/ci/hostNet-values.yaml new file mode 100644 index 0000000000..00fa637ddb --- /dev/null +++ b/community/radarr/1.0.0/ci/hostNet-values.yaml @@ -0,0 +1,8 @@ +radarrNetwork: + webPort: 30000 + hostNetwork: true + +radarrStorage: + config: + type: hostPath + hostPath: /mnt/{{ .Release.Namespace }}/config diff --git a/community/radarr/1.0.0/ix_values.yaml b/community/radarr/1.0.0/ix_values.yaml new file mode 100644 index 0000000000..49e3b55d57 --- /dev/null +++ b/community/radarr/1.0.0/ix_values.yaml @@ -0,0 +1,25 @@ +image: + repository: ghcr.io/onedr0p/radarr + pullPolicy: IfNotPresent + tag: '4.3.2.6857' + +resources: + limits: + cpu: 4000m + memory: 8Gi + +radarrConfig: + instanceName: Radarr + additionalEnvs: [] +radarrNetwork: + webPort: 30000 + hostNetwork: false +radarrRunAs: + user: 568 + group: 568 +radarrStorage: + config: + type: ixVolume + hostPath: '' + datasetName: config + additionalStorages: [] diff --git a/community/radarr/1.0.0/questions.yaml b/community/radarr/1.0.0/questions.yaml new file mode 100644 index 0000000000..05b278b21b --- /dev/null +++ b/community/radarr/1.0.0/questions.yaml @@ -0,0 +1,225 @@ +groups: + - name: Radarr Configuration + description: Configure Radarr + - name: User and Group Configuration + description: Configure User and Group for Radarr + - name: Network Configuration + description: Configure Network for Radarr + - name: Storage Configuration + description: Configure Storage for Radarr + - name: Resources Configuration + description: Configure Resources for Radarr + +portals: + web_portal: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" + path: "$kubernetes-resource_configmap_portal_path" + +questions: + - variable: radarrConfig + label: "" + group: Radarr Configuration + schema: + type: dict + attrs: + - variable: instanceName + label: Instance Name + description: The name of the Radarr instance. + schema: + type: string + default: Radarr + required: true + - variable: additionalEnvs + label: Additional Environment Variables + description: Configure additional environment variables for Radarr. + schema: + type: list + default: [] + items: + - variable: env + label: Environment Variable + schema: + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + + - variable: radarrRunAs + label: "" + group: User and Group Configuration + schema: + type: dict + attrs: + - variable: user + label: User ID + description: The user id that Radarr will run as. + schema: + type: int + min: 1 + default: 568 + required: true + - variable: group + label: Group ID + description: The group id that Radarr will run as. + schema: + type: int + min: 1 + default: 568 + required: true + + - variable: radarrNetwork + label: "" + group: Network Configuration + schema: + type: dict + attrs: + - variable: webPort + label: Web Port + description: The port for the Radarr Web UI. + schema: + type: int + default: 30000 + min: 9000 + max: 65535 + required: true + - variable: hostNetwork + label: Host Network + description: | + Bind to the host network. It's recommended to keep this disabled.
+ schema: + type: boolean + default: false + + - variable: radarrStorage + label: "" + group: Storage Configuration + schema: + type: dict + attrs: + - variable: config + label: Radarr Config Storage + description: The path to store Radarr 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: additionalStorages + label: Additional Storage + description: Additional storage for Radarr. + schema: + type: list + default: [] + items: + - variable: storageEntry + label: Storage Entry + 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: mountPath + label: Mount Path + description: The path inside the container to mount the storage. + schema: + type: path + required: true + - variable: hostPath + label: Host Path + description: The host path to use for storage. + schema: + type: hostpath + show_if: [["type", "=", "hostPath"]] + required: true + - variable: datasetName + label: Dataset Name + description: The name of the dataset to use for storage. + schema: + type: string + show_if: [["type", "=", "ixVolume"]] + required: true + immutable: true + default: "storage_entry" + $ref: + - "normalize/ixVolume" + + - 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 Radarr. + schema: + type: string + default: 4000m + required: true + - variable: memory + label: Memory + description: Memory limit for Radarr. + schema: + type: string + default: 8Gi + required: true diff --git a/community/radarr/1.0.0/templates/NOTES.txt b/community/radarr/1.0.0/templates/NOTES.txt new file mode 100644 index 0000000000..ba4e01146c --- /dev/null +++ b/community/radarr/1.0.0/templates/NOTES.txt @@ -0,0 +1 @@ +{{ include "ix.v1.common.lib.chart.notes" $ }} diff --git a/community/radarr/1.0.0/templates/_portal.tpl b/community/radarr/1.0.0/templates/_portal.tpl new file mode 100644 index 0000000000..9e841214e9 --- /dev/null +++ b/community/radarr/1.0.0/templates/_portal.tpl @@ -0,0 +1,12 @@ +{{- define "radarr.portal" -}} +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: portal +data: + path: "/" + port: {{ .Values.radarrNetwork.webPort | quote }} + protocol: http + host: $node_ip +{{- end -}} diff --git a/community/radarr/1.0.0/templates/_radarr.tpl b/community/radarr/1.0.0/templates/_radarr.tpl new file mode 100644 index 0000000000..e1809d6c9e --- /dev/null +++ b/community/radarr/1.0.0/templates/_radarr.tpl @@ -0,0 +1,101 @@ +{{- define "radarr.workload" -}} +workload: + radarr: + enabled: true + primary: true + type: Deployment + podSpec: + hostNetwork: {{ .Values.radarrNetwork.hostNetwork }} + containers: + radarr: + enabled: true + primary: true + imageSelector: image + securityContext: + runAsUser: {{ .Values.radarrRunAs.user }} + runAsGroup: {{ .Values.radarrRunAs.group }} + {{ with .Values.radarrConfig.additionalEnvs }} + env: + {{ range $env := . }} + {{ $env.name }}: {{ $env.value }} + {{ end }} + {{ end }} + env: + RADARR__PORT: {{ .Values.radarrNetwork.webPort }} + RADARR__INSTANCE_NAME: {{ .Values.radarrConfig.instanceName }} + probes: + liveness: + enabled: true + type: http + port: "{{ .Values.radarrNetwork.webPort }}" + path: / + # FIXME: Next release will include this endpoint without auth + # path: /ping + readiness: + enabled: true + type: http + port: "{{ .Values.radarrNetwork.webPort }}" + path: / + # path: /ping + startup: + enabled: true + type: http + port: "{{ .Values.radarrNetwork.webPort }}" + path: / + # path: /ping + initContainers: + {{- include "ix.v1.common.app.permissions" (dict "containerName" "01-permissions" + "UID" .Values.radarrRunAs.user + "GID" .Values.radarrRunAs.group + "mode" "check" + "type" "init") | nindent 8 }} + +{{/* Service */}} +service: + radarr: + enabled: true + primary: true + type: NodePort + targetSelector: radarr + ports: + webui: + enabled: true + primary: true + port: {{ .Values.radarrNetwork.webPort }} + nodePort: {{ .Values.radarrNetwork.webPort }} + targetSelector: radarr + +{{/* Persistence */}} +persistence: + config: + enabled: true + type: {{ .Values.radarrStorage.config.type }} + datasetName: {{ .Values.radarrStorage.config.datasetName | default "" }} + hostPath: {{ .Values.radarrStorage.config.hostPath | default "" }} + targetSelector: + radarr: + radarr: + mountPath: /config + 01-permissions: + mountPath: /mnt/directories/config + tmp: + enabled: true + type: emptyDir + targetSelector: + radarr: + radarr: + mountPath: /tmp + {{- range $idx, $storage := .Values.radarrStorage.additionalStorages }} + {{ printf "radarr-%v" (int $idx) }}: + enabled: true + type: {{ $storage.type }} + datasetName: {{ $storage.datasetName | default "" }} + hostPath: {{ $storage.hostPath | default "" }} + targetSelector: + radarr: + radarr: + mountPath: {{ $storage.mountPath }} + 01-permissions: + mountPath: /mnt/directories{{ $storage.mountPath }} + {{- end }} +{{- end -}} diff --git a/community/radarr/1.0.0/templates/common.yaml b/community/radarr/1.0.0/templates/common.yaml new file mode 100644 index 0000000000..3edc25d005 --- /dev/null +++ b/community/radarr/1.0.0/templates/common.yaml @@ -0,0 +1,9 @@ +{{- include "ix.v1.common.loader.init" . -}} + +{{/* Merge the templates with Values */}} +{{- $_ := mustMergeOverwrite .Values (include "radarr.workload" $ | fromYaml) -}} + +{{/* Create the configmap for portal manually*/}} +{{- include "radarr.portal" $ -}} + +{{- include "ix.v1.common.loader.apply" . -}} diff --git a/community/radarr/item.yaml b/community/radarr/item.yaml new file mode 100644 index 0000000000..78aa03c600 --- /dev/null +++ b/community/radarr/item.yaml @@ -0,0 +1,4 @@ +icon_url: https://raw.githubusercontent.com/Radarr/Radarr/develop/Logo/256.png +categories: + - media + - movies diff --git a/community/sonarr/1.0.0/Chart.lock b/community/sonarr/1.0.0/Chart.lock new file mode 100644 index 0000000000..7c09f46050 --- /dev/null +++ b/community/sonarr/1.0.0/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: file://../../../common + version: 1.0.3 +digest: sha256:1a090020cfa582aff29906320874ffe9b543fcc6c2423c281f434514f2653e02 +generated: "2023-04-06T11:54:15.069382144Z" diff --git a/community/sonarr/1.0.0/Chart.yaml b/community/sonarr/1.0.0/Chart.yaml new file mode 100644 index 0000000000..af414a6482 --- /dev/null +++ b/community/sonarr/1.0.0/Chart.yaml @@ -0,0 +1,25 @@ +name: sonarr +description: Sonarr is a PVR for Usenet and BitTorrent users. +annotations: + title: Sonarr +type: application +version: 1.0.0 +apiVersion: v2 +appVersion: '3.0.10.1567' +kubeVersion: '>=1.16.0-0' +maintainers: + - name: truenas + url: https://www.truenas.com/ +dependencies: + - name: common + repository: file://../../../common + version: 1.0.3 +home: https://github.com/Sonarr/Sonarr +icon: https://raw.githubusercontent.com/Sonarr/Sonarr/develop/Logo/256.png +sources: + - https://github.com/onedr0p/containers/tree/main/apps/sonarr + - https://github.com/truenas/charts/tree/master/charts/sonarr + - https://github.com/Sonarr/Sonarr +keywords: + - media + - series diff --git a/community/sonarr/1.0.0/README.md b/community/sonarr/1.0.0/README.md new file mode 100644 index 0000000000..f345ff022a --- /dev/null +++ b/community/sonarr/1.0.0/README.md @@ -0,0 +1,8 @@ +# Sonarr + +[Sonarr](https://github.com/Sonarr/Sonarr) is a PVR for Usenet and BitTorrent users. It can monitor multiple RSS feeds for new episodes of your favorite shows and will grab, sort and rename them. + +> When application is installed, a container will be launched with **root** privileges. +> This is required in order to apply the correct permissions to the `Sonarr` directories. +> Afterward, the `Sonarr` 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/community/sonarr/1.0.0/app-readme.md b/community/sonarr/1.0.0/app-readme.md new file mode 100644 index 0000000000..f345ff022a --- /dev/null +++ b/community/sonarr/1.0.0/app-readme.md @@ -0,0 +1,8 @@ +# Sonarr + +[Sonarr](https://github.com/Sonarr/Sonarr) is a PVR for Usenet and BitTorrent users. It can monitor multiple RSS feeds for new episodes of your favorite shows and will grab, sort and rename them. + +> When application is installed, a container will be launched with **root** privileges. +> This is required in order to apply the correct permissions to the `Sonarr` directories. +> Afterward, the `Sonarr` 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/community/sonarr/1.0.0/charts/common-1.0.3.tgz b/community/sonarr/1.0.0/charts/common-1.0.3.tgz new file mode 100644 index 0000000000..c8d520cf2d Binary files /dev/null and b/community/sonarr/1.0.0/charts/common-1.0.3.tgz differ diff --git a/community/sonarr/1.0.0/ci/basic-values.yaml b/community/sonarr/1.0.0/ci/basic-values.yaml new file mode 100644 index 0000000000..886fe58f92 --- /dev/null +++ b/community/sonarr/1.0.0/ci/basic-values.yaml @@ -0,0 +1,11 @@ +sonarrNetwork: + webPort: 31000 + +sonarrRunAs: + user: 1000 + group: 1000 + +sonarrStorage: + config: + type: hostPath + hostPath: /mnt/{{ .Release.Namespace }}/config diff --git a/community/sonarr/1.0.0/ci/extra-values.yaml b/community/sonarr/1.0.0/ci/extra-values.yaml new file mode 100644 index 0000000000..7ee946f472 --- /dev/null +++ b/community/sonarr/1.0.0/ci/extra-values.yaml @@ -0,0 +1,21 @@ +sonarrConfig: + additionalEnvs: + - name: SONARR__AUTHENTICATION_METHOD + value: some-long-api-key + - name: SONARR__LOG_LEVEL + value: error + +sonarrNetwork: + webPort: 31000 + +sonarrStorage: + config: + type: hostPath + hostPath: /mnt/{{ .Release.Namespace }}/config + additionalStorages: + - type: hostPath + hostPath: /mnt/{{ .Release.Namespace }}/action_series + mountPath: /action_series + - type: hostPath + hostPath: /mnt/{{ .Release.Namespace }}/adventure_series + mountPath: /adventure_series diff --git a/community/sonarr/1.0.0/ci/hostNet-values.yaml b/community/sonarr/1.0.0/ci/hostNet-values.yaml new file mode 100644 index 0000000000..a23e799a30 --- /dev/null +++ b/community/sonarr/1.0.0/ci/hostNet-values.yaml @@ -0,0 +1,8 @@ +sonarrNetwork: + webPort: 30000 + hostNetwork: true + +sonarrStorage: + config: + type: hostPath + hostPath: /mnt/{{ .Release.Namespace }}/config diff --git a/community/sonarr/1.0.0/ix_values.yaml b/community/sonarr/1.0.0/ix_values.yaml new file mode 100644 index 0000000000..504eb02bd8 --- /dev/null +++ b/community/sonarr/1.0.0/ix_values.yaml @@ -0,0 +1,25 @@ +image: + repository: ghcr.io/onedr0p/sonarr + pullPolicy: IfNotPresent + tag: '3.0.10.1567' + +resources: + limits: + cpu: 4000m + memory: 8Gi + +sonarrConfig: + instanceName: Sonarr + additionalEnvs: [] +sonarrNetwork: + webPort: 30000 + hostNetwork: false +sonarrRunAs: + user: 568 + group: 568 +sonarrStorage: + config: + type: ixVolume + hostPath: '' + datasetName: config + additionalStorages: [] diff --git a/community/sonarr/1.0.0/questions.yaml b/community/sonarr/1.0.0/questions.yaml new file mode 100644 index 0000000000..534047fef6 --- /dev/null +++ b/community/sonarr/1.0.0/questions.yaml @@ -0,0 +1,225 @@ +groups: + - name: Sonarr Configuration + description: Configure Sonarr + - name: User and Group Configuration + description: Configure User and Group for Sonarr + - name: Network Configuration + description: Configure Network for Sonarr + - name: Storage Configuration + description: Configure Storage for Sonarr + - name: Resources Configuration + description: Configure Resources for Sonarr + +portals: + web_portal: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" + path: "$kubernetes-resource_configmap_portal_path" + +questions: + - variable: sonarrConfig + label: "" + group: Sonarr Configuration + schema: + type: dict + attrs: + - variable: instanceName + label: Instance Name + description: The name of the Sonarr instance. + schema: + type: string + default: Sonarr + required: true + - variable: additionalEnvs + label: Additional Environment Variables + description: Configure additional environment variables for Sonarr. + schema: + type: list + default: [] + items: + - variable: env + label: Environment Variable + schema: + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + + - variable: sonarrRunAs + label: "" + group: User and Group Configuration + schema: + type: dict + attrs: + - variable: user + label: User ID + description: The user id that Sonarr will run as. + schema: + type: int + min: 1 + default: 568 + required: true + - variable: group + label: Group ID + description: The group id that Sonarr will run as. + schema: + type: int + min: 1 + default: 568 + required: true + + - variable: sonarrNetwork + label: "" + group: Network Configuration + schema: + type: dict + attrs: + - variable: webPort + label: Web Port + description: The port for the Sonarr Web UI. + schema: + type: int + default: 30000 + min: 9000 + max: 65535 + required: true + - variable: hostNetwork + label: Host Network + description: | + Bind to the host network. It's recommended to keep this disabled.
+ schema: + type: boolean + default: false + + - variable: sonarrStorage + label: "" + group: Storage Configuration + schema: + type: dict + attrs: + - variable: config + label: Sonarr Config Storage + description: The path to store Sonarr 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: additionalStorages + label: Additional Storage + description: Additional storage for Sonarr. + schema: + type: list + default: [] + items: + - variable: storageEntry + label: Storage Entry + 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: mountPath + label: Mount Path + description: The path inside the container to mount the storage. + schema: + type: path + required: true + - variable: hostPath + label: Host Path + description: The host path to use for storage. + schema: + type: hostpath + show_if: [["type", "=", "hostPath"]] + required: true + - variable: datasetName + label: Dataset Name + description: The name of the dataset to use for storage. + schema: + type: string + show_if: [["type", "=", "ixVolume"]] + required: true + immutable: true + default: "storage_entry" + $ref: + - "normalize/ixVolume" + + - 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 Sonarr. + schema: + type: string + default: 4000m + required: true + - variable: memory + label: Memory + description: Memory limit for Sonarr. + schema: + type: string + default: 8Gi + required: true diff --git a/community/sonarr/1.0.0/templates/NOTES.txt b/community/sonarr/1.0.0/templates/NOTES.txt new file mode 100644 index 0000000000..ba4e01146c --- /dev/null +++ b/community/sonarr/1.0.0/templates/NOTES.txt @@ -0,0 +1 @@ +{{ include "ix.v1.common.lib.chart.notes" $ }} diff --git a/community/sonarr/1.0.0/templates/_portal.tpl b/community/sonarr/1.0.0/templates/_portal.tpl new file mode 100644 index 0000000000..88e40c57bc --- /dev/null +++ b/community/sonarr/1.0.0/templates/_portal.tpl @@ -0,0 +1,12 @@ +{{- define "sonarr.portal" -}} +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: portal +data: + path: "/" + port: {{ .Values.sonarrNetwork.webPort | quote }} + protocol: http + host: $node_ip +{{- end -}} diff --git a/community/sonarr/1.0.0/templates/_sonarr.tpl b/community/sonarr/1.0.0/templates/_sonarr.tpl new file mode 100644 index 0000000000..467001308a --- /dev/null +++ b/community/sonarr/1.0.0/templates/_sonarr.tpl @@ -0,0 +1,90 @@ +{{- define "sonarr.workload" -}} +workload: + sonarr: + enabled: true + primary: true + type: Deployment + podSpec: + hostNetwork: {{ .Values.sonarrNetwork.hostNetwork }} + containers: + sonarr: + enabled: true + primary: true + imageSelector: image + securityContext: + runAsUser: {{ .Values.sonarrRunAs.user }} + runAsGroup: {{ .Values.sonarrRunAs.group }} + {{ with .Values.sonarrConfig.additionalEnvs }} + env: + {{ range $env := . }} + {{ $env.name }}: {{ $env.value }} + {{ end }} + {{ end }} + env: + SONARR__PORT: {{ .Values.sonarrNetwork.webPort }} + SONARR__INSTANCE_NAME: {{ .Values.sonarrConfig.instanceName }} + probes: + liveness: + enabled: true + type: http + port: "{{ .Values.sonarrNetwork.webPort }}" + path: /ping + readiness: + enabled: true + type: http + port: "{{ .Values.sonarrNetwork.webPort }}" + path: /ping + startup: + enabled: true + type: http + port: "{{ .Values.sonarrNetwork.webPort }}" + path: /ping + initContainers: + {{- include "ix.v1.common.app.permissions" (dict "containerName" "01-permissions" + "UID" .Values.sonarrRunAs.user + "GID" .Values.sonarrRunAs.group + "mode" "check" + "type" "init") | nindent 8 }} + +{{/* Service */}} +service: + sonarr: + enabled: true + primary: true + type: NodePort + targetSelector: sonarr + ports: + webui: + enabled: true + primary: true + port: {{ .Values.sonarrNetwork.webPort }} + nodePort: {{ .Values.sonarrNetwork.webPort }} + targetSelector: sonarr + +{{/* Persistence */}} +persistence: + config: + enabled: true + type: {{ .Values.sonarrStorage.config.type }} + datasetName: {{ .Values.sonarrStorage.config.datasetName | default "" }} + hostPath: {{ .Values.sonarrStorage.config.hostPath | default "" }} + targetSelector: + sonarr: + sonarr: + mountPath: /config + 01-permissions: + mountPath: /mnt/directories/config + {{- range $idx, $storage := .Values.sonarrStorage.additionalStorages }} + {{ printf "sonarr-%v" (int $idx) }}: + enabled: true + type: {{ $storage.type }} + datasetName: {{ $storage.datasetName | default "" }} + hostPath: {{ $storage.hostPath | default "" }} + targetSelector: + sonarr: + sonarr: + mountPath: {{ $storage.mountPath }} + 01-permissions: + mountPath: /mnt/directories{{ $storage.mountPath }} + {{- end }} +{{- end -}} diff --git a/community/sonarr/1.0.0/templates/common.yaml b/community/sonarr/1.0.0/templates/common.yaml new file mode 100644 index 0000000000..23242cb8d3 --- /dev/null +++ b/community/sonarr/1.0.0/templates/common.yaml @@ -0,0 +1,9 @@ +{{- include "ix.v1.common.loader.init" . -}} + +{{/* Merge the templates with Values */}} +{{- $_ := mustMergeOverwrite .Values (include "sonarr.workload" $ | fromYaml) -}} + +{{/* Create the configmap for portal manually*/}} +{{- include "sonarr.portal" $ -}} + +{{- include "ix.v1.common.loader.apply" . -}} diff --git a/community/sonarr/item.yaml b/community/sonarr/item.yaml new file mode 100644 index 0000000000..c6f44ed8cd --- /dev/null +++ b/community/sonarr/item.yaml @@ -0,0 +1,4 @@ +icon_url: https://raw.githubusercontent.com/Sonarr/Sonarr/develop/Logo/256.png +categories: + - media + - series