Merge branch 'master-vnext' into feature/add-cache-persistence
This commit is contained in:
6 files changed
+228
-8
No files matched your search
@@ -15,4 +15,8 @@ annotations:
|
|||||||
- kind: added
|
- kind: added
|
||||||
description: Add persistence.cache configuration for dedicated cache volume support
|
description: Add persistence.cache configuration for dedicated cache volume support
|
||||||
- kind: added
|
- kind: added
|
||||||
|
description: Add comprehensive IPv6 and dual-stack networking documentation
|
||||||
|
- kind: changed
|
||||||
|
description: Improve health probe configuration examples for IPv6 compatibility
|
||||||
|
- kind: changed
|
||||||
description: Add revisionHistoryLimit parameter to control rollback history retention (defaults to 3 instead of Kubernetes default 10)
|
description: Add revisionHistoryLimit parameter to control rollback history retention (defaults to 3 instead of Kubernetes default 10)
|
||||||
@@ -69,7 +69,7 @@ helm install my-jellyfin jellyfin/jellyfin -f values.yaml
|
|||||||
| jellyfin.command | list | `[]` | Custom command to use as container entrypoint. |
|
| jellyfin.command | list | `[]` | Custom command to use as container entrypoint. |
|
||||||
| 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 | `{"httpGet":{"path":"/health","port":"http"},"initialDelaySeconds":10}` | Configure liveness probe for Jellyfin. Uses httpGet for compatibility with both IPv4 and IPv6. |
|
||||||
| 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 | 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 |
|
| 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 |
|
||||||
@@ -114,14 +114,14 @@ helm install my-jellyfin jellyfin/jellyfin -f values.yaml
|
|||||||
| podPrivileges.hostPID | bool | `false` | Enable hostPID namespace. Allows pod to see processes on the host. |
|
| podPrivileges.hostPID | bool | `false` | Enable hostPID namespace. Allows pod to see processes on the host. |
|
||||||
| podSecurityContext | object | `{}` | Security context for the pod. |
|
| podSecurityContext | object | `{}` | Security context for the pod. |
|
||||||
| priorityClassName | string | `""` | Define a priorityClassName for the pod. |
|
| priorityClassName | string | `""` | Define a priorityClassName for the pod. |
|
||||||
| readinessProbe | object | `{"initialDelaySeconds":10,"tcpSocket":{"port":"http"}}` | Configure readiness probe for Jellyfin. |
|
| readinessProbe | object | `{"httpGet":{"path":"/health","port":"http"},"initialDelaySeconds":10}` | Configure readiness probe for Jellyfin. Uses httpGet for compatibility with both IPv4 and IPv6. |
|
||||||
| replicaCount | int | `1` | Number of Jellyfin replicas to start. Should be left at 1. |
|
| replicaCount | int | `1` | Number of Jellyfin replicas to start. Should be left at 1. |
|
||||||
| resources | object | `{}` | Resource requests and limits for the Jellyfin container. |
|
| resources | object | `{}` | Resource requests and limits for the Jellyfin container. |
|
||||||
| runtimeClassName | string | `""` | Define a custom runtimeClassName for the pod. |
|
| runtimeClassName | string | `""` | Define a custom runtimeClassName for the pod. |
|
||||||
| securityContext | object | `{}` | Security context for the container. |
|
| securityContext | object | `{}` | Security context for the container. |
|
||||||
| service.annotations | object | `{}` | Annotations for the service. |
|
| service.annotations | object | `{}` | Annotations for the service. |
|
||||||
| service.ipFamilies | list | `[]` | Supported IP families (IPv4, IPv6). |
|
| service.ipFamilies | list | `[]` | Supported IP families (IPv4, IPv6). Examples: IPv4 only: ["IPv4"] IPv6 only: ["IPv6"] Dual-stack (IPv4 primary): ["IPv4", "IPv6"] Dual-stack (IPv6 primary): ["IPv6", "IPv4"] Note: When using IPv6, ensure your health checks are compatible (consider using httpGet instead of tcpSocket) |
|
||||||
| service.ipFamilyPolicy | string | `""` | Configure dual-stack IP family policy. See: https://kubernetes.io/docs/concepts/services-networking/dual-stack/ |
|
| service.ipFamilyPolicy | string | `""` | Configure dual-stack IP family policy. See: https://kubernetes.io/docs/concepts/services-networking/dual-stack/ Options: SingleStack, PreferDualStack, RequireDualStack For IPv6-only clusters, use "SingleStack" with ipFamilies: ["IPv6"] For dual-stack, use "PreferDualStack" or "RequireDualStack" with ipFamilies: ["IPv4", "IPv6"] or ["IPv6", "IPv4"] |
|
||||||
| service.labels | object | `{}` | Labels for the service. |
|
| service.labels | object | `{}` | Labels for the service. |
|
||||||
| service.loadBalancerClass | string | `""` | Class of the LoadBalancer. |
|
| service.loadBalancerClass | string | `""` | Class of the LoadBalancer. |
|
||||||
| service.loadBalancerIP | string | `""` | Specific IP address for the LoadBalancer. |
|
| service.loadBalancerIP | string | `""` | Specific IP address for the LoadBalancer. |
|
||||||
@@ -167,3 +167,32 @@ extraVolumeMounts:
|
|||||||
- name: hwa
|
- name: hwa
|
||||||
mountPath: /dev/dri
|
mountPath: /dev/dri
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## IPv6 Configuration
|
||||||
|
|
||||||
|
This chart supports IPv6 and dual-stack networking configurations out of the box. Health probes use httpGet by default for compatibility with both IPv4 and IPv6.
|
||||||
|
|
||||||
|
### IPv6-only Configuration
|
||||||
|
|
||||||
|
For IPv6-only clusters:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
service:
|
||||||
|
ipFamilyPolicy: SingleStack
|
||||||
|
ipFamilies:
|
||||||
|
- IPv6
|
||||||
|
```
|
||||||
|
|
||||||
|
### Dual-stack Configuration
|
||||||
|
|
||||||
|
For dual-stack clusters (both IPv4 and IPv6):
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
service:
|
||||||
|
ipFamilyPolicy: PreferDualStack # or RequireDualStack
|
||||||
|
ipFamilies:
|
||||||
|
- IPv4
|
||||||
|
- IPv6 # First family in the list is the primary
|
||||||
|
```
|
||||||
|
|
||||||
|
For more information about Kubernetes dual-stack networking, see: <https://kubernetes.io/docs/concepts/services-networking/dual-stack/>
|
||||||
@@ -85,3 +85,32 @@ extraVolumeMounts:
|
|||||||
- name: hwa
|
- name: hwa
|
||||||
mountPath: /dev/dri
|
mountPath: /dev/dri
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## IPv6 Configuration
|
||||||
|
|
||||||
|
This chart supports IPv6 and dual-stack networking configurations out of the box. Health probes use httpGet by default for compatibility with both IPv4 and IPv6.
|
||||||
|
|
||||||
|
### IPv6-only Configuration
|
||||||
|
|
||||||
|
For IPv6-only clusters:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
service:
|
||||||
|
ipFamilyPolicy: SingleStack
|
||||||
|
ipFamilies:
|
||||||
|
- IPv6
|
||||||
|
```
|
||||||
|
|
||||||
|
### Dual-stack Configuration
|
||||||
|
|
||||||
|
For dual-stack clusters (both IPv4 and IPv6):
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
service:
|
||||||
|
ipFamilyPolicy: PreferDualStack # or RequireDualStack
|
||||||
|
ipFamilies:
|
||||||
|
- IPv4
|
||||||
|
- IPv6 # First family in the list is the primary
|
||||||
|
```
|
||||||
|
|
||||||
|
For more information about Kubernetes dual-stack networking, see: <https://kubernetes.io/docs/concepts/services-networking/dual-stack/>
|
||||||
@@ -44,6 +44,23 @@ Cache Volume:
|
|||||||
|
|
||||||
{{- if and .Values.persistence.cache.enabled (eq .Values.persistence.cache.type "hostPath") }}
|
{{- if and .Values.persistence.cache.enabled (eq .Values.persistence.cache.type "hostPath") }}
|
||||||
⚠ WARNING: Using hostPath for cache - ensure {{ .Values.persistence.cache.hostPath }} exists on the node
|
⚠ WARNING: Using hostPath for cache - ensure {{ .Values.persistence.cache.hostPath }} exists on the node
|
||||||
|
{{- if or .Values.service.ipFamilyPolicy .Values.service.ipFamilies }}
|
||||||
|
|
||||||
|
Service IP Configuration:
|
||||||
|
{{- if .Values.service.ipFamilyPolicy }}
|
||||||
|
IP Family Policy: {{ .Values.service.ipFamilyPolicy }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.service.ipFamilies }}
|
||||||
|
IP Families: {{ .Values.service.ipFamilies | join ", " }}
|
||||||
|
{{- if eq (index .Values.service.ipFamilies 0) "IPv6" }}
|
||||||
|
⚠ NOTE: IPv6 primary - ensure your probes use httpGet instead of tcpSocket for compatibility
|
||||||
|
{{- end }}
|
||||||
|
{{- if has "IPv6" .Values.service.ipFamilies }}
|
||||||
|
{{- if not .Values.service.ipFamilyPolicy }}
|
||||||
|
⚠ WARNING: ipFamilies includes IPv6 but ipFamilyPolicy is not set
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
Deployment Configuration:
|
Deployment Configuration:
|
||||||
Revision History Limit: {{ .Values.revisionHistoryLimit }}
|
Revision History Limit: {{ .Values.revisionHistoryLimit }}
|
||||||
|
|||||||
@@ -0,0 +1,128 @@
|
|||||||
|
suite: test service ipv6 and dual-stack
|
||||||
|
templates:
|
||||||
|
- service.yaml
|
||||||
|
tests:
|
||||||
|
- it: should not set ipFamilyPolicy by default
|
||||||
|
asserts:
|
||||||
|
- isNull:
|
||||||
|
path: spec.ipFamilyPolicy
|
||||||
|
|
||||||
|
- it: should not set ipFamilies by default
|
||||||
|
asserts:
|
||||||
|
- isNull:
|
||||||
|
path: spec.ipFamilies
|
||||||
|
|
||||||
|
- it: should set ipFamilyPolicy when specified
|
||||||
|
set:
|
||||||
|
service.ipFamilyPolicy: PreferDualStack
|
||||||
|
asserts:
|
||||||
|
- equal:
|
||||||
|
path: spec.ipFamilyPolicy
|
||||||
|
value: PreferDualStack
|
||||||
|
|
||||||
|
- it: should support SingleStack policy
|
||||||
|
set:
|
||||||
|
service.ipFamilyPolicy: SingleStack
|
||||||
|
asserts:
|
||||||
|
- equal:
|
||||||
|
path: spec.ipFamilyPolicy
|
||||||
|
value: SingleStack
|
||||||
|
|
||||||
|
- it: should support RequireDualStack policy
|
||||||
|
set:
|
||||||
|
service.ipFamilyPolicy: RequireDualStack
|
||||||
|
asserts:
|
||||||
|
- equal:
|
||||||
|
path: spec.ipFamilyPolicy
|
||||||
|
value: RequireDualStack
|
||||||
|
|
||||||
|
- it: should set ipFamilies for IPv4 only
|
||||||
|
set:
|
||||||
|
service.ipFamilies:
|
||||||
|
- IPv4
|
||||||
|
asserts:
|
||||||
|
- equal:
|
||||||
|
path: spec.ipFamilies[0]
|
||||||
|
value: IPv4
|
||||||
|
|
||||||
|
- it: should set ipFamilies for IPv6 only
|
||||||
|
set:
|
||||||
|
service.ipFamilies:
|
||||||
|
- IPv6
|
||||||
|
asserts:
|
||||||
|
- equal:
|
||||||
|
path: spec.ipFamilies[0]
|
||||||
|
value: IPv6
|
||||||
|
|
||||||
|
- it: should set ipFamilies for dual-stack IPv4 primary
|
||||||
|
set:
|
||||||
|
service.ipFamilies:
|
||||||
|
- IPv4
|
||||||
|
- IPv6
|
||||||
|
asserts:
|
||||||
|
- equal:
|
||||||
|
path: spec.ipFamilies[0]
|
||||||
|
value: IPv4
|
||||||
|
- equal:
|
||||||
|
path: spec.ipFamilies[1]
|
||||||
|
value: IPv6
|
||||||
|
|
||||||
|
- it: should set ipFamilies for dual-stack IPv6 primary
|
||||||
|
set:
|
||||||
|
service.ipFamilies:
|
||||||
|
- IPv6
|
||||||
|
- IPv4
|
||||||
|
asserts:
|
||||||
|
- equal:
|
||||||
|
path: spec.ipFamilies[0]
|
||||||
|
value: IPv6
|
||||||
|
- equal:
|
||||||
|
path: spec.ipFamilies[1]
|
||||||
|
value: IPv4
|
||||||
|
|
||||||
|
- it: should work with PreferDualStack and both families
|
||||||
|
set:
|
||||||
|
service.ipFamilyPolicy: PreferDualStack
|
||||||
|
service.ipFamilies:
|
||||||
|
- IPv4
|
||||||
|
- IPv6
|
||||||
|
asserts:
|
||||||
|
- equal:
|
||||||
|
path: spec.ipFamilyPolicy
|
||||||
|
value: PreferDualStack
|
||||||
|
- equal:
|
||||||
|
path: spec.ipFamilies[0]
|
||||||
|
value: IPv4
|
||||||
|
- equal:
|
||||||
|
path: spec.ipFamilies[1]
|
||||||
|
value: IPv6
|
||||||
|
|
||||||
|
- it: should work with RequireDualStack and both families
|
||||||
|
set:
|
||||||
|
service.ipFamilyPolicy: RequireDualStack
|
||||||
|
service.ipFamilies:
|
||||||
|
- IPv6
|
||||||
|
- IPv4
|
||||||
|
asserts:
|
||||||
|
- equal:
|
||||||
|
path: spec.ipFamilyPolicy
|
||||||
|
value: RequireDualStack
|
||||||
|
- equal:
|
||||||
|
path: spec.ipFamilies[0]
|
||||||
|
value: IPv6
|
||||||
|
- equal:
|
||||||
|
path: spec.ipFamilies[1]
|
||||||
|
value: IPv4
|
||||||
|
|
||||||
|
- it: should work with SingleStack IPv6 only
|
||||||
|
set:
|
||||||
|
service.ipFamilyPolicy: SingleStack
|
||||||
|
service.ipFamilies:
|
||||||
|
- IPv6
|
||||||
|
asserts:
|
||||||
|
- equal:
|
||||||
|
path: spec.ipFamilyPolicy
|
||||||
|
value: SingleStack
|
||||||
|
- equal:
|
||||||
|
path: spec.ipFamilies[0]
|
||||||
|
value: IPv6
|
||||||
@@ -91,8 +91,17 @@ service:
|
|||||||
# -- Service type (ClusterIP, NodePort, or LoadBalancer).
|
# -- Service type (ClusterIP, NodePort, or LoadBalancer).
|
||||||
type: ClusterIP
|
type: ClusterIP
|
||||||
# -- Configure dual-stack IP family policy. See: https://kubernetes.io/docs/concepts/services-networking/dual-stack/
|
# -- Configure dual-stack IP family policy. See: https://kubernetes.io/docs/concepts/services-networking/dual-stack/
|
||||||
|
# Options: SingleStack, PreferDualStack, RequireDualStack
|
||||||
|
# For IPv6-only clusters, use "SingleStack" with ipFamilies: ["IPv6"]
|
||||||
|
# For dual-stack, use "PreferDualStack" or "RequireDualStack" with ipFamilies: ["IPv4", "IPv6"] or ["IPv6", "IPv4"]
|
||||||
ipFamilyPolicy: ""
|
ipFamilyPolicy: ""
|
||||||
# -- Supported IP families (IPv4, IPv6).
|
# -- Supported IP families (IPv4, IPv6).
|
||||||
|
# Examples:
|
||||||
|
# IPv4 only: ["IPv4"]
|
||||||
|
# IPv6 only: ["IPv6"]
|
||||||
|
# Dual-stack (IPv4 primary): ["IPv4", "IPv6"]
|
||||||
|
# Dual-stack (IPv6 primary): ["IPv6", "IPv4"]
|
||||||
|
# Note: When using IPv6, ensure your health checks are compatible (consider using httpGet instead of tcpSocket)
|
||||||
ipFamilies: []
|
ipFamilies: []
|
||||||
# -- Specific IP address for the LoadBalancer.
|
# -- Specific IP address for the LoadBalancer.
|
||||||
loadBalancerIP: ""
|
loadBalancerIP: ""
|
||||||
@@ -140,20 +149,24 @@ resources: {}
|
|||||||
# memory: 128Mi
|
# memory: 128Mi
|
||||||
|
|
||||||
# -- Configure liveness probe for Jellyfin.
|
# -- Configure liveness probe for Jellyfin.
|
||||||
|
# Uses httpGet for compatibility with both IPv4 and IPv6.
|
||||||
livenessProbe:
|
livenessProbe:
|
||||||
initialDelaySeconds: 10
|
httpGet:
|
||||||
tcpSocket:
|
path: /health
|
||||||
port: http
|
port: http
|
||||||
|
initialDelaySeconds: 10
|
||||||
# successThreshold: 1
|
# successThreshold: 1
|
||||||
# failureThreshold: 3
|
# failureThreshold: 3
|
||||||
# timeoutSeconds: 1
|
# timeoutSeconds: 1
|
||||||
# periodSeconds: 10
|
# periodSeconds: 10
|
||||||
|
|
||||||
# -- Configure readiness probe for Jellyfin.
|
# -- Configure readiness probe for Jellyfin.
|
||||||
|
# Uses httpGet for compatibility with both IPv4 and IPv6.
|
||||||
readinessProbe:
|
readinessProbe:
|
||||||
initialDelaySeconds: 10
|
httpGet:
|
||||||
tcpSocket:
|
path: /health
|
||||||
port: http
|
port: http
|
||||||
|
initialDelaySeconds: 10
|
||||||
# successThreshold: 1
|
# successThreshold: 1
|
||||||
# failureThreshold: 3
|
# failureThreshold: 3
|
||||||
# timeoutSeconds: 1
|
# timeoutSeconds: 1
|
||||||
|
|||||||
Reference in new issue
Block a user