diff --git a/deployments/media/transmission/deployment.yaml b/deployments/media/transmission/deployment.yaml new file mode 100644 index 0000000..6ce7c0d --- /dev/null +++ b/deployments/media/transmission/deployment.yaml @@ -0,0 +1,113 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: transmission + namespace: media + labels: + app: transmission +spec: + replicas: 1 + selector: + matchLabels: + app: transmission + template: + metadata: + labels: + app: transmission + spec: + securityContext: + capabilities: + add: + - NET_ADMIN + containers: + - name: gluetun + image: qmcgaw/gluetun:latest + env: + - name: VPN_SERVICE_PROVIDER + value: protonvpn + - name: REGION + value: "New York" + - name: OPENVPN_USER + valueFrom: + secretKeyRef: + name: transmission-vpn-secret + key: VPN_USERNAME + - name: OPENVPN_PASSWORD + valueFrom: + secretKeyRef: + name: transmission-vpn-secret + key: VPN_PASSWORD + - name: WIREGUARD_PRIVATE_KEY + valueFrom: + secretKeyRef: + name: transmission-vpn-secret + key: WIREGUARD_PRIVATE_KEY + - name: FIREWALL_OUTBOUND_SUBNET + value: "" + - name: UPNP_ENABLED + value: "true" + - name: DOT + value: "true" + volumeMounts: + - name: config + mountPath: /gluetun + - name: transmission + image: lscr.io/linuxserver/transmission:latest + env: + - name: PUID + value: "1000" + - name: PGID + value: "1000" + - name: TZ + value: "America/New_York" + - name: USER + valueFrom: + secretKeyRef: + name: transmission-vpn-secret + key: TRANS_USERNAME + - name: PASS + valueFrom: + secretKeyRef: + name: transmission-vpn-secret + key: TRANS_PASSWORD + - name: WHITELIST + value: "*" + - name: HOST_WHITELIST + value: "transmission.khalis.corp" + - name: PEER_PORT + value: "51413" + - name: NVM_CONFIGDIR + value: "/config" + - name: NVM_DATAROOT + value: "/downloads" + ports: + - containerPort: 9091 + name: http + - containerPort: 51413 + protocol: TCP + name: peer-tcp + - containerPort: 51413 + protocol: UDP + name: peer-udp + volumeMounts: + - name: config + mountPath: /config + - name: media + mountPath: /downloads + - name: downloads + mountPath: /downloads + - name: watch + mountPath: /watch + volumes: + - name: config + persistentVolumeClaim: + claimName: transmission-config + - name: media + persistentVolumeClaim: + claimName: media-data + - name: downloads + persistentVolumeClaim: + claimName: media-data + - name: watch + persistentVolumeClaim: + claimName: media-data diff --git a/deployments/media/transmission/ingress.yaml b/deployments/media/transmission/ingress.yaml new file mode 100644 index 0000000..b28e756 --- /dev/null +++ b/deployments/media/transmission/ingress.yaml @@ -0,0 +1,19 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: transmission + namespace: media + annotations: + cert-manager.io/cluster-issuer: letsencrypt-prod +spec: + rules: + - host: transmission.khalis.corp + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: transmission + port: + number: 9091 diff --git a/deployments/media/transmission/pvc.yaml b/deployments/media/transmission/pvc.yaml new file mode 100644 index 0000000..048a6d6 --- /dev/null +++ b/deployments/media/transmission/pvc.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: transmission-config + namespace: media +spec: + accessModes: + - ReadWriteOnce + storageClassName: longhorn + resources: + requests: + storage: 10Gi diff --git a/deployments/media/transmission/service.yaml b/deployments/media/transmission/service.yaml new file mode 100644 index 0000000..4afc836 --- /dev/null +++ b/deployments/media/transmission/service.yaml @@ -0,0 +1,22 @@ +apiVersion: v1 +kind: Service +metadata: + name: transmission + namespace: media +spec: + selector: + app: transmission + ports: + - protocol: TCP + port: 9091 + targetPort: 9091 + name: http + - protocol: TCP + port: 51413 + targetPort: 51413 + name: peer-tcp + - protocol: UDP + port: 51413 + targetPort: 51413 + name: peer-udp + type: ClusterIP