Files
jellyfin-helm/charts/jellyfin/templates/persistentVolumeClaim.yaml
T
Aleksei SviridkinandClaude 35f39bf92c feat(persistence): add cache volume persistence support
Add dedicated cache volume configuration to reduce wear on SD cards and improve
performance by allowing cache to be stored on separate storage.

Changes:
- Add persistence.cache configuration in values.yaml with support for:
  - PVC (default type when enabled)
  - hostPath for direct host mount
  - emptyDir (default when disabled)
- Add cache volume mount at /cache in deployment
- Add cache PersistentVolumeClaim template
- Support for existing PVC via existingClaim
- Configurable size (default 10Gi), accessMode, storageClass, and annotations
- Update Chart version from 2.5.0 to 2.5.1
- Add Artifact Hub changelog annotation

The cache volume is disabled by default to maintain backward compatibility.
Users can enable it via:

```yaml
persistence:
  cache:
    enabled: true
    type: pvc
    size: 10Gi
```

This addresses the use case mentioned in #62 where users want to avoid SD card
wear by storing cache on separate persistent storage.

Fixes: #62

Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Aleksei Sviridkin <f@lex.la>
2025-11-05 23:26:58 +03:00

69 lines
2.0 KiB
YAML

{{- if and .Values.persistence.config.enabled (not .Values.persistence.config.existingClaim) }}
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: {{ include "jellyfin.fullname" . }}-config
labels:
{{- include "jellyfin.labels" . | nindent 4 }}
{{- with .Values.persistence.config.annotations }}
annotations:
{{- toYaml . | nindent 4 }}
{{- end }}
spec:
accessModes:
- {{ .Values.persistence.config.accessMode | quote }}
resources:
requests:
storage: {{ .Values.persistence.config.size | quote }}
{{- with .Values.persistence.config.storageClass }}
storageClassName: {{ . | quote }}
{{- end }}
{{- end }}
{{- if and .Values.persistence.media.enabled (eq .Values.persistence.media.type "pvc") (not .Values.persistence.media.existingClaim) }}
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: {{ include "jellyfin.fullname" . }}-media
labels:
{{- include "jellyfin.labels" . | nindent 4 }}
{{- with .Values.persistence.media.annotations }}
annotations:
{{- toYaml . | nindent 4 }}
{{- end }}
spec:
accessModes:
- {{ .Values.persistence.media.accessMode | quote }}
resources:
requests:
storage: {{ .Values.persistence.media.size | quote }}
{{- with .Values.persistence.media.storageClass }}
storageClassName: {{ . | quote }}
{{- end }}
{{- end }}
{{- if and .Values.persistence.cache.enabled (eq .Values.persistence.cache.type "pvc") (not .Values.persistence.cache.existingClaim) }}
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: {{ include "jellyfin.fullname" . }}-cache
labels:
{{- include "jellyfin.labels" . | nindent 4 }}
{{- with .Values.persistence.cache.annotations }}
annotations:
{{- toYaml . | nindent 4 }}
{{- end }}
spec:
accessModes:
- {{ .Values.persistence.cache.accessMode | quote }}
resources:
requests:
storage: {{ .Values.persistence.cache.size | quote }}
{{- with .Values.persistence.cache.storageClass }}
storageClassName: {{ . | quote }}
{{- end }}
{{- end }}