--- apiVersion: apps/v1 kind: Deployment metadata: name: dispatcharr namespace: media labels: app: dispatcharr app.kubernetes.io/name: dispatcharr app.kubernetes.io/component: iptv-proxy vpn: "true" spec: replicas: 1 strategy: type: Recreate selector: matchLabels: app: dispatcharr template: metadata: labels: app: dispatcharr vpn: "true" spec: containers: # Gluetun VPN Sidecar - name: gluetun image: qmcgaw/gluetun:latest securityContext: capabilities: add: - NET_ADMIN env: - name: TZ valueFrom: configMapKeyRef: name: media-config key: TZ - name: WIREGUARD_PRIVATE_KEY valueFrom: secretKeyRef: name: mullvad-vpn key: WIREGUARD_PRIVATE_KEY - name: WIREGUARD_ADDRESSES valueFrom: secretKeyRef: name: mullvad-vpn key: WIREGUARD_ADDRESSES # Dispatcharr needs to serve streams to Jellyfin inside cluster - name: FIREWALL_OUTBOUND_SUBNETS value: "10.0.0.0/24,10.96.0.0/12" envFrom: - configMapRef: name: gluetun-config volumeMounts: - name: tun-device mountPath: /dev/net/tun - name: gluetun-data mountPath: /gluetun ports: - name: http containerPort: 9191 protocol: TCP - name: http-proxy containerPort: 8888 protocol: TCP resources: requests: memory: "128Mi" cpu: "50m" limits: memory: "512Mi" cpu: "500m" livenessProbe: exec: command: - /gluetun-entrypoint - healthcheck initialDelaySeconds: 30 periodSeconds: 30 timeoutSeconds: 10 readinessProbe: exec: command: - /gluetun-entrypoint - healthcheck initialDelaySeconds: 15 periodSeconds: 10 timeoutSeconds: 5 # Dispatcharr - name: dispatcharr image: ghcr.io/dispatcharr/dispatcharr:latest env: - name: DISPATCHARR_ENV value: "aio" - name: REDIS_HOST value: "localhost" - name: CELERY_BROKER_URL value: "redis://localhost:6379/0" - name: DISPATCHARR_LOG_LEVEL value: "info" - name: TZ valueFrom: configMapKeyRef: name: media-config key: TZ volumeMounts: - name: config mountPath: /data subPath: dispatcharr resources: requests: memory: "256Mi" cpu: "100m" limits: memory: "1Gi" cpu: "500m" livenessProbe: tcpSocket: port: 9191 initialDelaySeconds: 90 periodSeconds: 30 timeoutSeconds: 10 readinessProbe: tcpSocket: port: 9191 initialDelaySeconds: 60 periodSeconds: 10 timeoutSeconds: 5 volumes: - name: tun-device hostPath: path: /dev/net/tun type: CharDevice - name: gluetun-data emptyDir: {} - name: config persistentVolumeClaim: claimName: media-config --- apiVersion: v1 kind: Service metadata: name: dispatcharr namespace: media labels: app: dispatcharr spec: type: NodePort selector: app: dispatcharr ports: - name: http port: 9191 targetPort: 9191 nodePort: 30191 protocol: TCP