apiVersion: apps/v1
kind: Deployment
metadata:
  name: qbittorrent
  labels:
    app: qbittorrent
spec:
  replicas: 1
  selector:
    matchLabels:
      app: qbittorrent
  template:
    metadata:
      labels:
        app: qbittorrent
    spec:
      initContainers:
      containers:
      - image: qbittorrentofficial/qbittorrent-nox:latest
        name: qbittorrent
        volumeMounts:
        - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
          name: kube-api-access-t4rzn
          readOnly: true
        - mountPath: /config
          name: config
        - mountPath: /downloads
          name: downloads
        env:
        - name: QBT_EULA
          value: "accept"
        - name: QBT_WEBUI_PORT
          value: "8080"
        - name: QBT_CONFIG_PATH
          value: "/config"
        - name: QBT_DOWNLOADS
          value: "/downloads"
      preemptionPolicy: PreemptLowerPriority
      priority: 0
      serviceAccountName: tailscale
      tolerations:
      - effect: NoExecute
        key: node.kubernetes.io/not-ready
        operator: Exists
        tolerationSeconds: 300
      - effect: NoExecute
        key: node.kubernetes.io/unreachable
        operator: Exists
        tolerationSeconds: 300
      volumes:
      - name: downloads
        persistentVolumeClaim:
          claimName: smb-usenet
      - name: config
        persistentVolumeClaim:
          claimName: q-config
      - name: kube-api-access-t4rzn
        projected:
          sources:
          - serviceAccountToken:
              expirationSeconds: 3607
              path: token
          - configMap:
              items:
              - key: ca.crt
                path: ca.crt
              name: kube-root-ca.crt
          - downwardAPI:
              items:
              - fieldRef:
                  fieldPath: metadata.namespace
                path: namespace