Merge pull request #65 from FML128/master
Fix for fresh start with metrix and hostPath option for media
This commit is contained in:
4 files changed
+57
-17
No files matched your search
@@ -68,8 +68,8 @@ helm install my-jellyfin jellyfin/jellyfin -f values.yaml
|
|||||||
| jellyfin.enableDLNA | bool | `false` | Enable DLNA. Requires host network. See: https://jellyfin.org/docs/general/networking/dlna.html |
|
| jellyfin.enableDLNA | bool | `false` | Enable DLNA. Requires host network. See: https://jellyfin.org/docs/general/networking/dlna.html |
|
||||||
| jellyfin.env | list | `[]` | Additional environment variables for the container. |
|
| jellyfin.env | list | `[]` | Additional environment variables for the container. |
|
||||||
| livenessProbe | object | `{"initialDelaySeconds":10,"tcpSocket":{"port":"http"}}` | Configure liveness probe for Jellyfin. |
|
| livenessProbe | object | `{"initialDelaySeconds":10,"tcpSocket":{"port":"http"}}` | Configure liveness probe for Jellyfin. |
|
||||||
| metrics | object | `{"command":["bash","-c","sed 's,<EnableMetrics>false</EnableMetrics>,<EnableMetrics>true</EnableMetrics>,' -i /config/config/system.xml && /jellyfin/jellyfin"],"enabled":false,"serviceMonitor":{"enabled":false,"interval":"30s","labels":{},"metricRelabelings":[],"namespace":"","path":"/metrics","port":8096,"relabelings":[],"scheme":"http","scrapeTimeout":"30s","targetLabels":[],"tlsConfig":{}}}` | Configuration for metrics collection and monitoring |
|
| metrics | object | `{"enabled":false,"serviceMonitor":{"enabled":false,"interval":"30s","labels":{},"metricRelabelings":[],"namespace":"","path":"/metrics","port":8096,"relabelings":[],"scheme":"http","scrapeTimeout":"30s","targetLabels":[],"tlsConfig":{}}}` | Configuration for metrics collection and monitoring |
|
||||||
| metrics.enabled | bool | `false` | 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. |
|
| metrics.enabled | bool | `false` | Enable or disable metrics collection |
|
||||||
| metrics.serviceMonitor | object | `{"enabled":false,"interval":"30s","labels":{},"metricRelabelings":[],"namespace":"","path":"/metrics","port":8096,"relabelings":[],"scheme":"http","scrapeTimeout":"30s","targetLabels":[],"tlsConfig":{}}` | Configuration for the Prometheus ServiceMonitor |
|
| metrics.serviceMonitor | object | `{"enabled":false,"interval":"30s","labels":{},"metricRelabelings":[],"namespace":"","path":"/metrics","port":8096,"relabelings":[],"scheme":"http","scrapeTimeout":"30s","targetLabels":[],"tlsConfig":{}}` | Configuration for the Prometheus ServiceMonitor |
|
||||||
| metrics.serviceMonitor.enabled | bool | `false` | Enable or disable the creation of a ServiceMonitor resource |
|
| metrics.serviceMonitor.enabled | bool | `false` | Enable or disable the creation of a ServiceMonitor resource |
|
||||||
| metrics.serviceMonitor.interval | string | `"30s"` | Interval at which metrics should be scraped |
|
| metrics.serviceMonitor.interval | string | `"30s"` | Interval at which metrics should be scraped |
|
||||||
@@ -90,11 +90,13 @@ helm install my-jellyfin jellyfin/jellyfin -f values.yaml
|
|||||||
| persistence.config.enabled | bool | `true` | set to false to use emptyDir |
|
| persistence.config.enabled | bool | `true` | set to false to use emptyDir |
|
||||||
| persistence.config.size | string | `"5Gi"` | |
|
| persistence.config.size | string | `"5Gi"` | |
|
||||||
| persistence.config.storageClass | string | `""` | If undefined (the default) or set to null, no storageClassName spec is set, choosing the default provisioner. |
|
| persistence.config.storageClass | string | `""` | If undefined (the default) or set to null, no storageClassName spec is set, choosing the default provisioner. |
|
||||||
| persistence.media.accessMode | string | `"ReadWriteOnce"` | |
|
| persistence.media.accessMode | string | `"ReadWriteOnce"` | PVC specific settings, only used if type is 'pvc'. |
|
||||||
| persistence.media.annotations | object | `{}` | Custom annotations to be added to the PVC |
|
| persistence.media.annotations | object | `{}` | Custom annotations to be added to the PVC |
|
||||||
| persistence.media.enabled | bool | `true` | set to false to use emptyDir |
|
| persistence.media.enabled | bool | `true` | set to false to use emptyDir |
|
||||||
|
| persistence.media.hostPath | string | `""` | Path on the host node for media storage, only used if type is 'hostPath'. |
|
||||||
| persistence.media.size | string | `"25Gi"` | |
|
| persistence.media.size | string | `"25Gi"` | |
|
||||||
| persistence.media.storageClass | string | `""` | If undefined (the default) or set to null, no storageClassName spec is set, choosing the default provisioner. |
|
| persistence.media.storageClass | string | `""` | If undefined (the default) or set to null, no storageClassName spec is set, choosing the default provisioner. |
|
||||||
|
| persistence.media.type | string | `"pvc"` | Type of volume for media storage (pvc, hostPath, emptyDir). If 'enabled' is false, 'emptyDir' is used regardless of this setting. |
|
||||||
| podAnnotations | object | `{}` | Annotations to add to the pod. |
|
| podAnnotations | object | `{}` | Annotations to add to the pod. |
|
||||||
| podLabels | object | `{}` | Additional labels to add to the pod. |
|
| podLabels | object | `{}` | Additional labels to add to the pod. |
|
||||||
| podSecurityContext | object | `{}` | Security context for the pod. |
|
| podSecurityContext | object | `{}` | Security context for the pod. |
|
||||||
|
|||||||
@@ -45,13 +45,9 @@ spec:
|
|||||||
{{- toYaml .Values.securityContext | nindent 12 }}
|
{{- toYaml .Values.securityContext | nindent 12 }}
|
||||||
image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
|
image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
|
||||||
imagePullPolicy: {{ .Values.image.pullPolicy }}
|
imagePullPolicy: {{ .Values.image.pullPolicy }}
|
||||||
{{- if and .Values.image.command (not .Values.metrics.enabled) }}
|
{{- with .Values.jellyfin.command }}
|
||||||
command:
|
command:
|
||||||
{{- toYaml .Values.jellyfin.command | nindent 12 }}
|
{{- toYaml . | nindent 12 }}
|
||||||
{{- end }}
|
|
||||||
{{- if .Values.metrics.enabled }}
|
|
||||||
command:
|
|
||||||
{{- toYaml .Values.metrics.command | nindent 12 }}
|
|
||||||
{{- end }}
|
{{- end }}
|
||||||
{{- with .Values.jellyfin.args }}
|
{{- with .Values.jellyfin.args }}
|
||||||
args:
|
args:
|
||||||
@@ -61,6 +57,41 @@ spec:
|
|||||||
env:
|
env:
|
||||||
{{- toYaml . | nindent 12 }}
|
{{- toYaml . | nindent 12 }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
{{- if .Values.metrics.enabled }}
|
||||||
|
lifecycle:
|
||||||
|
postStart:
|
||||||
|
exec:
|
||||||
|
command:
|
||||||
|
- /bin/sh
|
||||||
|
- -c
|
||||||
|
- |
|
||||||
|
echo "Waiting for system.xml to enable metrics..."
|
||||||
|
timeout=300 # 5 minutes timeout
|
||||||
|
interval=5 # Check every 5 seconds
|
||||||
|
elapsed=0
|
||||||
|
while [ ! -f /config/config/system.xml ]; do
|
||||||
|
if [ $elapsed -ge $timeout ]; then
|
||||||
|
echo "ERROR: Timed out waiting for /config/config/system.xml" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
sleep $interval
|
||||||
|
elapsed=$((elapsed + interval))
|
||||||
|
done
|
||||||
|
echo "Found /config/config/system.xml, enabling metrics..."
|
||||||
|
# Check if metrics are already enabled before running sed
|
||||||
|
if ! grep -q '<EnableMetrics>true</EnableMetrics>' /config/config/system.xml; then
|
||||||
|
sed 's,<EnableMetrics>false</EnableMetrics>,<EnableMetrics>true</EnableMetrics>,' -i /config/config/system.xml
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo "Metrics enabled successfully."
|
||||||
|
else
|
||||||
|
echo "ERROR: Failed to enable metrics in /config/config/system.xml" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "Metrics already enabled."
|
||||||
|
fi
|
||||||
|
exit 0
|
||||||
|
{{- end }}
|
||||||
ports:
|
ports:
|
||||||
- name: http
|
- name: http
|
||||||
containerPort: 8096
|
containerPort: 8096
|
||||||
@@ -102,8 +133,16 @@ spec:
|
|||||||
{{- end }}
|
{{- end }}
|
||||||
- name: media
|
- name: media
|
||||||
{{- if .Values.persistence.media.enabled }}
|
{{- if .Values.persistence.media.enabled }}
|
||||||
|
{{- if eq .Values.persistence.media.type "pvc" }}
|
||||||
persistentVolumeClaim:
|
persistentVolumeClaim:
|
||||||
claimName: {{ if .Values.persistence.media.existingClaim }}{{ .Values.persistence.media.existingClaim }}{{- else }}{{ template "jellyfin.fullname" . }}-media{{- end }}
|
claimName: {{ if .Values.persistence.media.existingClaim }}{{ .Values.persistence.media.existingClaim }}{{- else }}{{ template "jellyfin.fullname" . }}-media{{- end }}
|
||||||
|
{{- else if eq .Values.persistence.media.type "hostPath" }}
|
||||||
|
hostPath:
|
||||||
|
path: {{ .Values.persistence.media.hostPath }}
|
||||||
|
type: Directory
|
||||||
|
{{- else }}
|
||||||
|
emptyDir: {}
|
||||||
|
{{- end }}
|
||||||
{{- else }}
|
{{- else }}
|
||||||
emptyDir: {}
|
emptyDir: {}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ spec:
|
|||||||
{{- end }}
|
{{- end }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
|
||||||
{{- if and .Values.persistence.media.enabled (not .Values.persistence.media.existingClaim) }}
|
{{- if and .Values.persistence.media.enabled (eq .Values.persistence.media.type "pvc") (not .Values.persistence.media.existingClaim) }}
|
||||||
---
|
---
|
||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
kind: PersistentVolumeClaim
|
kind: PersistentVolumeClaim
|
||||||
|
|||||||
@@ -184,6 +184,11 @@ persistence:
|
|||||||
media:
|
media:
|
||||||
# -- set to false to use emptyDir
|
# -- set to false to use emptyDir
|
||||||
enabled: true
|
enabled: true
|
||||||
|
# -- Type of volume for media storage (pvc, hostPath, emptyDir). If 'enabled' is false, 'emptyDir' is used regardless of this setting.
|
||||||
|
type: pvc
|
||||||
|
# -- Path on the host node for media storage, only used if type is 'hostPath'.
|
||||||
|
hostPath: ""
|
||||||
|
# -- PVC specific settings, only used if type is 'pvc'.
|
||||||
accessMode: ReadWriteOnce
|
accessMode: ReadWriteOnce
|
||||||
size: 25Gi
|
size: 25Gi
|
||||||
# -- Custom annotations to be added to the PVC
|
# -- Custom annotations to be added to the PVC
|
||||||
@@ -195,14 +200,8 @@ persistence:
|
|||||||
|
|
||||||
# -- Configuration for metrics collection and monitoring
|
# -- Configuration for metrics collection and monitoring
|
||||||
metrics:
|
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.
|
# -- Enable or disable metrics collection
|
||||||
enabled: false
|
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
|
# -- Configuration for the Prometheus ServiceMonitor
|
||||||
serviceMonitor:
|
serviceMonitor:
|
||||||
# -- Enable or disable the creation of a ServiceMonitor resource
|
# -- Enable or disable the creation of a ServiceMonitor resource
|
||||||
|
|||||||
Reference in new issue
Block a user