transmission

This commit is contained in:
Philip Haupt
2025-05-28 20:28:39 +02:00
parent b90d31b9cf
commit c7ceddb1a4
11 changed files with 312 additions and 6 deletions

View File

@@ -0,0 +1,7 @@
---
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- main.yaml
- pv.yaml

149
transmission/main.yaml Normal file
View File

@@ -0,0 +1,149 @@
apiVersion: v1
kind: Service
metadata:
labels:
app.kubernetes.io/instance: transmission
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: transmission
app.kubernetes.io/version: v3.00
helm.sh/chart: transmission-8.4.3
name: transmission
spec:
ports:
- name: http
port: 9091
protocol: TCP
targetPort: http
selector:
app.kubernetes.io/instance: transmission
app.kubernetes.io/name: transmission
type: ClusterIP
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
labels:
app.kubernetes.io/instance: transmission
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: transmission
app.kubernetes.io/version: v3.00
helm.sh/chart: transmission-8.4.3
name: transmission-config
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
storageClassName: openebs-3-replicas
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
labels:
app.kubernetes.io/instance: transmission
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: transmission
app.kubernetes.io/version: v3.00
helm.sh/chart: transmission-8.4.3
name: transmission-downloads
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 1Gi
storageClassName: nfs-storage
volumeName: nfs-media-transmission
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app.kubernetes.io/instance: transmission
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: transmission
app.kubernetes.io/version: v3.00
helm.sh/chart: transmission-8.4.3
name: transmission
spec:
replicas: 1
revisionHistoryLimit: 3
selector:
matchLabels:
app.kubernetes.io/instance: transmission
app.kubernetes.io/name: transmission
strategy:
type: Recreate
template:
metadata:
labels:
app.kubernetes.io/instance: transmission
app.kubernetes.io/name: transmission
spec:
automountServiceAccountToken: true
containers:
- env:
- name: PGID
value: "1000"
- name: PUID
value: "1000"
- name: TRANSMISSION_DOWNLOAD_DIR
value: /downloads/complete
- name: TRANSMISSION_INCOMPLETE_DIR
value: /downloads/incomplete
- name: TRANSMISSION_INCOMPLETE_DIR_ENABLED
value: "false"
- name: TRANSMISSION_RPC_PASSWORD
value: CHANGEME
- name: TRANSMISSION_WATCH_DIR
value: /watch
- name: TRANSMISSION_WATCH_DIR_ENABLED
value: "false"
- name: TRANSMISSION_WEB_HOME
value: /web
- name: TZ
value: CET
image: lscr.io/linuxserver/transmission:4.0.6
imagePullPolicy: IfNotPresent
livenessProbe:
failureThreshold: 3
initialDelaySeconds: 0
periodSeconds: 10
tcpSocket:
port: 9091
timeoutSeconds: 30
name: transmission
ports:
- containerPort: 9091
name: http
protocol: TCP
readinessProbe:
failureThreshold: 3
initialDelaySeconds: 0
periodSeconds: 10
tcpSocket:
port: 9091
timeoutSeconds: 30
startupProbe:
failureThreshold: 30
initialDelaySeconds: 0
periodSeconds: 5
tcpSocket:
port: 9091
timeoutSeconds: 1
volumeMounts:
- mountPath: /config
name: config
- mountPath: /downloads
name: downloads
dnsPolicy: ClusterFirst
enableServiceLinks: true
serviceAccountName: default
volumes:
- name: config
persistentVolumeClaim:
claimName: transmission-config
- name: downloads
persistentVolumeClaim:
claimName: transmission-downloads

17
transmission/pv.yaml Normal file
View File

@@ -0,0 +1,17 @@
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: nfs-media-transmission
spec:
storageClassName: nfs-storage
capacity:
storage: 1Gi # Beachte: NFS ist dynamisch, die Größe ist nur ein Label
accessModes:
- ReadWriteMany # Mehrere Pods können es gleichzeitig nutzen
persistentVolumeReclaimPolicy: Retain
nfs:
path: /mnt/volume1/media # Der Pfad der NFS-Freigabe auf der NAS
server: 192.168.10.1 # Die IP-Adresse deiner NAS
mountOptions:
- nfsvers=4 # Passe ggf. an (nfsvers=3 falls nötig)

View File

@@ -0,0 +1,12 @@
---
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
helmCharts:
- name: transmission
repo: https://k8s-at-home.com/charts/
version: 8.4.3
releaseName: transmission
includeCRDs: true
namespace: transmission
valuesFile: values.yaml

View File

@@ -0,0 +1,121 @@
#
# IMPORTANT NOTE
#
# This chart inherits from our common library chart. You can check the default values/options here:
# https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common/values.yaml
#
# -- Use an initContainer to download the Flood web ui
# Set UI with env `TRANSMISSION_WEB_HOME` set to `/config/flood-for-transmission/`
# @default -- See values.yaml
initContainers: {}
# custom-webui:
# name: custom-webui
# image: curlimages/curl:7.76.1
# command:
# - "/bin/sh"
# - "-c"
# - "curl -o- -sL https://github.com/johman10/flood-for-transmission/releases/download/latest/flood-for-transmission.tar.gz | tar xzf - -C /config"
# volumeMounts:
# - name: config
# mountPath: /config
# securityContext:
# runAsUser: 568
# runAsGroup: 568
image:
# -- image repository
repository: lscr.io/linuxserver/transmission
# -- image tag
tag: 4.0.6
# -- image pull policy
pullPolicy: IfNotPresent
# -- environment variables. See [image docs](https://github.com/k8s-at-home/container-images/tree/main/apps/transmission/settings.json.tmpl) for more details.
# @default -- See below
env:
# -- Set the container timezone
TZ: CET
# -- Path in container where the Web UI is located
TRANSMISSION_WEB_HOME: /web
# -- Password to access the Web UI
TRANSMISSION_RPC_PASSWORD: CHANGEME
# -- Torrent download directory
TRANSMISSION_DOWNLOAD_DIR: /downloads/complete
# -- Enable incomplete download directory
TRANSMISSION_INCOMPLETE_DIR_ENABLED: false
# -- Incomplete download directory
TRANSMISSION_INCOMPLETE_DIR: /downloads/incomplete
# -- Enable watch directory
TRANSMISSION_WATCH_DIR_ENABLED: false
# -- Watch directory
TRANSMISSION_WATCH_DIR: /watch
PUID: 1000
PGID: 1000
# -- Configures service settings for the chart.
# @default -- See values.yaml
service:
main:
ports:
http:
port: 9091
utptcp:
enabled: false
type: ClusterIP
ports:
utptcp:
enabled: true
port: 51413
protocol: TCP
targetPort: 51413
utpudp:
enabled: false
type: ClusterIP
ports:
utpudp:
enabled: true
port: 51413
protocol: UDP
targetPort: 51413
# -- Configures the probes for the main Pod.
# @default -- See values.yaml
## transmission runs the GUI and I/O on the same thread.
## Heavy bandwith usage may stall the UI and result in restarts.
probes:
liveness:
spec:
timeoutSeconds: 30
readiness:
spec:
timeoutSeconds: 30
ingress:
# -- Enable and configure ingress settings for the chart under this key.
# @default -- See values.yaml
main:
enabled: false
# -- Configure persistence settings for the chart under this key.
# @default -- See values.yaml
persistence:
config:
enabled: true
mountPath: /config
storageClass: openebs-3-replicas
accessMode: ReadWriteOnce
size: 5Gi
downloads:
enabled: true
mountPath: /downloads
storageClass: nfs-storage
volumeName: nfs-media-transmission
accessMode: ReadWriteMany
size: 1Gi
watch:
enabled: false
mountPath: /watch