k3s-cluster/cluster/apps/download/qbittorrent/helm-release.yaml

160 lines
4.1 KiB
YAML

# yaml-language-server: $schema=https://raw.githubusercontent.com/bjw-s/helm-charts/main/charts/other/app-template/schemas/helmrelease-helm-v2beta2.schema.json
apiVersion: helm.toolkit.fluxcd.io/v2beta2
kind: HelmRelease
metadata:
name: qbittorrent
namespace: download
spec:
interval: 5m
chart:
spec:
chart: app-template
version: 3.1.0
sourceRef:
kind: HelmRepository
name: bjws-charts
namespace: flux-system
values:
controllers:
main:
pod:
securityContext:
fsGroup: 10000
fsGroupChangePolicy: "OnRootMismatch"
containers:
app:
image:
repository: ghcr.io/onedr0p/qbittorrent
tag: 4.5.2
env:
QBITTORRENT__PORT: 8080
securityContext:
runAsGroup: 10000
runAsUser: 10000
fsGroup: 10000
fsGroupChangePolicy: "OnRootMismatch"
gluetun:
image:
repository: qmcgaw/gluetun
tag: latest@sha256:f501359827a9c8523d78add8ce68791a31634c146c8eef0fd8700a68b8160cfd
env:
FIREWALL_INPUT_PORTS: "8080,17871" # 17871 is the prometheus exporter
HEALTH_VPN_DURATION_INITIAL: "120s"
envFrom:
- secretRef:
name: qbittorrent-secrets
securityContext:
capabilities:
add:
- NET_ADMIN
port-manager:
image:
repository: git.seanomik.net/seanomik/gluetun-qbit-port-updater
tag: v0.2.0
pullPolicy: Always
env:
PORT_UPD_QBITTORRENT_HOST: localhost
PORT_UPD_QBITTORRENT_PORT: "8080"
# safe to have in plain text since qbittorrent is exposed through authentik.
PORT_UPD_QBITTORRENT_LOGIN: &qbitLogin admin
PORT_UPD_QBITTORRENT_PASSWORD: &qbitPass adminadmin
PORT_UPD_PORT_FILE: /tmp/gluetun/forwarded_port
metrics:
image:
repository: caseyscarborough/qbittorrent-exporter
tag: v1.3.5
env:
QBITTORRENT_BASE_URL: "http://localhost:8080"
# safe to have in plain text since qbittorrent is exposed through authentik.
QBITTORRENT_LOGIN: *qbitLogin
QBITTORRENT_PASSWORD: *qbitPass
service:
app:
controller: main
ports:
http:
port: 8080
metrics:
port: 17871
protocol: HTTP
serviceMonitor:
app:
enabled: true
serviceName: qbittorrent
labels:
release: kube-prometheus-stack
endpoints:
- port: metrics
scheme: http
path: /metrics
interval: 3m
scrapeTimeout: 1m
ingress:
main:
annotations:
cert-manager.io/cluster-issuer: letsencrypt-production
traefik.ingress.kubernetes.io/router.entrypoints: websecure
traefik.ingress.kubernetes.io/router.middlewares: traefik-authentik@kubernetescrd
hosts:
- host: &host "qbit.${SECRET_NEW_DOMAIN}"
paths:
- path: /
service:
identifier: app
port: http
tls:
- hosts:
- *host
persistence:
storage:
type: hostPath
hostPath: /mnt/MainPool/Media/Torrents
globalMounts:
- path: /storage/Torrents
config:
type: hostPath
hostPath: /mnt/MainPool/Kubernetes/qbittorrent
advancedMounts:
main: # controller name
app: # container name
- path: /config
cookies:
type: secret
name: cookie-secret
globalMounts:
- path: /etc/tokens
gluetun-tmp:
type: emptyDir
advancedMounts:
main: # controller name
gluetun: # container name
- path: /tmp/gluetun/
port-manager:
- path: /tmp/gluetun/
readOnly: true