jellyfin
This commit is contained in:
7
jellyfin/kustomization.yaml
Normal file
7
jellyfin/kustomization.yaml
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
# argocd/kustomization.yaml
|
||||||
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
|
kind: Kustomization
|
||||||
|
|
||||||
|
resources:
|
||||||
|
- main.yaml
|
||||||
|
- pvc.yaml
|
||||||
126
jellyfin/main.yaml
Normal file
126
jellyfin/main.yaml
Normal file
@@ -0,0 +1,126 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
automountServiceAccountToken: true
|
||||||
|
kind: ServiceAccount
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/instance: jellyfin
|
||||||
|
app.kubernetes.io/managed-by: Helm
|
||||||
|
app.kubernetes.io/name: jellyfin
|
||||||
|
app.kubernetes.io/version: 10.10.6
|
||||||
|
helm.sh/chart: jellyfin-2.3.0
|
||||||
|
name: jellyfin
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/instance: jellyfin
|
||||||
|
app.kubernetes.io/managed-by: Helm
|
||||||
|
app.kubernetes.io/name: jellyfin
|
||||||
|
app.kubernetes.io/version: 10.10.6
|
||||||
|
helm.sh/chart: jellyfin-2.3.0
|
||||||
|
name: jellyfin
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
port: 8096
|
||||||
|
protocol: TCP
|
||||||
|
targetPort: http
|
||||||
|
selector:
|
||||||
|
app.kubernetes.io/instance: jellyfin
|
||||||
|
app.kubernetes.io/name: jellyfin
|
||||||
|
type: ClusterIP
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: PersistentVolumeClaim
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/instance: jellyfin
|
||||||
|
app.kubernetes.io/managed-by: Helm
|
||||||
|
app.kubernetes.io/name: jellyfin
|
||||||
|
app.kubernetes.io/version: 10.10.6
|
||||||
|
helm.sh/chart: jellyfin-2.3.0
|
||||||
|
name: jellyfin-config
|
||||||
|
spec:
|
||||||
|
accessModes:
|
||||||
|
- ReadWriteOnce
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
storage: 5Gi
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: PersistentVolumeClaim
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/instance: jellyfin
|
||||||
|
app.kubernetes.io/managed-by: Helm
|
||||||
|
app.kubernetes.io/name: jellyfin
|
||||||
|
app.kubernetes.io/version: 10.10.6
|
||||||
|
helm.sh/chart: jellyfin-2.3.0
|
||||||
|
name: jellyfin-media
|
||||||
|
spec:
|
||||||
|
accessModes:
|
||||||
|
- ReadWriteOnce
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
storage: 25Gi
|
||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/instance: jellyfin
|
||||||
|
app.kubernetes.io/managed-by: Helm
|
||||||
|
app.kubernetes.io/name: jellyfin
|
||||||
|
app.kubernetes.io/version: 10.10.6
|
||||||
|
helm.sh/chart: jellyfin-2.3.0
|
||||||
|
name: jellyfin
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app.kubernetes.io/instance: jellyfin
|
||||||
|
app.kubernetes.io/name: jellyfin
|
||||||
|
strategy:
|
||||||
|
type: RollingUpdate
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/instance: jellyfin
|
||||||
|
app.kubernetes.io/managed-by: Helm
|
||||||
|
app.kubernetes.io/name: jellyfin
|
||||||
|
app.kubernetes.io/version: 10.10.6
|
||||||
|
helm.sh/chart: jellyfin-2.3.0
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- image: docker.io/jellyfin/jellyfin:10.10.6
|
||||||
|
imagePullPolicy: IfNotPresent
|
||||||
|
livenessProbe:
|
||||||
|
initialDelaySeconds: 10
|
||||||
|
tcpSocket:
|
||||||
|
port: http
|
||||||
|
name: jellyfin
|
||||||
|
ports:
|
||||||
|
- containerPort: 8096
|
||||||
|
name: http
|
||||||
|
protocol: TCP
|
||||||
|
readinessProbe:
|
||||||
|
initialDelaySeconds: 10
|
||||||
|
tcpSocket:
|
||||||
|
port: http
|
||||||
|
resources: {}
|
||||||
|
securityContext: {}
|
||||||
|
volumeMounts:
|
||||||
|
- mountPath: /config
|
||||||
|
name: config
|
||||||
|
- mountPath: /media
|
||||||
|
name: media
|
||||||
|
securityContext: {}
|
||||||
|
serviceAccountName: jellyfin
|
||||||
|
volumes:
|
||||||
|
- name: config
|
||||||
|
persistentVolumeClaim:
|
||||||
|
claimName: jellyfin-config
|
||||||
|
- name: media
|
||||||
|
persistentVolumeClaim:
|
||||||
|
claimName: jellyfin-media
|
||||||
11
jellyfin/pvc.yaml
Normal file
11
jellyfin/pvc.yaml
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: PersistentVolumeClaim
|
||||||
|
metadata:
|
||||||
|
name: nfs-media
|
||||||
|
spec:
|
||||||
|
accessModes:
|
||||||
|
- ReadWriteMany
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
storage: 10Gi # Muss kleiner oder gleich der PV-Größe sein
|
||||||
|
volumeName: nfs-media
|
||||||
12
jellyfin/src/kustomization.yaml
Normal file
12
jellyfin/src/kustomization.yaml
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
# kubernetes/cilium/kustomization.yaml
|
||||||
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
|
kind: Kustomization
|
||||||
|
|
||||||
|
helmCharts:
|
||||||
|
- name: jellyfin
|
||||||
|
repo: https://jellyfin.github.io/jellyfin-helm
|
||||||
|
version: 2.3.0
|
||||||
|
releaseName: jellyfin
|
||||||
|
includeCRDs: true
|
||||||
|
namespace: jellyfin
|
||||||
|
valuesFile: values.yaml
|
||||||
238
jellyfin/src/values.yaml
Normal file
238
jellyfin/src/values.yaml
Normal file
@@ -0,0 +1,238 @@
|
|||||||
|
# Default values for Jellyfin.
|
||||||
|
# This is a YAML-formatted file.
|
||||||
|
|
||||||
|
# -- Number of Jellyfin replicas to start. Should be left at 1.
|
||||||
|
replicaCount: 1
|
||||||
|
|
||||||
|
# -- Image pull secrets to authenticate with private repositories.
|
||||||
|
# See: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
|
||||||
|
imagePullSecrets: []
|
||||||
|
|
||||||
|
image:
|
||||||
|
# -- Container image repository for Jellyfin.
|
||||||
|
repository: docker.io/jellyfin/jellyfin
|
||||||
|
# -- Jellyfin container image tag. Leave empty to automatically use the Chart's app version.
|
||||||
|
tag: ""
|
||||||
|
# -- Image pull policy (Always, IfNotPresent, or Never).
|
||||||
|
pullPolicy: IfNotPresent
|
||||||
|
|
||||||
|
# -- Override the default name of the chart.
|
||||||
|
nameOverride: ""
|
||||||
|
# -- Override the default full name of the chart.
|
||||||
|
fullnameOverride: ""
|
||||||
|
|
||||||
|
# -- Service account configuration. See: https://kubernetes.io/docs/concepts/security/service-accounts/
|
||||||
|
serviceAccount:
|
||||||
|
# -- Specifies whether to create a service account.
|
||||||
|
create: true
|
||||||
|
# -- Automatically mount API credentials for the service account.
|
||||||
|
automount: true
|
||||||
|
# -- Annotations for the service account.
|
||||||
|
annotations: {}
|
||||||
|
# -- Custom name for the service account. If left empty, the name will be autogenerated.
|
||||||
|
name: ""
|
||||||
|
|
||||||
|
# -- Annotations to add to the pod.
|
||||||
|
podAnnotations: {}
|
||||||
|
# -- Additional labels to add to the pod.
|
||||||
|
podLabels: {}
|
||||||
|
|
||||||
|
# -- Security context for the pod.
|
||||||
|
podSecurityContext: {}
|
||||||
|
# fsGroup: 2000
|
||||||
|
|
||||||
|
# -- Security context for the container.
|
||||||
|
securityContext: {}
|
||||||
|
# capabilities:
|
||||||
|
# drop:
|
||||||
|
# - ALL
|
||||||
|
# readOnlyRootFilesystem: true
|
||||||
|
# runAsNonRoot: true
|
||||||
|
# runAsUser: 1000
|
||||||
|
|
||||||
|
# -- Define a custom runtimeClassName for the pod.
|
||||||
|
runtimeClassName: ''
|
||||||
|
|
||||||
|
# -- Define a priorityClassName for the pod.
|
||||||
|
priorityClassName: ""
|
||||||
|
|
||||||
|
# -- Deployment strategy configuration. See `kubectl explain deployment.spec.strategy`.
|
||||||
|
deploymentStrategy:
|
||||||
|
type: RollingUpdate
|
||||||
|
|
||||||
|
# -- Annotations to add to the deployment.
|
||||||
|
deploymentAnnotations: {}
|
||||||
|
|
||||||
|
service:
|
||||||
|
# # -- Custom name for the service port
|
||||||
|
# name: http
|
||||||
|
# -- Service type (ClusterIP, NodePort, or LoadBalancer).
|
||||||
|
type: ClusterIP
|
||||||
|
# -- Configure dual-stack IP family policy. See: https://kubernetes.io/docs/concepts/services-networking/dual-stack/
|
||||||
|
ipFamilyPolicy: ""
|
||||||
|
# -- Supported IP families (IPv4, IPv6).
|
||||||
|
ipFamilies: []
|
||||||
|
# -- Specific IP address for the LoadBalancer.
|
||||||
|
loadBalancerIP: ""
|
||||||
|
# -- Class of the LoadBalancer.
|
||||||
|
loadBalancerClass: ""
|
||||||
|
# -- Source ranges allowed to access the LoadBalancer.
|
||||||
|
loadBalancerSourceRanges: []
|
||||||
|
# -- Port for the Jellyfin service.
|
||||||
|
port: 8096
|
||||||
|
# -- Name of the port in the service.
|
||||||
|
portName: service
|
||||||
|
# -- Annotations for the service.
|
||||||
|
annotations: {}
|
||||||
|
# -- Labels for the service.
|
||||||
|
labels: {}
|
||||||
|
# -- External traffic policy (Cluster or Local).
|
||||||
|
# externalTrafficPolicy: Cluster
|
||||||
|
# -- NodePort for the service (if applicable).
|
||||||
|
# nodePort:
|
||||||
|
|
||||||
|
# -- Ingress configuration. See: https://kubernetes.io/docs/concepts/services-networking/ingress/
|
||||||
|
ingress:
|
||||||
|
enabled: false
|
||||||
|
className: ""
|
||||||
|
annotations: {}
|
||||||
|
# kubernetes.io/ingress.class: nginx
|
||||||
|
# kubernetes.io/tls-acme: "true"
|
||||||
|
hosts:
|
||||||
|
- host: chart-example.local
|
||||||
|
paths:
|
||||||
|
- path: /
|
||||||
|
pathType: ImplementationSpecific
|
||||||
|
tls: []
|
||||||
|
# - secretName: chart-example-tls
|
||||||
|
# hosts:
|
||||||
|
# - chart-example.local
|
||||||
|
|
||||||
|
# -- Resource requests and limits for the Jellyfin container.
|
||||||
|
resources: {}
|
||||||
|
# limits:
|
||||||
|
# cpu: 100m
|
||||||
|
# memory: 128Mi
|
||||||
|
# requests:
|
||||||
|
# cpu: 100m
|
||||||
|
# memory: 128Mi
|
||||||
|
|
||||||
|
# -- Configure liveness probe for Jellyfin.
|
||||||
|
livenessProbe:
|
||||||
|
initialDelaySeconds: 10
|
||||||
|
tcpSocket:
|
||||||
|
port: http
|
||||||
|
# successThreshold: 1
|
||||||
|
# failureThreshold: 3
|
||||||
|
# timeoutSeconds: 1
|
||||||
|
# periodSeconds: 10
|
||||||
|
|
||||||
|
# -- Configure readiness probe for Jellyfin.
|
||||||
|
readinessProbe:
|
||||||
|
initialDelaySeconds: 10
|
||||||
|
tcpSocket:
|
||||||
|
port: http
|
||||||
|
# successThreshold: 1
|
||||||
|
# failureThreshold: 3
|
||||||
|
# timeoutSeconds: 1
|
||||||
|
# periodSeconds: 10
|
||||||
|
|
||||||
|
# -- Additional volumes to mount in the Jellyfin pod.
|
||||||
|
volumes: []
|
||||||
|
# - name: foo
|
||||||
|
# secret:
|
||||||
|
# secretName: mysecret
|
||||||
|
# optional: false
|
||||||
|
|
||||||
|
# -- Additional volume mounts for the Jellyfin container.
|
||||||
|
volumeMounts: []
|
||||||
|
# - name: foo
|
||||||
|
# mountPath: "/etc/foo"
|
||||||
|
# readOnly: true
|
||||||
|
|
||||||
|
# -- Node selector for pod scheduling.
|
||||||
|
nodeSelector: {}
|
||||||
|
|
||||||
|
# -- Tolerations for pod scheduling.
|
||||||
|
tolerations: []
|
||||||
|
|
||||||
|
# -- Affinity rules for pod scheduling.
|
||||||
|
affinity: {}
|
||||||
|
|
||||||
|
jellyfin:
|
||||||
|
# -- Enable DLNA. Requires host network. See: https://jellyfin.org/docs/general/networking/dlna.html
|
||||||
|
enableDLNA: false
|
||||||
|
# -- Custom command to use as container entrypoint.
|
||||||
|
command: []
|
||||||
|
# -- Additional arguments for the entrypoint command.
|
||||||
|
args: []
|
||||||
|
# -- Additional environment variables for the container.
|
||||||
|
env: []
|
||||||
|
|
||||||
|
persistence:
|
||||||
|
config:
|
||||||
|
# -- set to false to use emptyDir
|
||||||
|
enabled: true
|
||||||
|
accessMode: ReadWriteOnce
|
||||||
|
size: 5Gi
|
||||||
|
# -- Custom annotations to be added to the PVC
|
||||||
|
annotations: {}
|
||||||
|
# -- If undefined (the default) or set to null, no storageClassName spec is set, choosing the default provisioner.
|
||||||
|
storageClass: ''
|
||||||
|
## -- Use an existing PVC for this mount
|
||||||
|
# existingClaim: ''
|
||||||
|
media:
|
||||||
|
# -- set to false to use emptyDir
|
||||||
|
enabled: true
|
||||||
|
accessMode: ReadWriteOnce
|
||||||
|
size: 25Gi
|
||||||
|
# -- Custom annotations to be added to the PVC
|
||||||
|
annotations: {}
|
||||||
|
# -- If undefined (the default) or set to null, no storageClassName spec is set, choosing the default provisioner.
|
||||||
|
storageClass: ''
|
||||||
|
## -- Use an existing PVC for this mount
|
||||||
|
# existingClaim: ''
|
||||||
|
|
||||||
|
# -- Configuration for metrics collection and monitoring
|
||||||
|
metrics:
|
||||||
|
# -- Enable or disable metrics collection - Ensure you have started and configured your Jellyfin instance first as this will fail if system.xml does not exist yet.
|
||||||
|
enabled: false
|
||||||
|
command:
|
||||||
|
- bash
|
||||||
|
- '-c'
|
||||||
|
- >-
|
||||||
|
sed 's,<EnableMetrics>false</EnableMetrics>,<EnableMetrics>true</EnableMetrics>,' -i /config/config/system.xml &&
|
||||||
|
/jellyfin/jellyfin
|
||||||
|
# -- Configuration for the Prometheus ServiceMonitor
|
||||||
|
serviceMonitor:
|
||||||
|
# -- Enable or disable the creation of a ServiceMonitor resource
|
||||||
|
enabled: false
|
||||||
|
# -- Namespace where the ServiceMonitor resource should be created. Defaults to Release.Namespace
|
||||||
|
namespace: ''
|
||||||
|
# -- Labels to add to the ServiceMonitor resource
|
||||||
|
labels: {}
|
||||||
|
# -- Interval at which metrics should be scraped
|
||||||
|
interval: 30s
|
||||||
|
# -- Timeout for scraping metrics
|
||||||
|
scrapeTimeout: 30s
|
||||||
|
# -- Path to scrape for metrics
|
||||||
|
path: /metrics
|
||||||
|
# -- Port to scrape for metrics
|
||||||
|
port: 8096
|
||||||
|
# -- Scheme to use for scraping metrics (http or https)
|
||||||
|
scheme: http
|
||||||
|
# -- TLS configuration for scraping metrics
|
||||||
|
tlsConfig: {}
|
||||||
|
# -- Relabeling rules for the scraped metrics
|
||||||
|
relabelings: []
|
||||||
|
# -- Relabeling rules for the metrics before ingestion
|
||||||
|
metricRelabelings: []
|
||||||
|
# -- Target labels to add to the scraped metrics
|
||||||
|
targetLabels: []
|
||||||
|
|
||||||
|
# -- additional init containers to run inside the pod.
|
||||||
|
extraInitContainers: []
|
||||||
|
|
||||||
|
# -- additional sidecar containers to run inside the pod.
|
||||||
|
extraContainers: []
|
||||||
|
|
||||||
Reference in New Issue
Block a user