feat(gateway-api): add HTTPRoute support

Add support for Kubernetes Gateway API HTTPRoute resource as a modern
alternative to Ingress. The implementation follows the same pattern as
the existing Ingress template.

Changes:
- Add HTTPRoute template with configurable parentRefs, hostnames, and rules
- Add httpRoute section to values.yaml with generic examples
- Update Chart version from 2.5.0 to 2.6.0
- Add Artifact Hub changelog annotation
- Add HTTPRoute documentation to README

Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Aleksei Sviridkin <f@lex.la>
This commit is contained in:
Aleksei SviridkinandClaude committed 2025-11-05 22:36:09 +03:00 Unverified
1 parent 2401a45bb1
commit f1ae87fba9
5 files changed
+116 -2

No files matched your search

+5 -1
View File
@@ -8,5 +8,9 @@ keywords:
- jellyfin - jellyfin
- media - media
- self-hosted - self-hosted
version: 2.5.0 version: 2.6.0
appVersion: 10.11.2 appVersion: 10.11.2
annotations:
artifacthub.io/changes: |
- kind: added
description: Add support for Gateway API HTTPRoute resource
+32 -1
View File
@@ -1,6 +1,6 @@
# jellyfin # jellyfin
![Version: 2.5.0](https://img.shields.io/badge/Version-2.5.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 10.11.2](https://img.shields.io/badge/AppVersion-10.11.2-informational?style=flat-square) ![Version: 2.6.0](https://img.shields.io/badge/Version-2.6.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 10.11.2](https://img.shields.io/badge/AppVersion-10.11.2-informational?style=flat-square)
A Helm chart for Jellyfin Media Server A Helm chart for Jellyfin Media Server
@@ -60,6 +60,10 @@ helm install my-jellyfin jellyfin/jellyfin -f values.yaml
| extraContainers | list | `[]` | additional sidecar containers to run inside the pod. | | extraContainers | list | `[]` | additional sidecar containers to run inside the pod. |
| extraInitContainers | list | `[]` | additional init containers to run inside the pod. | | extraInitContainers | list | `[]` | additional init containers to run inside the pod. |
| fullnameOverride | string | `""` | Override the default full name of the chart. | | fullnameOverride | string | `""` | Override the default full name of the chart. |
| httpRoute | object | `{"annotations":{},"enabled":false,"hostnames":[],"parentRefs":[],"rules":[{"matches":[{"path":{"type":"PathPrefix","value":"/"}}]}]}` | HTTPRoute configuration for Gateway API. See: https://gateway-api.sigs.k8s.io/ |
| httpRoute.hostnames | list | `[]` | Hostnames to match for this HTTPRoute |
| httpRoute.parentRefs | list | `[]` | Gateway references to attach this HTTPRoute to |
| httpRoute.rules | list | `[{"matches":[{"path":{"type":"PathPrefix","value":"/"}}]}]` | Rules for routing traffic |
| image.pullPolicy | string | `"IfNotPresent"` | Image pull policy (Always, IfNotPresent, or Never). | | image.pullPolicy | string | `"IfNotPresent"` | Image pull policy (Always, IfNotPresent, or Never). |
| image.repository | string | `"docker.io/jellyfin/jellyfin"` | Container image repository for Jellyfin. | | image.repository | string | `"docker.io/jellyfin/jellyfin"` | Container image repository for Jellyfin. |
| image.tag | string | `""` | Jellyfin container image tag. Leave empty to automatically use the Chart's app version. | | image.tag | string | `""` | Jellyfin container image tag. Leave empty to automatically use the Chart's app version. |
@@ -134,6 +138,33 @@ helm install my-jellyfin jellyfin/jellyfin -f values.yaml
---------------------------------------------- ----------------------------------------------
Autogenerated from chart metadata using [helm-docs v1.14.2](https://github.com/norwoodj/helm-docs/releases/v1.14.2) Autogenerated from chart metadata using [helm-docs v1.14.2](https://github.com/norwoodj/helm-docs/releases/v1.14.2)
## Gateway API HTTPRoute
This chart supports the Kubernetes Gateway API HTTPRoute resource as a modern alternative to Ingress.
To use HTTPRoute, you need to have Gateway API CRDs installed in your cluster and a Gateway resource configured.
Example configuration:
```yaml
httpRoute:
enabled: true
annotations: {}
parentRefs:
- name: my-gateway
namespace: gateway-system
sectionName: https
hostnames:
- jellyfin.example.com
rules:
- matches:
- path:
type: PathPrefix
value: /
```
For more information about Gateway API, see: <https://gateway-api.sigs.k8s.io/>
## Hardware acceleration ## Hardware acceleration
Out of the box the pod does not have the necessary permissions to enable hardware acceleration (HWA) in Jellyfin. Out of the box the pod does not have the necessary permissions to enable hardware acceleration (HWA) in Jellyfin.
+27
View File
@@ -59,6 +59,33 @@ helm install my-jellyfin jellyfin/jellyfin -f values.yaml
{{ template "helm-docs.versionFooter" . }} {{ template "helm-docs.versionFooter" . }}
## Gateway API HTTPRoute
This chart supports the Kubernetes Gateway API HTTPRoute resource as a modern alternative to Ingress.
To use HTTPRoute, you need to have Gateway API CRDs installed in your cluster and a Gateway resource configured.
Example configuration:
```yaml
httpRoute:
enabled: true
annotations: {}
parentRefs:
- name: my-gateway
namespace: gateway-system
sectionName: https
hostnames:
- jellyfin.example.com
rules:
- matches:
- path:
type: PathPrefix
value: /
```
For more information about Gateway API, see: <https://gateway-api.sigs.k8s.io/>
## Hardware acceleration ## Hardware acceleration
Out of the box the pod does not have the necessary permissions to enable hardware acceleration (HWA) in Jellyfin. Out of the box the pod does not have the necessary permissions to enable hardware acceleration (HWA) in Jellyfin.
+33
View File
@@ -0,0 +1,33 @@
{{- if .Values.httpRoute.enabled }}
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
name: {{ include "jellyfin.fullname" . }}
labels:
{{- include "jellyfin.labels" . | nindent 4 }}
{{- with .Values.httpRoute.annotations }}
annotations:
{{- toYaml . | nindent 4 }}
{{- end }}
spec:
{{- with .Values.httpRoute.parentRefs }}
parentRefs:
{{- toYaml . | nindent 4 }}
{{- end }}
{{- with .Values.httpRoute.hostnames }}
hostnames:
{{- toYaml . | nindent 4 }}
{{- end }}
rules:
{{- range .Values.httpRoute.rules }}
- matches:
{{- range .matches }}
- path:
type: {{ .path.type }}
value: {{ .path.value }}
{{- end }}
backendRefs:
- name: {{ include "jellyfin.fullname" $ }}
port: {{ $.Values.service.port }}
{{- end }}
{{- end }}
+19
View File
@@ -124,6 +124,25 @@ ingress:
# hosts: # hosts:
# - chart-example.local # - chart-example.local
# -- HTTPRoute configuration for Gateway API. See: https://gateway-api.sigs.k8s.io/
httpRoute:
enabled: false
annotations: {}
# -- Gateway references to attach this HTTPRoute to
parentRefs: []
# - name: my-gateway
# namespace: gateway-system
# sectionName: https
# -- Hostnames to match for this HTTPRoute
hostnames: []
# - jellyfin.example.com
# -- Rules for routing traffic
rules:
- matches:
- path:
type: PathPrefix
value: /
# -- Resource requests and limits for the Jellyfin container. # -- Resource requests and limits for the Jellyfin container.
resources: {} resources: {}
# limits: # limits: