Add emby to test train

This commit is contained in:
M. Rehan
2022-05-15 19:34:57 +05:00
parent 09590c1975
commit 364bd5d5c6
15 changed files with 364 additions and 0 deletions

View File

@@ -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

View File

@@ -0,0 +1,16 @@
apiVersion: v2
appVersion: 4.6.7.0
dependencies:
- name: common
repository: file://../../../library/common/2112.0.0
version: 2112.0.0
description: Emby Server
home: https://emby.media/
icon: https://images-na.ssl-images-amazon.com/images/I/41NwssJC1iL.png
keywords:
- emby
- media
name: emby
sources:
- https://hub.docker.com/r/emby/embyserver
version: 1.0.0

View File

@@ -0,0 +1,5 @@
# Emby Server helm chart
## Configuration
Please refer to questions.yaml for a detailed overview on supported configurable items.

View File

@@ -0,0 +1,3 @@
# Emby Server
Emby Server is a personal media server with apps on just about every device

Binary file not shown.

View File

@@ -0,0 +1,4 @@
image:
pullPolicy: IfNotPresent
repository: emby/embyserver
tag: 4.6.7.0

View File

@@ -0,0 +1,166 @@
groups:
- name: "Emby Server Configuration"
description: "Configure Emby Server"
- name: "Networking"
description: "Configure networking for container"
- name: "Storage"
description: "Persist and share data that is separate from the lifecycle of the container"
- name: "Workload Details"
description: "Configure how workload should be deployed"
- name: "Scaling/Upgrade Policy"
description: "Configure how pods are replaced when configuration is upgraded"
- name: "Restart Policy"
description: "Configure when pod should be restarted in case of failure"
- name: "Resource Reservation"
description: "Specify resources to be allocated to workload"
portals:
web_portal:
protocols:
- "http"
host:
- "$node_ip"
ports:
- "$variable-embyServerHttp.port"
path: "/web"
questions:
- variable: hostNetwork
label: "Configure Host Network"
group: "Networking"
schema:
type: boolean
default: false
- variable: environmentVariables
label: "Environment Variables for Emby Server"
group: "Emby Server Configuration"
schema:
type: list
default: []
items:
- variable: environmentVariable
label: "Environment Variable"
schema:
type: dict
attrs:
- variable: name
label: "Name"
schema:
type: string
- variable: value
label: "Value"
schema:
type: string
# Update strategy
- variable: updateStrategy
description: "Upgrade Policy"
label: "Update Strategy"
group: "Scaling/Upgrade Policy"
schema:
type: string
default: "Recreate"
enum:
- value: "RollingUpdate"
description: "Create new pods and then kill old ones"
- value: "Recreate"
description: "Kill existing pods before creating new ones"
# Port configuration
- variable: embyServerHttp
label: "Configure Emby Server HTTP Service"
group: "Networking"
schema:
type: dict
attrs:
- variable: port
label: "Port to expose for Emby Server UI"
schema:
type: int
min: 9000
max: 65535
default: 9096
# Specify GPU configuration
- variable: gpuConfiguration
label: "GPU Configuration"
group: "Resource Reservation"
schema:
type: dict
$ref:
- "definitions/gpuConfiguration"
attrs: []
- variable: appVolumeMounts
label: "Emby Server Storage"
group: "Storage"
schema:
type: dict
attrs:
- variable: config
label: "Config Volume"
schema:
type: dict
attrs:
- variable: datasetName
label: "Emby Server Config Volume Name"
schema:
type: string
$ref:
- "normalize/ixVolume"
show_if: [["hostPathEnabled", "=", false]]
default: "ix-emby_config"
editable: false
hidden: true
- variable: mountPath
label: "Emby Server Config Mount Path"
description: "Path where the volume will be mounted inside the pod"
schema:
type: path
editable: false
hidden: true
default: "/config"
- variable: hostPathEnabled
label: "Enable Host Path for Emby Server Config Volume"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- variable: hostPath
label: "Host Path for Emby Server Config Volume"
schema:
type: hostpath
required: true
- variable: extraAppVolumeMounts
label: "Emby Server Extra Host Path Volumes"
group: "Storage"
schema:
type: list
items:
- variable: extraAppVolume
label: "Emby Server Host Path Volume"
description: "Add an extra host path volume for emby application"
schema:
type: dict
attrs:
- variable: mountPath
label: "Mount Path in Pod"
description: "Path where the volume will be mounted inside the pod"
schema:
type: path
required: true
- variable: hostPath
label: "Host Path"
description: "Host path"
schema:
type: hostpath
required: true
- variable: readOnly
label: "Read Only"
description: "Mount hostpath in read-only mode"
schema:
type: boolean
default: false

View File

@@ -0,0 +1,6 @@
dependencies:
- name: common
repository: file://../../../library/common/2112.0.0
version: 2112.0.0
digest: sha256:47115d9b91afe42c8537dcf0fd8224f2f7d1c775f9ff860efa68a6b57d17d1c0
generated: "2021-12-06T21:24:36.674776+05:00"

View File

@@ -0,0 +1,3 @@
1. Get the application URL by running these commands:
http://$node_ip:{{ .Values.embyServerHttp.port }}/

View File

@@ -0,0 +1,73 @@
{{ include "common.deployment.common_config" . | nindent 0 }}
spec: {{ include "common.deployment.common_spec" . | nindent 2 }}
template: {{ include "common.deployment.pod.metadata" . | nindent 4 }}
spec:
{{- if .Values.hostNetwork }}
hostNetwork: {{ .Values.hostNetwork }}
dnsPolicy: ClusterFirstWithHostNet
{{- end }}
hostname: {{ template "common.names.fullname" . }}
containers:
- name: {{ .Chart.Name }}
{{ include "common.containers.imageConfig" .Values.image | nindent 10 }}
{{ include "common.containers.gpuConfiguration" .Values | nindent 10 }}
volumeMounts: {{ include "common.storage.configureAppVolumeMountsInContainer" .Values | nindent 12 }}
{{ range $index, $hostPathConfiguration := .Values.extraAppVolumeMounts }}
- name: extrappvolume-{{ $index }}
mountPath: {{ $hostPathConfiguration.mountPath }}
{{ if $hostPathConfiguration.readOnly }}
readOnly: {{ $hostPathConfiguration.readOnly }}
{{ end }}
{{ end }}
ports:
- name: emby
protocol: TCP
containerPort: 8096
{{- if .Values.hostNetwork }}
hostPort: {{ .Values.embyServerHttp.port }}
{{- end }}
- name: emby-dlna
protocol: UDP
containerPort: 1900
- name: emby-lnd
protocol: UDP
containerPort: 7359
env:
- name: KUBE_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: POD_IP
valueFrom:
fieldRef:
fieldPath: status.podIP
{{ $envList := (default list .Values.environmentVariables) }}
{{ if and .Values.gpuConfiguration (hasKey .Values.gpuConfiguration "nvidia.com/gpu") (gt (get .Values.gpuConfiguration "nvidia.com/gpu" | toDecimal) 0) }}
{{ $envList = mustAppend $envList (dict "name" "NVIDIA_DRIVER_CAPABILITIES" "value" "all") }}
{{ end }}
{{ include "common.containers.environmentVariables" (dict "environmentVariables" $envList) | nindent 12 }}
readinessProbe:
httpGet:
path: /emby/System/Ping
port: 8096
failureThreshold: 5
periodSeconds: 15
livenessProbe:
httpGet:
path: /emby/System/Ping
port: 8096
failureThreshold: 5
periodSeconds: 15
startupProbe:
httpGet:
path: /emby/System/Ping
port: 8096
initialDelaySeconds: 5
failureThreshold: 40
periodSeconds: 15
volumes: {{ include "common.storage.configureAppVolumes" .Values | nindent 8 }}
{{ range $index, $hostPathConfiguration := .Values.extraAppVolumeMounts }}
- name: extrappvolume-{{ $index }}
hostPath:
path: {{ $hostPathConfiguration.hostPath }}
{{ end }}

View File

@@ -0,0 +1,15 @@
{{ $svc := .Values.embyServerHttp }}
{{ $ports := list }}
{{ $ports = mustAppend $ports (dict "name" "emby" "port" $svc.port "nodePort" $svc.port "targetPort" "emby") }}
{{ $ports = mustAppend $ports (dict "name" "http" "port" 80 "targetPort" "emby") }}
{{ $ports = mustAppend $ports (dict "name" "https" "port" 443 "targetPort" "emby") }}
{{ $params := . }}
{{ $_ := set $params "commonService" (dict "ports" $ports ) }}
{{ if .Values.hostNetwork }}
{{ $_ := set $params.commonService "nameSuffix" "tcp-cluster-ip" }}
{{ $_1 := set $params.commonService "type" "ClusterIP" }}
{{ else }}
{{ $_ := set $params.commonService "nameSuffix" "tcp" }}
{{ $_1 := set $params.commonService "type" "NodePort" }}
{{ end }}
{{ include "common.classes.service" $params }}

View File

@@ -0,0 +1,6 @@
{{ $ports := list }}
{{ $ports = mustAppend $ports (dict "name" "emby-dlna" "port" 1900 "protocol" "UDP" "targetPort" "emby-dlna") }}
{{ $ports = mustAppend $ports (dict "name" "emby-lnd" "port" 7359 "protocol" "UDP" "targetPort" "emby-lnd") }}
{{ $params := . }}
{{ $_ := set $params "commonService" (dict "type" "ClusterIP" "ports" $ports "nameSuffix" "udp" ) }}
{{ include "common.classes.service" $params }}

View File

@@ -0,0 +1,21 @@
{{- $serviceName := (include "common.names.fullname" .) -}}
apiVersion: v1
kind: Pod
metadata:
name: "{{ .Release.Name }}-emby-test"
labels:
app: {{ .Release.Name }}
release: {{ .Release.Name }}
annotations:
"helm.sh/hook": test
spec:
containers:
- name: test-curl
image: alpine/curl
imagePullPolicy: "IfNotPresent"
command:
- /bin/sh
- -ec
- |
curl --connect-timeout 5 --max-time 10 --retry 5 --retry-delay 15 --retry-max-time 90 --retry-all-errors -ksf http://{{ $serviceName }}-tcp:32496/emby/System/Ping
restartPolicy: Never

View File

@@ -0,0 +1,19 @@
appVolumeMounts:
config:
emptyDir: true
mountPath: /config
emptyDirVolumes: true
environmentVariables: []
extraAppVolumeMounts:
- hostPath: /mnt/extras
mountPath: /mnt/extras
readOnly: true
gpuConfiguration: {}
hostNetwork: false
image:
pullPolicy: IfNotPresent
repository: emby/embyserver
tag: 4.6.7.0
embyServerHttp:
port: 32496
updateStrategy: Recreate

3
test/emby/item.yaml Normal file
View File

@@ -0,0 +1,3 @@
categories:
- entertainment
icon_url: https://images-na.ssl-images-amazon.com/images/I/41NwssJC1iL.png