seerr update

This commit is contained in:
Philip Haupt
2026-02-16 19:44:47 +01:00
parent a07c7bb9b9
commit f5813c76c6
17 changed files with 69 additions and 512 deletions

View File

@@ -3,12 +3,12 @@
apiVersion: v1
kind: ServiceAccount
metadata:
name: jellyseerr-seerr-chart
name: seerr-seerr-chart
labels:
helm.sh/chart: seerr-chart-3.0.0
helm.sh/chart: seerr-chart-3.0.2
app.kubernetes.io/name: seerr-chart
app.kubernetes.io/instance: jellyseerr
app.kubernetes.io/version: "2.7.3"
app.kubernetes.io/instance: seerr
app.kubernetes.io/version: "v3.0.1"
app.kubernetes.io/part-of: seerr-chart
app.kubernetes.io/managed-by: Helm
automountServiceAccountToken: true
@@ -17,12 +17,12 @@ automountServiceAccountToken: true
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: jellyseerr-seerr-chart-config
name: seerr-seerr-chart-config
labels:
helm.sh/chart: seerr-chart-3.0.0
helm.sh/chart: seerr-chart-3.0.2
app.kubernetes.io/name: seerr-chart
app.kubernetes.io/instance: jellyseerr
app.kubernetes.io/version: "2.7.3"
app.kubernetes.io/instance: seerr
app.kubernetes.io/version: "v3.0.1"
app.kubernetes.io/part-of: seerr-chart
app.kubernetes.io/managed-by: Helm
spec:
@@ -37,12 +37,12 @@ spec:
apiVersion: v1
kind: Service
metadata:
name: jellyseerr-seerr-chart
name: seerr-seerr-chart
labels:
helm.sh/chart: seerr-chart-3.0.0
helm.sh/chart: seerr-chart-3.0.2
app.kubernetes.io/name: seerr-chart
app.kubernetes.io/instance: jellyseerr
app.kubernetes.io/version: "2.7.3"
app.kubernetes.io/instance: seerr
app.kubernetes.io/version: "v3.0.1"
app.kubernetes.io/part-of: seerr-chart
app.kubernetes.io/managed-by: Helm
spec:
@@ -54,45 +54,56 @@ spec:
name: http
selector:
app.kubernetes.io/name: seerr-chart
app.kubernetes.io/instance: jellyseerr
app.kubernetes.io/instance: seerr
ipFamilyPolicy: PreferDualStack
---
# Source: seerr-chart/templates/statefulset.yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: jellyseerr-seerr-chart
name: seerr-seerr-chart
labels:
helm.sh/chart: seerr-chart-3.0.0
helm.sh/chart: seerr-chart-3.0.2
app.kubernetes.io/name: seerr-chart
app.kubernetes.io/instance: jellyseerr
app.kubernetes.io/version: "2.7.3"
app.kubernetes.io/instance: seerr
app.kubernetes.io/version: "v3.0.1"
app.kubernetes.io/part-of: seerr-chart
app.kubernetes.io/managed-by: Helm
spec:
serviceName: jellyseerr-seerr-chart
serviceName: seerr-seerr-chart
selector:
matchLabels:
app.kubernetes.io/name: seerr-chart
app.kubernetes.io/instance: jellyseerr
app.kubernetes.io/instance: seerr
template:
metadata:
labels:
helm.sh/chart: seerr-chart-3.0.0
helm.sh/chart: seerr-chart-3.0.2
app.kubernetes.io/name: seerr-chart
app.kubernetes.io/instance: jellyseerr
app.kubernetes.io/version: "2.7.3"
app.kubernetes.io/instance: seerr
app.kubernetes.io/version: "v3.0.1"
app.kubernetes.io/part-of: seerr-chart
app.kubernetes.io/managed-by: Helm
spec:
serviceAccountName: jellyseerr-seerr-chart
serviceAccountName: seerr-seerr-chart
securityContext:
{}
fsGroup: 1000
fsGroupChangePolicy: OnRootMismatch
containers:
- name: seerr-chart
securityContext:
{}
image: "ghcr.io/fallenbagel/jellyseerr:2.7.3"
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: false
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seccompProfile:
type: RuntimeDefault
image: "ghcr.io/seerr-team/seerr:v3.0.1"
imagePullPolicy: IfNotPresent
ports:
- name: http
@@ -114,18 +125,18 @@ spec:
volumes:
- name: config
persistentVolumeClaim:
claimName: jellyseerr-seerr-chart-config
claimName: seerr-seerr-chart-config
---
# Source: seerr-chart/templates/tests/test-connection.yaml
apiVersion: v1
kind: Pod
metadata:
name: "jellyseerr-seerr-chart-test-connection"
name: "seerr-seerr-chart-test-connection"
labels:
helm.sh/chart: seerr-chart-3.0.0
helm.sh/chart: seerr-chart-3.0.2
app.kubernetes.io/name: seerr-chart
app.kubernetes.io/instance: jellyseerr
app.kubernetes.io/version: "2.7.3"
app.kubernetes.io/instance: seerr
app.kubernetes.io/version: "v3.0.1"
app.kubernetes.io/part-of: seerr-chart
app.kubernetes.io/managed-by: Helm
annotations:
@@ -135,5 +146,5 @@ spec:
- name: wget
image: busybox
command: ['wget']
args: ['jellyseerr-seerr-chart:80']
args: ['seerr-seerr-chart:80']
restartPolicy: Never

View File

@@ -1,25 +0,0 @@
# Patterns to ignore when building packages.
# This supports shell glob matching, relative path matching, and
# negation (prefixed with !). Only one pattern per line.
.DS_Store
# Common VCS dirs
.git/
.gitignore
.bzr/
.bzrignore
.hg/
.hgignore
.svn/
# Common backup files
*.swp
*.bak
*.tmp
*.orig
*~
# Various IDEs
.project
.idea/
*.tmproj
.vscode/
# go template
*.gotmpl

View File

@@ -1,14 +0,0 @@
apiVersion: v2
kubeVersion: '>=1.23.0-0'
name: seerr-chart
description: Seerr helm chart for Kubernetes
type: application
version: 3.0.0
# renovate: image=ghcr.io/fallenbagel/jellyseerr
appVersion: '2.7.3'
maintainers:
- name: Seerr Team
url: https://github.com/orgs/seerr-team/people
sources:
- https://github.com/seerr-team/seerr/tree/main/charts/seerr
home: https://github.com/seerr-team/seerr

View File

@@ -1,87 +1,7 @@
# seerr-chart
# seerr
![Version: 3.0.0](https://img.shields.io/badge/Version-3.0.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 2.7.3](https://img.shields.io/badge/AppVersion-2.7.3-informational?style=flat-square)
helm show values oci://ghcr.io/seerr-team/seerr/seerr-chart > values.yaml
Seerr helm chart for Kubernetes
**Homepage:** <https://github.com/seerr-team/seerr>
## Maintainers
| Name | Email | Url |
| ---- | ------ | --- |
| Seerr Team | | <https://github.com/orgs/seerr-team/people> |
## Source Code
* <https://github.com/seerr-team/seerr/tree/main/charts/seerr>
## Requirements
Kubernetes: `>=1.23.0-0`
## Installation
Refer to [https://docs.seerr.dev/getting-started/kubernetes](Seerr kubernetes documentation)
## Update Notes
### Updating to 3.0.0
Nothing has changed; we just rebranded the `jellyseerr` Helm chart to `seerr` 🥳.
### Updating to 2.7.0
Seerr is a stateful application and it is not designed to have multiple replicas. In version 2.7.0 we address this by:
- replacing `Deployment` with `StatefulSet`
- removing `replicaCount` value
If `replicaCount` value was used - remove it. Helm update should work fine after that.
## Values
| Key | Type | Default | Description |
|-----|------|---------|-------------|
| affinity | object | `{}` | |
| config | object | `{"persistence":{"accessModes":["ReadWriteOnce"],"annotations":{},"name":"","size":"5Gi","volumeName":""}}` | Creating PVC to store configuration |
| config.persistence.accessModes | list | `["ReadWriteOnce"]` | Access modes of persistent disk |
| config.persistence.annotations | object | `{}` | Annotations for PVCs |
| config.persistence.name | string | `""` | Config name |
| config.persistence.size | string | `"5Gi"` | Size of persistent disk |
| config.persistence.volumeName | string | `""` | Name of the permanent volume to reference in the claim. Can be used to bind to existing volumes. |
| extraEnv | list | `[]` | Environment variables to add to the seerr pods |
| extraEnvFrom | list | `[]` | Environment variables from secrets or configmaps to add to the seerr pods |
| fullnameOverride | string | `""` | |
| image.pullPolicy | string | `"IfNotPresent"` | |
| image.registry | string | `"ghcr.io"` | |
| image.repository | string | `"seerr-team/seerr"` | |
| image.sha | string | `""` | |
| image.tag | string | `""` | Overrides the image tag whose default is the chart appVersion. |
| imagePullSecrets | list | `[]` | |
| ingress.annotations | object | `{}` | |
| ingress.enabled | bool | `false` | |
| ingress.hosts[0].host | string | `"chart-example.local"` | |
| ingress.hosts[0].paths[0].path | string | `"/"` | |
| ingress.hosts[0].paths[0].pathType | string | `"ImplementationSpecific"` | |
| ingress.ingressClassName | string | `""` | |
| ingress.tls | list | `[]` | |
| nameOverride | string | `""` | |
| nodeSelector | object | `{}` | |
| podAnnotations | object | `{}` | |
| podLabels | object | `{}` | |
| podSecurityContext | object | `{}` | |
| probes.livenessProbe | object | `{}` | Configure liveness probe |
| probes.readinessProbe | object | `{}` | Configure readiness probe |
| probes.startupProbe | string | `nil` | Configure startup probe |
| resources | object | `{}` | |
| securityContext | object | `{}` | |
| service.port | int | `80` | |
| service.type | string | `"ClusterIP"` | |
| serviceAccount.annotations | object | `{}` | Annotations to add to the service account |
| serviceAccount.automount | bool | `true` | Automatically mount a ServiceAccount's API credentials? |
| serviceAccount.create | bool | `true` | Specifies whether a service account should be created |
| serviceAccount.name | string | `""` | If not set and create is true, a name is generated using the fullname template |
| tolerations | list | `[]` | |
| volumeMounts | list | `[]` | Additional volumeMounts on the output StatefulSet definition. |
| volumes | list | `[]` | Additional volumes on the output StatefulSet definition. |
helm template seerr oci://ghcr.io/seerr-team/seerr/seerr-chart \
--namespace jellyseerr \
-f values.yaml > ../main.yaml

View File

@@ -1,36 +0,0 @@
{{ template "chart.header" . }}
{{ template "chart.deprecationWarning" . }}
{{ template "chart.badgesSection" . }}
{{ template "chart.description" . }}
{{ template "chart.homepageLine" . }}
{{ template "chart.maintainersSection" . }}
{{ template "chart.sourcesSection" . }}
{{ template "chart.requirementsSection" . }}
## Installation
Refer to [https://docs.seerr.dev/getting-started/kubernetes](Seerr kubernetes documentation)
## Update Notes
### Updating to 3.0.0
Nothing has changed; we just rebranded the `jellyseerr` Helm chart to `seerr` 🥳.
### Updating to 2.7.0
Seerr is a stateful application and it is not designed to have multiple replicas. In version 2.7.0 we address this by:
- replacing `Deployment` with `StatefulSet`
- removing `replicaCount` value
If `replicaCount` value was used - remove it. Helm update should work fine after that.
{{ template "chart.valuesSection" . }}

View File

@@ -1 +0,0 @@
repositoryID: 249547ec-2a30-48de-a5bc-07bfd5aa2e8f

View File

@@ -1,5 +0,0 @@
***********************************************************************
Welcome to {{ .Chart.Name }}
Chart version: {{ .Chart.Version }}
App version: {{ .Chart.AppVersion }}
***********************************************************************

View File

@@ -1,70 +0,0 @@
{{/*
Expand the name of the chart.
*/}}
{{- define "seerr.name" -}}
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
{{- end }}
{{/*
Create a default fully qualified app name.
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
If release name contains chart name it will be used as a full name.
*/}}
{{- define "seerr.fullname" -}}
{{- if .Values.fullnameOverride }}
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- $name := default .Chart.Name .Values.nameOverride }}
{{- if contains $name .Release.Name }}
{{- .Release.Name | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
{{- end }}
{{- end }}
{{- end }}
{{/*
Create chart name and version as used by the chart label.
*/}}
{{- define "seerr.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
{{- end }}
{{/*
Common labels
*/}}
{{- define "seerr.labels" -}}
helm.sh/chart: {{ include "seerr.chart" . }}
{{ include "seerr.selectorLabels" . }}
{{- if .Chart.AppVersion }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
{{- end }}
app.kubernetes.io/part-of: {{ .Chart.Name }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end }}
{{/*
Selector labels
*/}}
{{- define "seerr.selectorLabels" -}}
app.kubernetes.io/name: {{ include "seerr.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end }}
{{/*
Create the name of the service account to use
*/}}
{{- define "seerr.serviceAccountName" -}}
{{- if .Values.serviceAccount.create }}
{{- default (include "seerr.fullname" .) .Values.serviceAccount.name }}
{{- else }}
{{- default "default" .Values.serviceAccount.name }}
{{- end }}
{{- end }}
{{/*
Create the name of the pvc config to use
*/}}
{{- define "seerr.configPersistenceName" -}}
{{- default (printf "%s-config" (include "seerr.fullname" .)) .Values.config.persistence.name }}
{{- end }}

View File

@@ -1,41 +0,0 @@
{{- if .Values.ingress.enabled -}}
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: {{ include "seerr.fullname" . }}
labels:
{{- include "seerr.labels" . | nindent 4 }}
{{- with .Values.ingress.annotations }}
annotations:
{{- toYaml . | nindent 4 }}
{{- end }}
spec:
{{- if .Values.ingress.ingressClassName }}
ingressClassName: {{ .Values.ingress.ingressClassName }}
{{- end }}
{{- if .Values.ingress.tls }}
tls:
{{- range .Values.ingress.tls }}
- hosts:
{{- range .hosts }}
- {{ . | quote }}
{{- end }}
secretName: {{ .secretName }}
{{- end }}
{{- end }}
rules:
{{- range .Values.ingress.hosts }}
- host: {{ .host | quote }}
http:
paths:
{{- range .paths }}
- path: {{ .path }}
pathType: {{ .pathType }}
backend:
service:
name: {{ include "seerr.fullname" $ }}
port:
number: {{ $.Values.service.port }}
{{- end }}
{{- end }}
{{- end }}

View File

@@ -1,24 +0,0 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: {{ include "seerr.configPersistenceName" . }}
labels:
{{- include "seerr.labels" . | nindent 4 }}
{{- with .Values.config.persistence.annotations }}
annotations:
{{- toYaml . | nindent 4 }}
{{- end }}
spec:
{{- with .Values.config.persistence.accessModes }}
accessModes:
{{- toYaml . | nindent 4 }}
{{- end }}
{{- if .Values.config.persistence.volumeName }}
volumeName: {{ .Values.config.persistence.volumeName }}
{{- end }}
{{- with .Values.config.persistence.storageClass }}
storageClassName: {{ if (eq "-" .) }}""{{ else }}{{ . }}{{ end }}
{{- end }}
resources:
requests:
storage: "{{ .Values.config.persistence.size }}"

View File

@@ -1,16 +0,0 @@
apiVersion: v1
kind: Service
metadata:
name: {{ include "seerr.fullname" . }}
labels:
{{- include "seerr.labels" . | nindent 4 }}
spec:
type: {{ .Values.service.type }}
ports:
- port: {{ .Values.service.port }}
targetPort: http
protocol: TCP
name: http
selector:
{{- include "seerr.selectorLabels" . | nindent 4 }}
ipFamilyPolicy: PreferDualStack

View File

@@ -1,13 +0,0 @@
{{- if .Values.serviceAccount.create -}}
apiVersion: v1
kind: ServiceAccount
metadata:
name: {{ include "seerr.serviceAccountName" . }}
labels:
{{- include "seerr.labels" . | nindent 4 }}
{{- with .Values.serviceAccount.annotations }}
annotations:
{{- toYaml . | nindent 4 }}
{{- end }}
automountServiceAccountToken: {{ .Values.serviceAccount.automount }}
{{- end }}

View File

@@ -1,121 +0,0 @@
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: {{ include "seerr.fullname" . }}
labels:
{{- include "seerr.labels" . | nindent 4 }}
spec:
serviceName: {{ include "seerr.fullname" . }}
selector:
matchLabels:
{{- include "seerr.selectorLabels" . | nindent 6 }}
template:
metadata:
{{- with .Values.podAnnotations }}
annotations:
{{- toYaml . | nindent 8 }}
{{- end }}
labels:
{{- include "seerr.labels" . | nindent 8 }}
{{- with .Values.podLabels }}
{{- toYaml . | nindent 8 }}
{{- end }}
spec:
{{- with .Values.imagePullSecrets }}
imagePullSecrets:
{{- toYaml . | nindent 8 }}
{{- end }}
serviceAccountName: {{ include "seerr.serviceAccountName" . }}
securityContext:
{{- toYaml .Values.podSecurityContext | nindent 8 }}
containers:
- name: {{ .Chart.Name }}
securityContext:
{{- toYaml .Values.securityContext | nindent 12 }}
{{- if .Values.image.sha }}
image: "{{ .Values.image.registry }}/{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}@sha256:{{ .Values.image.sha }}"
{{- else }}
image: "{{ .Values.image.registry }}/{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
{{- end }}
imagePullPolicy: {{ .Values.image.pullPolicy }}
ports:
- name: http
containerPort: 5055
protocol: TCP
livenessProbe:
httpGet:
path: /
port: http
{{- if .Values.probes.livenessProbe.initialDelaySeconds }}
initialDelaySeconds: {{ .Values.probes.livenessProbe.initialDelaySeconds }}
{{- end }}
{{- if .Values.probes.livenessProbe.periodSeconds }}
periodSeconds: {{ .Values.probes.livenessProbe.periodSeconds }}
{{- end }}
{{- if .Values.probes.livenessProbe.timeoutSeconds }}
timeoutSeconds: {{ .Values.probes.livenessProbe.timeoutSeconds }}
{{- end }}
{{- if .Values.probes.livenessProbe.successThreshold }}
successThreshold: {{ .Values.probes.livenessProbe.successThreshold }}
{{- end }}
{{- if .Values.probes.livenessProbe.failureThreshold }}
failureThreshold: {{ .Values.probes.livenessProbe.failureThreshold }}
{{- end }}
readinessProbe:
httpGet:
path: /
port: http
{{- if .Values.probes.readinessProbe.initialDelaySeconds }}
initialDelaySeconds: {{ .Values.probes.readinessProbe.initialDelaySeconds }}
{{- end }}
{{- if .Values.probes.readinessProbe.periodSeconds }}
periodSeconds: {{ .Values.probes.readinessProbe.periodSeconds }}
{{- end }}
{{- if .Values.probes.readinessProbe.timeoutSeconds }}
timeoutSeconds: {{ .Values.probes.readinessProbe.timeoutSeconds }}
{{- end }}
{{- if .Values.probes.readinessProbe.successThreshold }}
successThreshold: {{ .Values.probes.readinessProbe.successThreshold }}
{{- end }}
{{- if .Values.probes.readinessProbe.failureThreshold }}
failureThreshold: {{ .Values.probes.readinessProbe.failureThreshold }}
{{- end }}
{{- if .Values.probes.startupProbe }}
startupProbe:
{{- toYaml .Values.probes.startupProbe | nindent 12 }}
{{- end }}
resources:
{{- toYaml .Values.resources | nindent 12 }}
{{- with .Values.extraEnv }}
env:
{{- toYaml . | nindent 12 }}
{{- end }}
{{- with .Values.extraEnvFrom }}
envFrom:
{{- toYaml . | nindent 12 }}
{{- end }}
volumeMounts:
- name: config
mountPath: /app/config
{{- with .Values.volumeMounts }}
{{- toYaml . | nindent 12 }}
{{- end }}
volumes:
- name: config
persistentVolumeClaim:
claimName: {{ include "seerr.configPersistenceName" . }}
{{- with .Values.volumes }}
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.nodeSelector }}
nodeSelector:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.affinity }}
affinity:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.tolerations }}
tolerations:
{{- toYaml . | nindent 8 }}
{{- end }}

View File

@@ -1,15 +0,0 @@
apiVersion: v1
kind: Pod
metadata:
name: "{{ include "seerr.fullname" . }}-test-connection"
labels:
{{- include "seerr.labels" . | nindent 4 }}
annotations:
"helm.sh/hook": test
spec:
containers:
- name: wget
image: busybox
command: ['wget']
args: ['{{ include "seerr.fullname" . }}:{{ .Values.service.port }}']
restartPolicy: Never

View File

@@ -1,6 +1,6 @@
image:
registry: ghcr.io
repository: fallenbagel/jellyseerr
repository: seerr-team/seerr
pullPolicy: IfNotPresent
# -- Overrides the image tag whose default is the chart appVersion.
tag: ''
@@ -50,16 +50,22 @@ serviceAccount:
podAnnotations: {}
podLabels: {}
podSecurityContext: {}
# fsGroup: 2000
podSecurityContext:
fsGroup: 1000
fsGroupChangePolicy: OnRootMismatch
securityContext: {}
# capabilities:
# drop:
# - ALL
# readOnlyRootFilesystem: true
# runAsNonRoot: true
# runAsUser: 1000
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
readOnlyRootFilesystem: false
runAsNonRoot: true
privileged: false
runAsUser: 1000
runAsGroup: 1000
seccompProfile:
type: RuntimeDefault
service:
type: ClusterIP
@@ -128,3 +134,4 @@ nodeSelector: {}
tolerations: []
affinity: {}