From 02b9ed677d9ba2fd8cbc7688940cb93afa67fd05 Mon Sep 17 00:00:00 2001 From: sonicaj Date: Wed, 24 Jan 2024 08:15:40 +0000 Subject: [PATCH] Publish new changes in catalog --- charts/emby/2.0.0/.helmignore | 24 ++ charts/emby/2.0.0/Chart.lock | 6 + charts/emby/2.0.0/Chart.yaml | 24 ++ charts/emby/2.0.0/README.md | 3 + charts/emby/2.0.0/app-readme.md | 3 + charts/emby/2.0.0/charts/common-1.2.9.tgz | Bin 0 -> 63207 bytes charts/emby/2.0.0/ci/basic-values.yaml | 10 + charts/emby/2.0.0/ci/extra-values.yaml | 11 + charts/emby/2.0.0/ci/hostNet-values.yaml | 7 + charts/emby/2.0.0/ix_values.yaml | 30 ++ charts/emby/2.0.0/metadata.yaml | 18 + charts/emby/2.0.0/migrations/migrate | 82 ++++ charts/emby/2.0.0/questions.yaml | 378 +++++++++++++++++++ charts/emby/2.0.0/templates/NOTES.txt | 1 + charts/emby/2.0.0/templates/_emby.tpl | 64 ++++ charts/emby/2.0.0/templates/_migration.tpl | 35 ++ charts/emby/2.0.0/templates/_persistance.tpl | 26 ++ charts/emby/2.0.0/templates/_portal.tpl | 16 + charts/emby/2.0.0/templates/_service.tpl | 35 ++ charts/emby/2.0.0/templates/common.yaml | 13 + charts/emby/2.0.0/to_keep_versions.md | 4 + 21 files changed, 790 insertions(+) create mode 100644 charts/emby/2.0.0/.helmignore create mode 100644 charts/emby/2.0.0/Chart.lock create mode 100644 charts/emby/2.0.0/Chart.yaml create mode 100644 charts/emby/2.0.0/README.md create mode 100644 charts/emby/2.0.0/app-readme.md create mode 100644 charts/emby/2.0.0/charts/common-1.2.9.tgz create mode 100644 charts/emby/2.0.0/ci/basic-values.yaml create mode 100644 charts/emby/2.0.0/ci/extra-values.yaml create mode 100644 charts/emby/2.0.0/ci/hostNet-values.yaml create mode 100644 charts/emby/2.0.0/ix_values.yaml create mode 100644 charts/emby/2.0.0/metadata.yaml create mode 100755 charts/emby/2.0.0/migrations/migrate create mode 100644 charts/emby/2.0.0/questions.yaml create mode 100644 charts/emby/2.0.0/templates/NOTES.txt create mode 100644 charts/emby/2.0.0/templates/_emby.tpl create mode 100644 charts/emby/2.0.0/templates/_migration.tpl create mode 100644 charts/emby/2.0.0/templates/_persistance.tpl create mode 100644 charts/emby/2.0.0/templates/_portal.tpl create mode 100644 charts/emby/2.0.0/templates/_service.tpl create mode 100644 charts/emby/2.0.0/templates/common.yaml create mode 100644 charts/emby/2.0.0/to_keep_versions.md diff --git a/charts/emby/2.0.0/.helmignore b/charts/emby/2.0.0/.helmignore new file mode 100644 index 0000000000..e559de0a01 --- /dev/null +++ b/charts/emby/2.0.0/.helmignore @@ -0,0 +1,24 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ +# OWNERS file for Kubernetes +OWNERS diff --git a/charts/emby/2.0.0/Chart.lock b/charts/emby/2.0.0/Chart.lock new file mode 100644 index 0000000000..85a4574775 --- /dev/null +++ b/charts/emby/2.0.0/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: file://../../../common + version: 1.2.9 +digest: sha256:af1a9a1f87e3e48453c9f25f909f5ebcd7fa6e25162b7b425448ba752bcdbc5c +generated: "2024-01-22T16:49:24.448208256+02:00" diff --git a/charts/emby/2.0.0/Chart.yaml b/charts/emby/2.0.0/Chart.yaml new file mode 100644 index 0000000000..afef4294b8 --- /dev/null +++ b/charts/emby/2.0.0/Chart.yaml @@ -0,0 +1,24 @@ +name: emby +description: Emby is designed to help you manage your personal media library, such as home videos and photos +annotations: + title: Emby Server +type: application +version: 2.0.0 +apiVersion: v2 +appVersion: 4.7.14.0 +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.2.9 +home: https://emby.media/ +icon: https://media.sys.truenas.net/apps/emby/icons/icon.png +sources: + - https://hub.docker.com/r/emby/embyserver +keywords: + - emby + - media diff --git a/charts/emby/2.0.0/README.md b/charts/emby/2.0.0/README.md new file mode 100644 index 0000000000..680e4bdd23 --- /dev/null +++ b/charts/emby/2.0.0/README.md @@ -0,0 +1,3 @@ +# Emby + +[Emby](https://emby.media/) is designed to help you manage your personal media library, such as home videos and photos diff --git a/charts/emby/2.0.0/app-readme.md b/charts/emby/2.0.0/app-readme.md new file mode 100644 index 0000000000..680e4bdd23 --- /dev/null +++ b/charts/emby/2.0.0/app-readme.md @@ -0,0 +1,3 @@ +# Emby + +[Emby](https://emby.media/) is designed to help you manage your personal media library, such as home videos and photos diff --git a/charts/emby/2.0.0/charts/common-1.2.9.tgz b/charts/emby/2.0.0/charts/common-1.2.9.tgz new file mode 100644 index 0000000000000000000000000000000000000000..cf131132de03db74a1c968c87cee9d0878fa6111 GIT binary patch literal 63207 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 literal 0 HcmV?d00001 diff --git a/charts/emby/2.0.0/ci/basic-values.yaml b/charts/emby/2.0.0/ci/basic-values.yaml new file mode 100644 index 0000000000..2eb3654848 --- /dev/null +++ b/charts/emby/2.0.0/ci/basic-values.yaml @@ -0,0 +1,10 @@ +embyNetwork: + webPort: 31000 + +embyID: + user: 1000 + group: 1000 + +embyStorage: + config: + type: pvc diff --git a/charts/emby/2.0.0/ci/extra-values.yaml b/charts/emby/2.0.0/ci/extra-values.yaml new file mode 100644 index 0000000000..8fd4060a87 --- /dev/null +++ b/charts/emby/2.0.0/ci/extra-values.yaml @@ -0,0 +1,11 @@ +embyNetwork: + webPort: 31000 + +embyStorage: + config: + type: pvc + additionalStorages: + - type: pvc + mountPath: /action_movies + - type: pvc + mountPath: /adventure_movies diff --git a/charts/emby/2.0.0/ci/hostNet-values.yaml b/charts/emby/2.0.0/ci/hostNet-values.yaml new file mode 100644 index 0000000000..05c8b76fc0 --- /dev/null +++ b/charts/emby/2.0.0/ci/hostNet-values.yaml @@ -0,0 +1,7 @@ +embyNetwork: + webPort: 31000 + hostNetwork: true + +embyStorage: + config: + type: pvc diff --git a/charts/emby/2.0.0/ix_values.yaml b/charts/emby/2.0.0/ix_values.yaml new file mode 100644 index 0000000000..9d5e197283 --- /dev/null +++ b/charts/emby/2.0.0/ix_values.yaml @@ -0,0 +1,30 @@ +image: + pullPolicy: IfNotPresent + repository: emby/embyserver + tag: 4.7.14.0 + +resources: + limits: + cpu: 4000m + memory: 8Gi + +embyConfig: + additionalEnvs: [] + +# On migration the default is 2 +embyID: + user: 568 + group: 568 + +embyNetwork: + webPort: 9096 + hostNetwork: false + +embyStorage: + config: + type: ixVolume + ixVolumeConfig: + datasetName: config + additionalStorages: [] + +embyGPU: {} diff --git a/charts/emby/2.0.0/metadata.yaml b/charts/emby/2.0.0/metadata.yaml new file mode 100644 index 0000000000..61276c0fdc --- /dev/null +++ b/charts/emby/2.0.0/metadata.yaml @@ -0,0 +1,18 @@ +runAsContext: + - userName: root + groupName: root + gid: 0 + uid: 0 + description: Emby runs as root user. +capabilities: + - name: CHOWN + description: Emby is able to chown files. + - name: DAC_OVERRIDE + description: Emby is able to bypass permission checks. + - name: FOWNER + description: Emby is able to bypass permission checks for it's sub-processes. + - name: SETGID + description: Emby is able to set group ID for it's sub-processes. + - name: SETUID + description: Emby is able to set user ID for it's sub-processes. +hostMounts: [] diff --git a/charts/emby/2.0.0/migrations/migrate b/charts/emby/2.0.0/migrations/migrate new file mode 100755 index 0000000000..9b0d6843d7 --- /dev/null +++ b/charts/emby/2.0.0/migrations/migrate @@ -0,0 +1,82 @@ +#!/usr/bin/python3 +import json +import os +import sys + +def migrate_volume(volume): + return { + 'type': 'hostPath', + 'hostPathConfig': { + 'hostPath': volume['hostPath'] + }, + } if volume.get('hostPathEnabled', False) else { + 'type': 'ixVolume', + 'ixVolumeConfig': { + 'datasetName': volume['datasetName'], + }, + } + +def migrate_common_lib(values): + delete_keys = [ + 'hostNetwork', 'environmentVariables', 'updateStrategy', 'embyServerHttp', 'gpuConfiguration', + 'appVolumeMounts', 'extraAppVolumeMounts', 'enableResourceLimits', 'cpuLimit', 'memLimit' + ] + + values.update({ + # Migrate Network + 'embyNetwork': { + 'webPort': values['embyServerHttp'], + 'hostNetwork': values['hostNetwork'], + }, + # Migrate Resources + 'resources': { + 'limits': { + 'cpu': values.get('cpuLimit', '4000m'), + 'memory': values.get('memLimit', '8Gi'), + } + }, + 'embyID': { + # We didn't have exposed this on UI the default + # set by the container is 2, so we will use that + 'user': 2, + 'group': 2, + }, + # Migrate Config + 'embyConfig': { + 'additionalEnvs': values.get('environmentVariables', []), + }, + # Migrate Storage + 'embyStorage': { + 'config': migrate_volume(values['appVolumeMounts']['config']), + 'additionalStorages': [ + { + 'type': 'hostPath', + 'hostPathConfig': {'hostPath': e['hostPath']}, + 'mountPath': e['mountPath'], + 'readOnly': e['readOnly'], + } + for e in values.get('extraAppVolumeMounts', []) + ], + }, + }) + + for k in delete_keys: + values.pop(k, None) + + return values + +def migrate(values): + # If this missing, we have already migrated + if not 'appVolumeMounts' in values.keys(): + return values + + return migrate_common_lib(values) + + +if __name__ == '__main__': + if len(sys.argv) != 2: + exit(1) + + if os.path.exists(sys.argv[1]): + with open(sys.argv[1], 'r') as f: + print(json.dumps(migrate(json.loads(f.read())))) diff --git a/charts/emby/2.0.0/questions.yaml b/charts/emby/2.0.0/questions.yaml new file mode 100644 index 0000000000..afacdb7239 --- /dev/null +++ b/charts/emby/2.0.0/questions.yaml @@ -0,0 +1,378 @@ +groups: + - name: Emby Configuration + description: Configure Emby + - name: User and Group Configuration + description: Configure User and Group for Emby + - name: Network Configuration + description: Configure Network for Emby + - name: Storage Configuration + description: Configure Storage for Emby + - name: Resources Configuration + description: Configure Resources for Emby + +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: embyConfig + label: "" + group: Emby Configuration + schema: + type: dict + attrs: + - variable: additionalEnvs + label: Additional Environment Variables + description: Configure additional environment variables for Emby. + 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: embyID + label: "" + group: User and Group Configuration + schema: + type: dict + attrs: + - variable: user + label: User ID + description: The user id that Emby files will be owned by. + schema: + type: int + min: 2 + default: 568 + required: true + - variable: group + label: Group ID + description: The group id that Emby files will be owned by. + schema: + type: int + min: 2 + default: 568 + required: true + + - variable: embyNetwork + label: "" + group: Network Configuration + schema: + type: dict + attrs: + - variable: hostNetwork + label: Host Network + description: | + Bind to the host network. While it's recommended to keep this disabled.
+ It's required for autodiscovery to work. + schema: + type: boolean + default: false + - variable: webPort + label: Web Port + description: The port for the Emby Web UI. + schema: + type: int + show_if: [["hostNetwork", "=", false]] + min: 9000 + max: 65535 + default: 9096 + required: true + + - variable: embyStorage + label: "" + group: Storage Configuration + schema: + type: dict + attrs: + - variable: config + label: Emby Config Storage + description: The path to store Emby 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 + immutable: 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: ixVolumeConfig + label: ixVolume Configuration + description: The configuration for the ixVolume dataset. + schema: + type: dict + show_if: [["type", "=", "ixVolume"]] + $ref: + - "normalize/ixVolume" + attrs: + - variable: aclEnable + label: Enable ACL + description: Enable ACL for the dataset. + schema: + type: boolean + default: false + - variable: datasetName + label: Dataset Name + description: The name of the dataset to use for storage. + schema: + type: string + required: true + immutable: true + hidden: true + default: "config" + - variable: aclEntries + label: ACL Configuration + schema: + type: dict + show_if: [["aclEnable", "=", true]] + attrs: [] + - variable: hostPathConfig + label: Host Path Configuration + schema: + type: dict + show_if: [["type", "=", "hostPath"]] + attrs: + - variable: aclEnable + label: Enable ACL + description: Enable ACL for the dataset. + schema: + type: boolean + default: false + - variable: acl + label: ACL Configuration + schema: + type: dict + show_if: [["aclEnable", "=", true]] + attrs: [] + $ref: + - "normalize/acl" + - variable: hostPath + label: Host Path + description: The host path to use for storage. + schema: + type: hostpath + show_if: [["aclEnable", "=", false]] + required: true + + - variable: additionalStorages + label: Additional Storage + description: Additional storage for Emby. + 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.
+ SMB Share: Is a SMB share that is mounted to a persistent volume claim. + schema: + type: string + required: true + default: "ixVolume" + immutable: true + enum: + - value: "hostPath" + description: Host Path (Path that already exists on the system) + - value: "ixVolume" + description: ixVolume (Dataset created automatically by the system) + - value: "smb-pv-pvc" + description: SMB Share (Mounts a persistent volume claim to a SMB share) + - variable: readOnly + label: Read Only + description: Mount the volume as read only. + schema: + type: boolean + default: false + - variable: mountPath + label: Mount Path + description: The path inside the container to mount the storage. + schema: + type: path + required: true + - variable: hostPathConfig + label: Host Path Configuration + schema: + type: dict + show_if: [["type", "=", "hostPath"]] + attrs: + - variable: aclEnable + label: Enable ACL + description: Enable ACL for the dataset. + schema: + type: boolean + default: false + - variable: acl + label: ACL Configuration + schema: + type: dict + show_if: [["aclEnable", "=", true]] + attrs: [] + $ref: + - "normalize/acl" + - variable: hostPath + label: Host Path + description: The host path to use for storage. + schema: + type: hostpath + show_if: [["aclEnable", "=", false]] + required: true + - variable: ixVolumeConfig + label: ixVolume Configuration + description: The configuration for the ixVolume dataset. + schema: + type: dict + show_if: [["type", "=", "ixVolume"]] + $ref: + - "normalize/ixVolume" + attrs: + - variable: aclEnable + label: Enable ACL + description: Enable ACL for the dataset. + schema: + type: boolean + default: false + - variable: datasetName + label: Dataset Name + description: The name of the dataset to use for storage. + schema: + type: string + required: true + immutable: true + default: "storage_entry" + - variable: aclEntries + label: ACL Configuration + schema: + type: dict + show_if: [["aclEnable", "=", true]] + attrs: [] + - variable: smbConfig + label: SMB Share Configuration + description: The configuration for the SMB Share. + schema: + type: dict + show_if: [["type", "=", "smb-pv-pvc"]] + attrs: + - variable: server + label: Server + description: The server for the SMB share. + schema: + type: string + required: true + - variable: share + label: Share + description: The share name for the SMB share. + schema: + type: string + required: true + - variable: domain + label: Domain (Optional) + description: The domain for the SMB share. + schema: + type: string + - variable: username + label: Username + description: The username for the SMB share. + schema: + type: string + required: true + - variable: password + label: Password + description: The password for the SMB share. + schema: + type: string + required: true + private: true + - variable: size + label: Size (in Gi) + description: The size of the volume quota. + schema: + type: int + required: true + min: 1 + default: 1 + + - 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 Emby. + schema: + type: string + max_length: 6 + valid_chars: '^(0\.[1-9]|[1-9][0-9]*)(\.[0-9]|m?)$' + valid_chars_error: | + Valid CPU limit formats are
+ - Plain Integer - eg. 1
+ - Float - eg. 0.5
+ - Milicpu - eg. 500m + default: "4000m" + required: true + - variable: memory + label: Memory + description: Memory limit for Emby. + schema: + type: string + max_length: 12 + valid_chars: '^[1-9][0-9]*([EPTGMK]i?|e[0-9]+)?$' + valid_chars_error: | + Valid Memory limit formats are
+ - Suffixed with E/P/T/G/M/K - eg. 1G
+ - Suffixed with Ei/Pi/Ti/Gi/Mi/Ki - eg. 1Gi
+ - Plain Integer in bytes - eg. 1024
+ - Exponent - eg. 134e6 + default: "8Gi" + required: true + + - variable: embyGPU + group: Resources Configuration + label: GPU Configuration + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] diff --git a/charts/emby/2.0.0/templates/NOTES.txt b/charts/emby/2.0.0/templates/NOTES.txt new file mode 100644 index 0000000000..ba4e01146c --- /dev/null +++ b/charts/emby/2.0.0/templates/NOTES.txt @@ -0,0 +1 @@ +{{ include "ix.v1.common.lib.chart.notes" $ }} diff --git a/charts/emby/2.0.0/templates/_emby.tpl b/charts/emby/2.0.0/templates/_emby.tpl new file mode 100644 index 0000000000..96a37f9800 --- /dev/null +++ b/charts/emby/2.0.0/templates/_emby.tpl @@ -0,0 +1,64 @@ +{{- define "emby.workload" -}} +workload: + emby: + enabled: true + primary: true + type: Deployment + podSpec: + hostNetwork: {{ .Values.embyNetwork.hostNetwork }} + securityContext: + fsGroup: {{ .Values.embyID.group }} + containers: + emby: + enabled: true + primary: true + imageSelector: image + securityContext: + runAsUser: 0 + runAsGroup: 0 + runAsNonRoot: false + readOnlyRootFilesystem: false + capabilities: + add: + - CHOWN + - DAC_OVERRIDE + - FOWNER + - SETGID + - SETUID + fixedEnv: + PUID: {{ .Values.embyID.user }} + {{ with .Values.embyConfig.additionalEnvs }} + envList: + {{ range $env := . }} + - name: {{ $env.name }} + value: {{ $env.value }} + {{ end }} + {{ end }} + probes: + liveness: + enabled: true + type: http + path: /emby/System/Ping + port: 8096 + readiness: + enabled: true + type: http + path: /emby/System/Ping + port: 8096 + startup: + enabled: true + type: http + path: /emby/System/Ping + port: 8096 + +{{ with .Values.embyGPU }} +scaleGPU: + {{ range $key, $value := . }} + - gpu: + {{ $key }}: {{ $value }} + targetSelector: + emby: + - emby + {{ end }} +{{ end }} +{{- end -}} diff --git a/charts/emby/2.0.0/templates/_migration.tpl b/charts/emby/2.0.0/templates/_migration.tpl new file mode 100644 index 0000000000..d3300a3e83 --- /dev/null +++ b/charts/emby/2.0.0/templates/_migration.tpl @@ -0,0 +1,35 @@ +{{- define "emby.get-versions" -}} + {{- $oldChartVersion := "" -}} + {{- $newChartVersion := "" -}} + + {{/* Safely access the context, so it wont block CI */}} + {{- if hasKey .Values.global "ixChartContext" -}} + {{- if .Values.global.ixChartContext.upgradeMetadata -}} + + {{- $oldChartVersion = .Values.global.ixChartContext.upgradeMetadata.oldChartVersion -}} + {{- $newChartVersion = .Values.global.ixChartContext.upgradeMetadata.newChartVersion -}} + {{- if and (not $oldChartVersion) (not $newChartVersion) -}} + {{- fail "Upgrade Metadata is missing. Cannot proceed" -}} + {{- end -}} + {{- end -}} + {{- end -}} + + {{- toYaml (dict "old" $oldChartVersion "new" $newChartVersion) -}} +{{- end -}} + +{{- define "emby.migration" -}} + {{- $versions := (fromYaml (include "emby.get-versions" $)) -}} + {{- if and $versions.old $versions.new -}} + {{- $oldV := semver $versions.old -}} + {{- $newV := semver $versions.new -}} + + {{/* If new is v2.x.x */}} + {{- if eq ($newV.Major | int) 2 -}} + {{/* And old is v1.x.x, but lower than .30 */}} + {{- if and (eq $oldV.Major 1) (lt ($oldV.Patch | int) 30) -}} + {{/* Block the upgrade */}} + {{- fail "Migration to 2.x.x is only allowed from 1.0.30 or higher" -}} + {{- end -}} + {{- end -}} + {{- end -}} +{{- end -}} diff --git a/charts/emby/2.0.0/templates/_persistance.tpl b/charts/emby/2.0.0/templates/_persistance.tpl new file mode 100644 index 0000000000..3e2ecfe0e6 --- /dev/null +++ b/charts/emby/2.0.0/templates/_persistance.tpl @@ -0,0 +1,26 @@ +{{- define "emby.persistence" -}} +persistence: + config: + enabled: true + {{- include "ix.v1.common.app.storageOptions" (dict "storage" .Values.embyStorage.config) | nindent 4 }} + targetSelector: + emby: + emby: + mountPath: /config + tmp: + enabled: true + type: emptyDir + targetSelector: + emby: + emby: + mountPath: /tmp + {{- range $idx, $storage := .Values.embyStorage.additionalStorages }} + {{ printf "emby-%v:" (int $idx) }} + enabled: true + {{- include "ix.v1.common.app.storageOptions" (dict "storage" $storage) | nindent 4 }} + targetSelector: + emby: + emby: + mountPath: {{ $storage.mountPath }} + {{- end }} +{{- end -}} diff --git a/charts/emby/2.0.0/templates/_portal.tpl b/charts/emby/2.0.0/templates/_portal.tpl new file mode 100644 index 0000000000..edaad0a5fc --- /dev/null +++ b/charts/emby/2.0.0/templates/_portal.tpl @@ -0,0 +1,16 @@ +{{- define "emby.portal" -}} +{{- $port := .Values.embyNetwork.webPort -}} +{{- if .Values.embyNetwork.hostNetwork -}} + {{- $port = 8096 -}} +{{- end }} +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: portal +data: + port: {{ $port | quote }} + path: "/" + protocol: "http" + host: $node_ip +{{- end -}} diff --git a/charts/emby/2.0.0/templates/_service.tpl b/charts/emby/2.0.0/templates/_service.tpl new file mode 100644 index 0000000000..f6972e0f43 --- /dev/null +++ b/charts/emby/2.0.0/templates/_service.tpl @@ -0,0 +1,35 @@ +{{- define "emby.service" -}} +service: + emby: + enabled: true + primary: true + type: NodePort + targetSelector: emby + ports: + webui: + enabled: true + primary: true + port: {{ .Values.embyNetwork.webPort }} + nodePort: {{ .Values.embyNetwork.webPort }} + targetPort: 8096 + targetSelector: emby + discovery: + enabled: true + # This service is added only to provide + # a way for in-cluster apps to discovery emby + # For LAN discovery, host networking is required + type: ClusterIP + targetSelector: emby + ports: + dlna: + enabled: true + primary: true + port: 1900 + targetPort: 1900 + targetSelector: emby + local-discovery: + enabled: true + port: 7359 + targetPort: 7359 + targetSelector: emby +{{- end -}} diff --git a/charts/emby/2.0.0/templates/common.yaml b/charts/emby/2.0.0/templates/common.yaml new file mode 100644 index 0000000000..bf5fc4eccd --- /dev/null +++ b/charts/emby/2.0.0/templates/common.yaml @@ -0,0 +1,13 @@ +{{- include "ix.v1.common.loader.init" . -}} + +{{- include "emby.migration" $ -}} + +{{/* Merge the templates with Values */}} +{{- $_ := mustMergeOverwrite .Values (include "emby.workload" $ | fromYaml) -}} +{{- $_ := mustMergeOverwrite .Values (include "emby.service" $ | fromYaml) -}} +{{- $_ := mustMergeOverwrite .Values (include "emby.persistence" $ | fromYaml) -}} + +{{/* Create the configmap for portal manually*/}} +{{- include "emby.portal" $ -}} + +{{- include "ix.v1.common.loader.apply" . -}} diff --git a/charts/emby/2.0.0/to_keep_versions.md b/charts/emby/2.0.0/to_keep_versions.md new file mode 100644 index 0000000000..1f40b08e8b --- /dev/null +++ b/charts/emby/2.0.0/to_keep_versions.md @@ -0,0 +1,4 @@ +# 1.0.30 + +This version is kept because it contains a fix that is needed for migration to v2.x.x +It should be safe to remove few months after v2.x.x is released.