apiVersion: v1 kind: ConfigMap metadata: name: glutun-update-script namespace: qbittorrent labels: app.kubernetes.io/name: glutun-update-script app.kubernetes.io/instance: qbittorrent app.kubernetes.io/part-of: qbittorrent data: update.sh: | API_ENDPOINT="http://localhost:8080/api/v2"; MAX_RETRIES=5 SUCCESS=false echo " " echo ">> Running Update Port Script ..." echo " " echo ">> Verifying required commands ..." echo " " for i in $(seq 1 "$MAX_RETRIES"); do if apk update 2>&1 >/dev/null; then echo ">> Attempt $i: Repositories are reachable" SUCCESS=true break else echo ">> Attempt $i: Connection failed, retrying in 5 seconds ..." sleep 5 fi done if [ "$SUCCESS" = false ]; then echo ">> ERROR: Could not connect to apk repositories after $MAX_RETRIES attempts, exiting ..." exit 1 fi if ! command -v curl 2>&1 >/dev/null; then echo ">> Command curl could not be found, installing"; apk add --no-cache -q curl; if [ $? -eq 0 ]; then echo ">> Installation successful" else echo ">> Installation failed with exit code $?" exit 1 fi fi; if ! command -v jq 2>&1 >/dev/null; then echo " " echo ">> Command jq could not be found, installing"; apk add --no-cache -q jq; if [ $? -eq 0 ]; then echo " " echo ">> Installation successful" else echo " " echo ">> Installation failed with exit code $?" exit 1 fi fi; # echo " "; # echo ">> Authentication ..."; # curl -i --silent --header 'Referer: http://localhost:8080' --output response_body_auth.json --data 'username=admin&password=adminadmin' "${API_ENDPOINT}/auth/login" -c cookie; echo " "; echo ">> Test access ..."; HTTP_STATUS=$(curl -i -X GET --silent --write-out '%{http_code}' --output response_body_test.json -b cookie -c cookie "${API_ENDPOINT}/app/version"); echo ">> HTTP Status Code: $HTTP_STATUS" VERSION=$(tail -n 1 response_body_test.json) if [ "$HTTP_STATUS" == "200" ]; then echo ">> Access confirmed, qBittorrent version: ${VERSION}" HTTP_STATUS="" else echo ">> ERROR: HTTP status code: $HTTP_STATUS" exit 1 fi PAYLOAD=$( jq -n \ '{random_port: true}' ); echo " "; echo ">> Setting port to random ..."; HTTP_STATUS=$(curl -i -X POST --silent -b cookie -c cookie --write-out '%{http_code}' --output response_body_random.json --data "json=$PAYLOAD" "${API_ENDPOINT}/app/setPreferences"); if [ "$HTTP_STATUS" == "200" ]; then echo ">> Random port set" HTTP_STATUS="" else echo ">> ERROR: HTTP status code: $HTTP_STATUS" exit 1 fi echo " "; echo ">> Sleeping for changes to take effect"; sleep 5; PAYLOAD=$( jq -n \ "{listen_port: ${1}}" ); echo " "; echo ">> Updating port with ${1} ..."; HTTP_STATUS=$(curl -i -X POST --silent -b cookie -c cookie --write-out '%{http_code}' --output response_body_update.json --data "json=$PAYLOAD" "${API_ENDPOINT}/app/setPreferences"); if [ "$HTTP_STATUS" == "200" ]; then echo ">> Port set" HTTP_STATUS="" else echo ">> ERROR: HTTP status code: $HTTP_STATUS" exit 1 fi echo " "; echo ">> Sleeping for changes to take effect"; sleep 5; HTTP_STATUS=$(curl -i -X GET --silent -b cookie -c cookie --write-out '%{http_code}' --output response_body_check.json "${API_ENDPOINT}/app/preferences"); LISTEN_PORT=$(tail -n 1 response_body_check.json | jq -r .listen_port) echo " "; echo ">> qBittorrent's post is now: $LISTEN_PORT"; if [[ "$HTTP_STATUS" == "200" && "$LISTEN_PORT" == "${1}" ]]; then echo ">> Port updated successfully!" else echo ">> ERROR: HTTP status code: $HTTP_STATUS" exit 1 fi --- apiVersion: v1 kind: ConfigMap metadata: name: qbit-manage-config namespace: qbittorrent labels: app.kubernetes.io/name: qbit-manage-config app.kubernetes.io/instance: qbittorrent app.kubernetes.io/part-of: qbittorrent data: config.yml: | # Please refer to the link below for more details on how to set up the configuration file # https://github.com/StuffAnThings/qbit_manage/wiki/Config-Setup commands: dry_run: false recheck: true cat_update: true tag_update: true rem_unregistered: true tag_tracker_error: true rem_orphaned: true tag_nohardlinks: false share_limits: true skip_qb_version_check: true skip_cleanup: false qbt: host: qbittorrent.qbittorrent:8080 user: pass: settings: force_auto_tmm: true tracker_error_tag: tracker-error share_limits_tag: share-limit share_limits_min_seeding_time_tag: seed-time-not-reached cat_filter_completed: false share_limits_filter_completed: false rem_unregistered_filter_completed: false cat_update_all: true disable_qbt_default_share_limits: true tag_stalled_torrents: true nohardlinks_tag: no-hardlinks stalled_tag: stalled share_limits_min_num_seeds_tag: min-seeds-not-reached share_limits_last_active_tag: last-active-not-reached tag_nohardlinks_filter_completed: true force_auto_tmm_ignore_tags: [] rem_unregistered_ignore_list: [] directory: root_dir: /mnt/store/Torrent/ recycle_bin: /qbittorrent/Trash torrents_dir: /qbittorrent/qBittorrent/BT_backup orphaned_dir: /qbittorrent/Orphaned cat: -< COMPLETED: /mnt/store/Torrent/FINISHED/COMPLETED -< IMPORT: /mnt/store/Torrent/FINISHED/IMPORT -< SAVE: /mnt/store/Torrent/FINISHED/SAVE -< ZIM: /mnt/store/Kiwix lidarr: /mnt/store/Torrent/FINISHED/LIDARR prowlarr: /mnt/store/Torrent/FINISHED/SAVE radarr-4k: /mnt/store/Torrent/FINISHED/RADARR4K radarr-anime: /mnt/store/Torrent/FINISHED/RADARRANIME radarr-standup: /mnt/store/Torrent/FINISHED/RADARRSTANDUP radarr: /mnt/store/Torrent/FINISHED/RADARR shelfmark-audiobooks: /mnt/store/Torrent/FINISHED/SHELFMARKAUDIOBOOKS shelfmark-books: /mnt/store/Torrent/FINISHED/SHELFMARKBOOKS sonarr-4k: /mnt/store/Torrent/FINISHED/SONARR4K sonarr-anime: /mnt/store/Torrent/FINISHED/SONARRANIME sonarr: /mnt/store/Torrent/FINISHED/SONARR tracker: alpharatio.cc: tag: AlphaRatio avistaz: tag: Avistaz cathode-ray.tube: tag: CathodeRayTube mvgroup.org: tag: MVGroup torrentleech|tleechreload: tag: TorrentLeech archive.org: tag: InternetArchive openzim.org: tag: Zim coppersurfer.tk|arenabg.com|explodie.org|tfile.co|1337x.org|zer0day.to|i2p.rocks|ccc.de|nwps.ws|opentrackr.org: tag: Other share_limits: private: priority: 1 include_any_tags: - AlphaRatio - TorrentLeech categories: - -< COMPLETED max_ratio: 2.0 min_seeding_time: 14d max_seeding_time: 30d min_num_seeds: 2 last_active: 3d cleanup: true # save: # priority: 2 # categories: # - -< SAVE # max_ratio: 2.0 # min_seeding_time: 14d # max_seeding_time: 30d # min_num_seeds: 2 # last_active: 30d # cleanup: false # zim: # priority: 3 # categories: # - -< ZIM # max_ratio: 2.0 # min_seeding_time: 14d # max_seeding_time: 30d # min_num_seeds: 2 # last_active: 30d # cleanup: false default: priority: 999 include_any_tags: - Other categories: - -< COMPLETED max_seeding_time: 3d limit_upload_speed: 100 cleanup: true recyclebin: enabled: true empty_after_x_days: 7 save_torrents: true split_by_category: true orphaned: empty_after_x_days: 30 exclude_patterns: - /mnt/store/Torrent/QBITTORRENT/* - /mnt/store/Torrent/TORRENT/* - /mnt/store/Torrent/DOWNLOADING/* - '**/.DS_Store' - '**/Thumbs.db' - '**/@eaDir' - '**/*.!qB' - '**/*_unpackerred' max_orphaned_files_to_delete: 50 # apprise: # api_url: http://localhost:8000/notify # notify_url: "" # # webhooks: # error: apprise # run_start: apprise # run_end: apprise # function: # rem_orphaned: apprise # cleanup_dirs: apprise # tag_tracker_error: # share_limits: --- apiVersion: apps/v1 kind: Deployment metadata: name: qbittorrent-main labels: app.kubernetes.io/controller: main app.kubernetes.io/instance: qbittorrent app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: qbittorrent helm.sh/chart: qbittorrent-4.6.2 namespace: qbittorrent spec: revisionHistoryLimit: 3 replicas: 1 strategy: type: Recreate selector: matchLabels: app.kubernetes.io/controller: main app.kubernetes.io/name: qbittorrent app.kubernetes.io/instance: qbittorrent template: metadata: labels: app.kubernetes.io/controller: main app.kubernetes.io/instance: qbittorrent app.kubernetes.io/name: qbittorrent spec: enableServiceLinks: false serviceAccountName: default automountServiceAccountToken: true hostIPC: false hostNetwork: false hostPID: false dnsPolicy: ClusterFirst initContainers: - args: - -ec - | sysctl -w net.ipv4.ip_forward=1; sysctl -w net.ipv6.conf.all.disable_ipv6=1 command: - /bin/sh image: busybox:1.37.0 imagePullPolicy: IfNotPresent name: init-sysctl resources: requests: cpu: 10m memory: 128Mi securityContext: privileged: true containers: - env: - name: QBITTORRENT_HOST value: localhost - name: QBITTORRENT_PORT value: "8080" - name: EXPORTER_PORT value: "9022" - name: EXPORTER_LOG_LEVEL value: INFO image: esanchezm/prometheus-qbittorrent-exporter:v1.6.0 imagePullPolicy: IfNotPresent name: exporter resources: requests: cpu: 10m memory: 64Mi - env: - name: VPN_SERVICE_PROVIDER value: protonvpn - name: VPN_TYPE value: wireguard - name: WIREGUARD_PRIVATE_KEY valueFrom: secretKeyRef: key: private-key name: qbittorrent-wireguard-conf - name: UPDATER_PROTONVPN_EMAIL valueFrom: secretKeyRef: key: proton-email name: qbittorrent-wireguard-conf - name: UPDATER_PROTONVPN_PASSWORD valueFrom: secretKeyRef: key: proton-password name: qbittorrent-wireguard-conf - name: VPN_PORT_FORWARDING value: "on" - name: VPN_PORT_FORWARDING_UP_COMMAND value: /bin/sh -c "/gluetun/update.sh {{PORTS}}" - name: PORT_FORWARD_ONLY value: "on" - name: FIREWALL_OUTBOUND_SUBNETS value: 192.168.1.0/24,10.244.0.0/16 - name: FIREWALL_INPUT_PORTS value: 8080,9022 - name: DNS_UPSTREAM_RESOLVER_TYPE value: dot - name: HTTPPROXY value: "off" - name: SHADOWSOCKS value: "off" image: ghcr.io/qdm12/gluetun:v3.41.1@sha256:1a5bf4b4820a879cdf8d93d7ef0d2d963af56670c9ebff8981860b6804ebc8ab imagePullPolicy: IfNotPresent lifecycle: postStart: exec: command: - /bin/sh - -c - (ip rule del table 51820; ip -6 rule del table 51820) || true livenessProbe: exec: command: - /gluetun-entrypoint - healthcheck failureThreshold: 5 initialDelaySeconds: 30 periodSeconds: 30 successThreshold: 1 timeoutSeconds: 15 name: gluetun resources: limits: devic.es/tun: "1" requests: cpu: 10m devic.es/tun: "1" memory: 64Mi securityContext: capabilities: add: - NET_ADMIN - SYS_MODULE privileged: true volumeMounts: - mountPath: /gluetun/update.sh name: update-script subPath: update.sh - env: - name: TZ value: US/Central - name: PUID value: "1000" - name: PGID value: "1000" - name: UMASK_SET value: "002" - name: WEBUI_PORT value: "8080" image: ghcr.io/linuxserver/qbittorrent:5.1.4@sha256:6a7ffbfff04dd109bff37c474bfee00aa08dea5edb78c670439be3ed242b70fa imagePullPolicy: IfNotPresent name: qbittorrent resources: requests: cpu: 500m memory: 1Gi volumeMounts: - mountPath: /config/qBittorrent name: config-data - mountPath: /mnt/store name: storage volumes: - name: config-data persistentVolumeClaim: claimName: qbittorrent-config-data - name: storage persistentVolumeClaim: claimName: qbittorrent-nfs-storage - configMap: defaultMode: 493 name: glutun-update-script name: update-script --- apiVersion: apps/v1 kind: Deployment metadata: name: qbittorrent-qbit-manage labels: app.kubernetes.io/controller: qbit-manage app.kubernetes.io/instance: qbittorrent app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: qbittorrent helm.sh/chart: qbittorrent-4.6.2 annotations: reloader.stakater.com/auto: "true" namespace: qbittorrent spec: revisionHistoryLimit: 3 replicas: 1 strategy: type: Recreate selector: matchLabels: app.kubernetes.io/controller: qbit-manage app.kubernetes.io/name: qbittorrent app.kubernetes.io/instance: qbittorrent template: metadata: labels: app.kubernetes.io/controller: qbit-manage app.kubernetes.io/instance: qbittorrent app.kubernetes.io/name: qbittorrent spec: enableServiceLinks: false serviceAccountName: default automountServiceAccountToken: true hostIPC: false hostNetwork: false hostPID: false dnsPolicy: ClusterFirst initContainers: - command: - /bin/sh - -ec - | cp /config/config.yml /app/config/config.yml image: busybox:1.37.0 imagePullPolicy: IfNotPresent name: init-copy-config resources: requests: cpu: 10m memory: 128Mi volumeMounts: - mountPath: /config/config.yml mountPropagation: None name: qbit-manage-config readOnly: true subPath: config.yml - mountPath: /app/config name: qbit-manage-config-data containers: - env: - name: TZ value: US/Central - name: PGID value: "1000" - name: PUID value: "1000" - name: APPRISE_STORAGE_MODE value: memory - name: APPRISE_STATEFUL_MODE value: disabled - name: APPRISE_WORKER_COUNT value: "1" - name: APPRISE_STATELESS_URLS valueFrom: secretKeyRef: key: ntfy-url name: qbittorrent-qbit-manage-config image: caronc/apprise:v1.3.2 imagePullPolicy: IfNotPresent name: apprise-api resources: requests: cpu: 10m memory: 128Mi - env: - name: TZ value: US/Central - name: QBT_SCHEDULE value: 0 * * * * - name: QBT_STARTUP_DELAY value: "360" - name: QBT_CONFIG_DIR value: /app/config/ - name: QBT_LOGFILE value: /app/var/activity.log - name: QBT_LOG_LEVEL value: INFO image: ghcr.io/stuffanthings/qbit_manage:v4.6.5 imagePullPolicy: IfNotPresent name: qbit-manage resources: requests: cpu: 10m memory: 64Mi volumeMounts: - mountPath: /qbittorrent/qBittorrent name: config-data - mountPath: /config/config.yml mountPropagation: None name: qbit-manage-config readOnly: true subPath: config.yml - mountPath: /app/config name: qbit-manage-config-data - mountPath: /app/var name: qbit-manage-config-var - mountPath: /mnt/store name: storage volumes: - name: config-data persistentVolumeClaim: claimName: qbittorrent-config-data - configMap: name: qbit-manage-config name: qbit-manage-config - name: qbit-manage-config-data persistentVolumeClaim: claimName: qbittorrent-qbit-manage-config-data - emptyDir: {} name: qbit-manage-config-var - name: storage persistentVolumeClaim: claimName: qbittorrent-nfs-storage --- apiVersion: apps/v1 kind: Deployment metadata: name: qbittorrent-qui labels: app.kubernetes.io/controller: qui app.kubernetes.io/instance: qbittorrent app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: qbittorrent helm.sh/chart: qbittorrent-4.6.2 namespace: qbittorrent spec: revisionHistoryLimit: 3 replicas: 1 strategy: type: Recreate selector: matchLabels: app.kubernetes.io/controller: qui app.kubernetes.io/name: qbittorrent app.kubernetes.io/instance: qbittorrent template: metadata: labels: app.kubernetes.io/controller: qui app.kubernetes.io/instance: qbittorrent app.kubernetes.io/name: qbittorrent spec: enableServiceLinks: false serviceAccountName: default automountServiceAccountToken: true hostIPC: false hostNetwork: false hostPID: false dnsPolicy: ClusterFirst containers: - env: - name: QUI__METRICS_ENABLED value: "true" - name: QUI__METRICS_HOST value: 0.0.0.0 - name: QUI__METRICS_PORT value: "9074" - name: QUI__OIDC_ENABLED value: "true" - name: QUI__OIDC_ISSUER value: https://auth.alexlebens.dev/application/o/qui/ - name: QUI__OIDC_CLIENT_ID valueFrom: secretKeyRef: key: client name: qui-oidc-secret - name: QUI__OIDC_CLIENT_SECRET valueFrom: secretKeyRef: key: secret name: qui-oidc-secret - name: QUI__OIDC_REDIRECT_URL value: https://qui.alexlebens.net/api/auth/oidc/callback - name: QUI__OIDC_DISABLE_BUILT_IN_LOGIN value: "false" image: ghcr.io/autobrr/qui:v1.14.1 imagePullPolicy: IfNotPresent name: qui resources: requests: cpu: 10m memory: 128Mi volumeMounts: - mountPath: /config name: qui-config-data volumes: - name: qui-config-data persistentVolumeClaim: claimName: qbittorrent-qui-config-data --- apiVersion: external-secrets.io/v1 kind: ExternalSecret metadata: name: qbittorrent-config-data-backup-secret-external namespace: qbittorrent labels: helm.sh/chart: volsync-target-config-0.8.0 app.kubernetes.io/instance: qbittorrent app.kubernetes.io/part-of: qbittorrent app.kubernetes.io/version: "0.8.0" app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: qbittorrent-config-data-backup-secret-external spec: secretStoreRef: kind: ClusterSecretStore name: vault target: template: mergePolicy: Merge engineVersion: v2 data: RESTIC_REPOSITORY: "{{ .BUCKET_ENDPOINT }}/qbittorrent/qbittorrent-config-data" data: - secretKey: BUCKET_ENDPOINT remoteRef: conversionStrategy: Default decodingStrategy: None key: /volsync/restic/digital-ocean metadataPolicy: None property: BUCKET_ENDPOINT - secretKey: RESTIC_PASSWORD remoteRef: conversionStrategy: Default decodingStrategy: None key: /volsync/restic/digital-ocean metadataPolicy: None property: RESTIC_PASSWORD - secretKey: AWS_DEFAULT_REGION remoteRef: conversionStrategy: Default decodingStrategy: None key: /digital-ocean/home-infra/volsync-backups metadataPolicy: None property: AWS_DEFAULT_REGION - secretKey: AWS_ACCESS_KEY_ID remoteRef: conversionStrategy: Default decodingStrategy: None key: /digital-ocean/home-infra/volsync-backups metadataPolicy: None property: AWS_ACCESS_KEY_ID - secretKey: AWS_SECRET_ACCESS_KEY remoteRef: conversionStrategy: Default decodingStrategy: None key: /digital-ocean/home-infra/volsync-backups metadataPolicy: None property: AWS_SECRET_ACCESS_KEY --- apiVersion: external-secrets.io/v1 kind: ExternalSecret metadata: name: qbittorrent-config-data-backup-secret-local namespace: qbittorrent labels: helm.sh/chart: volsync-target-config-0.8.0 app.kubernetes.io/instance: qbittorrent app.kubernetes.io/part-of: qbittorrent app.kubernetes.io/version: "0.8.0" app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: qbittorrent-config-data-backup-secret-local spec: secretStoreRef: kind: ClusterSecretStore name: vault target: template: mergePolicy: Merge engineVersion: v2 data: RESTIC_REPOSITORY: "{{ .BUCKET_ENDPOINT }}/qbittorrent/qbittorrent-config-data" data: - secretKey: BUCKET_ENDPOINT remoteRef: conversionStrategy: Default decodingStrategy: None key: /volsync/restic/garage-local metadataPolicy: None property: BUCKET_ENDPOINT - secretKey: RESTIC_PASSWORD remoteRef: conversionStrategy: Default decodingStrategy: None key: /volsync/restic/garage-local metadataPolicy: None property: RESTIC_PASSWORD - secretKey: AWS_DEFAULT_REGION remoteRef: conversionStrategy: Default decodingStrategy: None key: /garage/home-infra/volsync-backups metadataPolicy: None property: ACCESS_REGION - secretKey: AWS_ACCESS_KEY_ID remoteRef: conversionStrategy: Default decodingStrategy: None key: /garage/home-infra/volsync-backups metadataPolicy: None property: ACCESS_KEY_ID - secretKey: AWS_SECRET_ACCESS_KEY remoteRef: conversionStrategy: Default decodingStrategy: None key: /garage/home-infra/volsync-backups metadataPolicy: None property: ACCESS_SECRET_KEY --- apiVersion: external-secrets.io/v1 kind: ExternalSecret metadata: name: qbittorrent-config-data-backup-secret-remote namespace: qbittorrent labels: helm.sh/chart: volsync-target-config-0.8.0 app.kubernetes.io/instance: qbittorrent app.kubernetes.io/part-of: qbittorrent app.kubernetes.io/version: "0.8.0" app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: qbittorrent-config-data-backup-secret-remote spec: secretStoreRef: kind: ClusterSecretStore name: vault target: template: mergePolicy: Merge engineVersion: v2 data: RESTIC_REPOSITORY: "{{ .BUCKET_ENDPOINT }}/qbittorrent/qbittorrent-config-data" data: - secretKey: BUCKET_ENDPOINT remoteRef: conversionStrategy: Default decodingStrategy: None key: /volsync/restic/garage-remote metadataPolicy: None property: BUCKET_ENDPOINT - secretKey: RESTIC_PASSWORD remoteRef: conversionStrategy: Default decodingStrategy: None key: /volsync/restic/garage-remote metadataPolicy: None property: RESTIC_PASSWORD - secretKey: AWS_DEFAULT_REGION remoteRef: conversionStrategy: Default decodingStrategy: None key: /garage/home-infra/volsync-backups metadataPolicy: None property: ACCESS_REGION - secretKey: AWS_ACCESS_KEY_ID remoteRef: conversionStrategy: Default decodingStrategy: None key: /garage/home-infra/volsync-backups metadataPolicy: None property: ACCESS_KEY_ID - secretKey: AWS_SECRET_ACCESS_KEY remoteRef: conversionStrategy: Default decodingStrategy: None key: /garage/home-infra/volsync-backups metadataPolicy: None property: ACCESS_SECRET_KEY --- apiVersion: external-secrets.io/v1 kind: ExternalSecret metadata: name: qbittorrent-qbit-manage-config-data-backup-secret-external namespace: qbittorrent labels: helm.sh/chart: volsync-target-qbit-manage-config-0.8.0 app.kubernetes.io/instance: qbittorrent app.kubernetes.io/part-of: qbittorrent app.kubernetes.io/version: "0.8.0" app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: qbittorrent-qbit-manage-config-data-backup-secret-external spec: secretStoreRef: kind: ClusterSecretStore name: vault target: template: mergePolicy: Merge engineVersion: v2 data: RESTIC_REPOSITORY: "{{ .BUCKET_ENDPOINT }}/qbittorrent/qbittorrent-qbit-manage-config-data" data: - secretKey: BUCKET_ENDPOINT remoteRef: conversionStrategy: Default decodingStrategy: None key: /volsync/restic/digital-ocean metadataPolicy: None property: BUCKET_ENDPOINT - secretKey: RESTIC_PASSWORD remoteRef: conversionStrategy: Default decodingStrategy: None key: /volsync/restic/digital-ocean metadataPolicy: None property: RESTIC_PASSWORD - secretKey: AWS_DEFAULT_REGION remoteRef: conversionStrategy: Default decodingStrategy: None key: /digital-ocean/home-infra/volsync-backups metadataPolicy: None property: AWS_DEFAULT_REGION - secretKey: AWS_ACCESS_KEY_ID remoteRef: conversionStrategy: Default decodingStrategy: None key: /digital-ocean/home-infra/volsync-backups metadataPolicy: None property: AWS_ACCESS_KEY_ID - secretKey: AWS_SECRET_ACCESS_KEY remoteRef: conversionStrategy: Default decodingStrategy: None key: /digital-ocean/home-infra/volsync-backups metadataPolicy: None property: AWS_SECRET_ACCESS_KEY --- apiVersion: external-secrets.io/v1 kind: ExternalSecret metadata: name: qbittorrent-qbit-manage-config-data-backup-secret-local namespace: qbittorrent labels: helm.sh/chart: volsync-target-qbit-manage-config-0.8.0 app.kubernetes.io/instance: qbittorrent app.kubernetes.io/part-of: qbittorrent app.kubernetes.io/version: "0.8.0" app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: qbittorrent-qbit-manage-config-data-backup-secret-local spec: secretStoreRef: kind: ClusterSecretStore name: vault target: template: mergePolicy: Merge engineVersion: v2 data: RESTIC_REPOSITORY: "{{ .BUCKET_ENDPOINT }}/qbittorrent/qbittorrent-qbit-manage-config-data" data: - secretKey: BUCKET_ENDPOINT remoteRef: conversionStrategy: Default decodingStrategy: None key: /volsync/restic/garage-local metadataPolicy: None property: BUCKET_ENDPOINT - secretKey: RESTIC_PASSWORD remoteRef: conversionStrategy: Default decodingStrategy: None key: /volsync/restic/garage-local metadataPolicy: None property: RESTIC_PASSWORD - secretKey: AWS_DEFAULT_REGION remoteRef: conversionStrategy: Default decodingStrategy: None key: /garage/home-infra/volsync-backups metadataPolicy: None property: ACCESS_REGION - secretKey: AWS_ACCESS_KEY_ID remoteRef: conversionStrategy: Default decodingStrategy: None key: /garage/home-infra/volsync-backups metadataPolicy: None property: ACCESS_KEY_ID - secretKey: AWS_SECRET_ACCESS_KEY remoteRef: conversionStrategy: Default decodingStrategy: None key: /garage/home-infra/volsync-backups metadataPolicy: None property: ACCESS_SECRET_KEY --- apiVersion: external-secrets.io/v1 kind: ExternalSecret metadata: name: qbittorrent-qbit-manage-config-data-backup-secret-remote namespace: qbittorrent labels: helm.sh/chart: volsync-target-qbit-manage-config-0.8.0 app.kubernetes.io/instance: qbittorrent app.kubernetes.io/part-of: qbittorrent app.kubernetes.io/version: "0.8.0" app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: qbittorrent-qbit-manage-config-data-backup-secret-remote spec: secretStoreRef: kind: ClusterSecretStore name: vault target: template: mergePolicy: Merge engineVersion: v2 data: RESTIC_REPOSITORY: "{{ .BUCKET_ENDPOINT }}/qbittorrent/qbittorrent-qbit-manage-config-data" data: - secretKey: BUCKET_ENDPOINT remoteRef: conversionStrategy: Default decodingStrategy: None key: /volsync/restic/garage-remote metadataPolicy: None property: BUCKET_ENDPOINT - secretKey: RESTIC_PASSWORD remoteRef: conversionStrategy: Default decodingStrategy: None key: /volsync/restic/garage-remote metadataPolicy: None property: RESTIC_PASSWORD - secretKey: AWS_DEFAULT_REGION remoteRef: conversionStrategy: Default decodingStrategy: None key: /garage/home-infra/volsync-backups metadataPolicy: None property: ACCESS_REGION - secretKey: AWS_ACCESS_KEY_ID remoteRef: conversionStrategy: Default decodingStrategy: None key: /garage/home-infra/volsync-backups metadataPolicy: None property: ACCESS_KEY_ID - secretKey: AWS_SECRET_ACCESS_KEY remoteRef: conversionStrategy: Default decodingStrategy: None key: /garage/home-infra/volsync-backups metadataPolicy: None property: ACCESS_SECRET_KEY --- apiVersion: external-secrets.io/v1 kind: ExternalSecret metadata: name: qbittorrent-qbit-manage-config namespace: qbittorrent labels: app.kubernetes.io/name: qbittorrent-qbit-manage-config app.kubernetes.io/instance: qbittorrent app.kubernetes.io/part-of: qbittorrent spec: secretStoreRef: kind: ClusterSecretStore name: vault data: - secretKey: ntfy-url remoteRef: conversionStrategy: Default decodingStrategy: None key: /cl01tl/qbittorrent/qbit-manage metadataPolicy: None property: ntfy-url --- apiVersion: external-secrets.io/v1 kind: ExternalSecret metadata: name: qbittorrent-qui-config-data-backup-secret-external namespace: qbittorrent labels: helm.sh/chart: volsync-target-qui-config-0.8.0 app.kubernetes.io/instance: qbittorrent app.kubernetes.io/part-of: qbittorrent app.kubernetes.io/version: "0.8.0" app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: qbittorrent-qui-config-data-backup-secret-external spec: secretStoreRef: kind: ClusterSecretStore name: vault target: template: mergePolicy: Merge engineVersion: v2 data: RESTIC_REPOSITORY: "{{ .BUCKET_ENDPOINT }}/qbittorrent/qbittorrent-qui-config-data" data: - secretKey: BUCKET_ENDPOINT remoteRef: conversionStrategy: Default decodingStrategy: None key: /volsync/restic/digital-ocean metadataPolicy: None property: BUCKET_ENDPOINT - secretKey: RESTIC_PASSWORD remoteRef: conversionStrategy: Default decodingStrategy: None key: /volsync/restic/digital-ocean metadataPolicy: None property: RESTIC_PASSWORD - secretKey: AWS_DEFAULT_REGION remoteRef: conversionStrategy: Default decodingStrategy: None key: /digital-ocean/home-infra/volsync-backups metadataPolicy: None property: AWS_DEFAULT_REGION - secretKey: AWS_ACCESS_KEY_ID remoteRef: conversionStrategy: Default decodingStrategy: None key: /digital-ocean/home-infra/volsync-backups metadataPolicy: None property: AWS_ACCESS_KEY_ID - secretKey: AWS_SECRET_ACCESS_KEY remoteRef: conversionStrategy: Default decodingStrategy: None key: /digital-ocean/home-infra/volsync-backups metadataPolicy: None property: AWS_SECRET_ACCESS_KEY --- apiVersion: external-secrets.io/v1 kind: ExternalSecret metadata: name: qbittorrent-qui-config-data-backup-secret-local namespace: qbittorrent labels: helm.sh/chart: volsync-target-qui-config-0.8.0 app.kubernetes.io/instance: qbittorrent app.kubernetes.io/part-of: qbittorrent app.kubernetes.io/version: "0.8.0" app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: qbittorrent-qui-config-data-backup-secret-local spec: secretStoreRef: kind: ClusterSecretStore name: vault target: template: mergePolicy: Merge engineVersion: v2 data: RESTIC_REPOSITORY: "{{ .BUCKET_ENDPOINT }}/qbittorrent/qbittorrent-qui-config-data" data: - secretKey: BUCKET_ENDPOINT remoteRef: conversionStrategy: Default decodingStrategy: None key: /volsync/restic/garage-local metadataPolicy: None property: BUCKET_ENDPOINT - secretKey: RESTIC_PASSWORD remoteRef: conversionStrategy: Default decodingStrategy: None key: /volsync/restic/garage-local metadataPolicy: None property: RESTIC_PASSWORD - secretKey: AWS_DEFAULT_REGION remoteRef: conversionStrategy: Default decodingStrategy: None key: /garage/home-infra/volsync-backups metadataPolicy: None property: ACCESS_REGION - secretKey: AWS_ACCESS_KEY_ID remoteRef: conversionStrategy: Default decodingStrategy: None key: /garage/home-infra/volsync-backups metadataPolicy: None property: ACCESS_KEY_ID - secretKey: AWS_SECRET_ACCESS_KEY remoteRef: conversionStrategy: Default decodingStrategy: None key: /garage/home-infra/volsync-backups metadataPolicy: None property: ACCESS_SECRET_KEY --- apiVersion: external-secrets.io/v1 kind: ExternalSecret metadata: name: qbittorrent-qui-config-data-backup-secret-remote namespace: qbittorrent labels: helm.sh/chart: volsync-target-qui-config-0.8.0 app.kubernetes.io/instance: qbittorrent app.kubernetes.io/part-of: qbittorrent app.kubernetes.io/version: "0.8.0" app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: qbittorrent-qui-config-data-backup-secret-remote spec: secretStoreRef: kind: ClusterSecretStore name: vault target: template: mergePolicy: Merge engineVersion: v2 data: RESTIC_REPOSITORY: "{{ .BUCKET_ENDPOINT }}/qbittorrent/qbittorrent-qui-config-data" data: - secretKey: BUCKET_ENDPOINT remoteRef: conversionStrategy: Default decodingStrategy: None key: /volsync/restic/garage-remote metadataPolicy: None property: BUCKET_ENDPOINT - secretKey: RESTIC_PASSWORD remoteRef: conversionStrategy: Default decodingStrategy: None key: /volsync/restic/garage-remote metadataPolicy: None property: RESTIC_PASSWORD - secretKey: AWS_DEFAULT_REGION remoteRef: conversionStrategy: Default decodingStrategy: None key: /garage/home-infra/volsync-backups metadataPolicy: None property: ACCESS_REGION - secretKey: AWS_ACCESS_KEY_ID remoteRef: conversionStrategy: Default decodingStrategy: None key: /garage/home-infra/volsync-backups metadataPolicy: None property: ACCESS_KEY_ID - secretKey: AWS_SECRET_ACCESS_KEY remoteRef: conversionStrategy: Default decodingStrategy: None key: /garage/home-infra/volsync-backups metadataPolicy: None property: ACCESS_SECRET_KEY --- apiVersion: external-secrets.io/v1 kind: ExternalSecret metadata: name: qbittorrent-wireguard-conf namespace: qbittorrent labels: app.kubernetes.io/name: qbittorrent-wireguard-conf app.kubernetes.io/instance: qbittorrent app.kubernetes.io/part-of: qbittorrent spec: secretStoreRef: kind: ClusterSecretStore name: vault data: - secretKey: private-key remoteRef: conversionStrategy: Default decodingStrategy: None key: /protonvpn/conf/cl01tl metadataPolicy: None property: private-key - secretKey: proton-email remoteRef: conversionStrategy: Default decodingStrategy: None key: /protonvpn/conf/cl01tl metadataPolicy: None property: email - secretKey: proton-password remoteRef: conversionStrategy: Default decodingStrategy: None key: /protonvpn/conf/cl01tl metadataPolicy: None property: password --- apiVersion: external-secrets.io/v1 kind: ExternalSecret metadata: name: qui-oidc-secret namespace: qbittorrent labels: app.kubernetes.io/name: qui-oidc-secret app.kubernetes.io/instance: qbittorrent app.kubernetes.io/part-of: qbittorrent spec: secretStoreRef: kind: ClusterSecretStore name: vault data: - secretKey: secret remoteRef: conversionStrategy: Default decodingStrategy: None key: /authentik/oidc/qui metadataPolicy: None property: secret - secretKey: client remoteRef: conversionStrategy: Default decodingStrategy: None key: /authentik/oidc/qui metadataPolicy: None property: client --- apiVersion: gateway.networking.k8s.io/v1alpha2 kind: HTTPRoute metadata: name: qbittorrent-main labels: app.kubernetes.io/instance: qbittorrent app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: qbittorrent helm.sh/chart: qbittorrent-4.6.2 namespace: qbittorrent spec: parentRefs: - group: gateway.networking.k8s.io kind: Gateway name: traefik-gateway namespace: traefik hostnames: - "qbittorrent.alexlebens.net" rules: - backendRefs: - group: "" kind: Service name: qbittorrent namespace: qbittorrent port: 8080 weight: 100 matches: - path: type: PathPrefix value: / --- apiVersion: gateway.networking.k8s.io/v1alpha2 kind: HTTPRoute metadata: name: qbittorrent-qui labels: app.kubernetes.io/instance: qbittorrent app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: qbittorrent helm.sh/chart: qbittorrent-4.6.2 namespace: qbittorrent spec: parentRefs: - group: gateway.networking.k8s.io kind: Gateway name: traefik-gateway namespace: traefik hostnames: - "qui.alexlebens.net" rules: - backendRefs: - group: "" kind: Service name: qbittorrent-qui namespace: qbittorrent port: 80 weight: 100 matches: - path: type: PathPrefix value: / --- apiVersion: v1 kind: Namespace metadata: name: qbittorrent labels: app.kubernetes.io/name: qbittorrent app.kubernetes.io/instance: qbittorrent app.kubernetes.io/part-of: qbittorrent pod-security.kubernetes.io/audit: privileged pod-security.kubernetes.io/enforce: privileged pod-security.kubernetes.io/warn: privileged --- apiVersion: v1 kind: PersistentVolume metadata: name: qbittorrent-nfs-storage namespace: qbittorrent labels: app.kubernetes.io/name: qbittorrent-nfs-storage app.kubernetes.io/instance: qbittorrent app.kubernetes.io/part-of: qbittorrent spec: persistentVolumeReclaimPolicy: Retain storageClassName: nfs-client capacity: storage: 1Gi accessModes: - ReadWriteMany nfs: path: /volume2/Storage server: synologybond.alexlebens.net mountOptions: - vers=4 - minorversion=1 - noac --- kind: PersistentVolumeClaim apiVersion: v1 metadata: name: qbittorrent-config-data labels: app.kubernetes.io/instance: qbittorrent app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: qbittorrent helm.sh/chart: qbittorrent-4.6.2 annotations: helm.sh/resource-policy: keep namespace: qbittorrent spec: accessModes: - "ReadWriteMany" resources: requests: storage: "1Gi" storageClassName: "ceph-filesystem" --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: qbittorrent-nfs-storage namespace: qbittorrent labels: app.kubernetes.io/name: qbittorrent-nfs-storage app.kubernetes.io/instance: qbittorrent app.kubernetes.io/part-of: qbittorrent spec: volumeName: qbittorrent-nfs-storage storageClassName: nfs-client accessModes: - ReadWriteMany resources: requests: storage: 1Gi --- kind: PersistentVolumeClaim apiVersion: v1 metadata: name: qbittorrent-qbit-manage-config-data labels: app.kubernetes.io/instance: qbittorrent app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: qbittorrent helm.sh/chart: qbittorrent-4.6.2 annotations: helm.sh/resource-policy: keep namespace: qbittorrent spec: accessModes: - "ReadWriteOnce" resources: requests: storage: "1Gi" storageClassName: "ceph-block" --- kind: PersistentVolumeClaim apiVersion: v1 metadata: name: qbittorrent-qui-config-data labels: app.kubernetes.io/instance: qbittorrent app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: qbittorrent helm.sh/chart: qbittorrent-4.6.2 annotations: helm.sh/resource-policy: keep namespace: qbittorrent spec: accessModes: - "ReadWriteOnce" resources: requests: storage: "1Gi" storageClassName: "ceph-block" --- apiVersion: volsync.backube/v1alpha1 kind: ReplicationSource metadata: name: qbittorrent-config-data-backup-source-external namespace: qbittorrent labels: helm.sh/chart: volsync-target-config-0.8.0 app.kubernetes.io/instance: qbittorrent app.kubernetes.io/part-of: qbittorrent app.kubernetes.io/version: "0.8.0" app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: qbittorrent-config-data-backup spec: sourcePVC: qbittorrent-config-data trigger: schedule: 58 10 * * * restic: pruneIntervalDays: 7 repository: qbittorrent-config-data-backup-secret-external retain: daily: 7 hourly: 0 monthly: 3 weekly: 4 yearly: 1 moverSecurityContext: fsGroup: 1000 fsGroupChangePolicy: OnRootMismatch runAsGroup: 1000 runAsUser: 1000 copyMethod: Snapshot storageClassName: ceph-filesystem volumeSnapshotClassName: ceph-filesystem-snapshot cacheCapacity: 1Gi --- apiVersion: volsync.backube/v1alpha1 kind: ReplicationSource metadata: name: qbittorrent-config-data-backup-source-local namespace: qbittorrent labels: helm.sh/chart: volsync-target-config-0.8.0 app.kubernetes.io/instance: qbittorrent app.kubernetes.io/part-of: qbittorrent app.kubernetes.io/version: "0.8.0" app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: qbittorrent-config-data-backup spec: sourcePVC: qbittorrent-config-data trigger: schedule: 58 8 * * * restic: pruneIntervalDays: 7 repository: qbittorrent-config-data-backup-secret-local retain: daily: 7 hourly: 0 monthly: 3 weekly: 4 yearly: 1 moverSecurityContext: fsGroup: 1000 fsGroupChangePolicy: OnRootMismatch runAsGroup: 1000 runAsUser: 1000 copyMethod: Snapshot storageClassName: ceph-filesystem volumeSnapshotClassName: ceph-filesystem-snapshot cacheCapacity: 1Gi --- apiVersion: volsync.backube/v1alpha1 kind: ReplicationSource metadata: name: qbittorrent-config-data-backup-source-remote namespace: qbittorrent labels: helm.sh/chart: volsync-target-config-0.8.0 app.kubernetes.io/instance: qbittorrent app.kubernetes.io/part-of: qbittorrent app.kubernetes.io/version: "0.8.0" app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: qbittorrent-config-data-backup spec: sourcePVC: qbittorrent-config-data trigger: schedule: 58 9 * * * restic: pruneIntervalDays: 7 repository: qbittorrent-config-data-backup-secret-remote retain: daily: 7 hourly: 0 monthly: 3 weekly: 4 yearly: 1 moverSecurityContext: fsGroup: 1000 fsGroupChangePolicy: OnRootMismatch runAsGroup: 1000 runAsUser: 1000 copyMethod: Snapshot storageClassName: ceph-filesystem volumeSnapshotClassName: ceph-filesystem-snapshot cacheCapacity: 1Gi --- apiVersion: volsync.backube/v1alpha1 kind: ReplicationSource metadata: name: qbittorrent-qbit-manage-config-data-backup-source-external namespace: qbittorrent labels: helm.sh/chart: volsync-target-qbit-manage-config-0.8.0 app.kubernetes.io/instance: qbittorrent app.kubernetes.io/part-of: qbittorrent app.kubernetes.io/version: "0.8.0" app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: qbittorrent-qbit-manage-config-data-backup spec: sourcePVC: qbittorrent-qbit-manage-config-data trigger: schedule: 0 13 * * * restic: pruneIntervalDays: 7 repository: qbittorrent-qbit-manage-config-data-backup-secret-external retain: daily: 7 hourly: 0 monthly: 3 weekly: 4 yearly: 1 copyMethod: Snapshot storageClassName: ceph-block volumeSnapshotClassName: ceph-blockpool-snapshot cacheCapacity: 1Gi --- apiVersion: volsync.backube/v1alpha1 kind: ReplicationSource metadata: name: qbittorrent-qbit-manage-config-data-backup-source-local namespace: qbittorrent labels: helm.sh/chart: volsync-target-qbit-manage-config-0.8.0 app.kubernetes.io/instance: qbittorrent app.kubernetes.io/part-of: qbittorrent app.kubernetes.io/version: "0.8.0" app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: qbittorrent-qbit-manage-config-data-backup spec: sourcePVC: qbittorrent-qbit-manage-config-data trigger: schedule: 0 11 * * * restic: pruneIntervalDays: 7 repository: qbittorrent-qbit-manage-config-data-backup-secret-local retain: daily: 7 hourly: 0 monthly: 3 weekly: 4 yearly: 1 copyMethod: Snapshot storageClassName: ceph-block volumeSnapshotClassName: ceph-blockpool-snapshot cacheCapacity: 1Gi --- apiVersion: volsync.backube/v1alpha1 kind: ReplicationSource metadata: name: qbittorrent-qbit-manage-config-data-backup-source-remote namespace: qbittorrent labels: helm.sh/chart: volsync-target-qbit-manage-config-0.8.0 app.kubernetes.io/instance: qbittorrent app.kubernetes.io/part-of: qbittorrent app.kubernetes.io/version: "0.8.0" app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: qbittorrent-qbit-manage-config-data-backup spec: sourcePVC: qbittorrent-qbit-manage-config-data trigger: schedule: 0 12 * * * restic: pruneIntervalDays: 7 repository: qbittorrent-qbit-manage-config-data-backup-secret-remote retain: daily: 7 hourly: 0 monthly: 3 weekly: 4 yearly: 1 copyMethod: Snapshot storageClassName: ceph-block volumeSnapshotClassName: ceph-blockpool-snapshot cacheCapacity: 1Gi --- apiVersion: volsync.backube/v1alpha1 kind: ReplicationSource metadata: name: qbittorrent-qui-config-data-backup-source-external namespace: qbittorrent labels: helm.sh/chart: volsync-target-qui-config-0.8.0 app.kubernetes.io/instance: qbittorrent app.kubernetes.io/part-of: qbittorrent app.kubernetes.io/version: "0.8.0" app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: qbittorrent-qui-config-data-backup spec: sourcePVC: qbittorrent-qui-config-data trigger: schedule: 2 13 * * * restic: pruneIntervalDays: 7 repository: qbittorrent-qui-config-data-backup-secret-external retain: daily: 7 hourly: 0 monthly: 3 weekly: 4 yearly: 1 copyMethod: Snapshot storageClassName: ceph-block volumeSnapshotClassName: ceph-blockpool-snapshot cacheCapacity: 1Gi --- apiVersion: volsync.backube/v1alpha1 kind: ReplicationSource metadata: name: qbittorrent-qui-config-data-backup-source-local namespace: qbittorrent labels: helm.sh/chart: volsync-target-qui-config-0.8.0 app.kubernetes.io/instance: qbittorrent app.kubernetes.io/part-of: qbittorrent app.kubernetes.io/version: "0.8.0" app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: qbittorrent-qui-config-data-backup spec: sourcePVC: qbittorrent-qui-config-data trigger: schedule: 2 11 * * * restic: pruneIntervalDays: 7 repository: qbittorrent-qui-config-data-backup-secret-local retain: daily: 7 hourly: 0 monthly: 3 weekly: 4 yearly: 1 copyMethod: Snapshot storageClassName: ceph-block volumeSnapshotClassName: ceph-blockpool-snapshot cacheCapacity: 1Gi --- apiVersion: volsync.backube/v1alpha1 kind: ReplicationSource metadata: name: qbittorrent-qui-config-data-backup-source-remote namespace: qbittorrent labels: helm.sh/chart: volsync-target-qui-config-0.8.0 app.kubernetes.io/instance: qbittorrent app.kubernetes.io/part-of: qbittorrent app.kubernetes.io/version: "0.8.0" app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: qbittorrent-qui-config-data-backup spec: sourcePVC: qbittorrent-qui-config-data trigger: schedule: 2 12 * * * restic: pruneIntervalDays: 7 repository: qbittorrent-qui-config-data-backup-secret-remote retain: daily: 7 hourly: 0 monthly: 3 weekly: 4 yearly: 1 copyMethod: Snapshot storageClassName: ceph-block volumeSnapshotClassName: ceph-blockpool-snapshot cacheCapacity: 1Gi --- apiVersion: v1 kind: Service metadata: name: qbittorrent-qbit-manage labels: app.kubernetes.io/instance: qbittorrent app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: qbittorrent app.kubernetes.io/service: qbittorrent-qbit-manage helm.sh/chart: qbittorrent-4.6.2 namespace: qbittorrent spec: type: ClusterIP ports: - port: 8000 targetPort: 8000 protocol: TCP name: apprise selector: app.kubernetes.io/controller: qbit-manage app.kubernetes.io/instance: qbittorrent app.kubernetes.io/name: qbittorrent --- apiVersion: v1 kind: Service metadata: name: qbittorrent-qui labels: app.kubernetes.io/instance: qbittorrent app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: qbittorrent app.kubernetes.io/service: qbittorrent-qui helm.sh/chart: qbittorrent-4.6.2 namespace: qbittorrent spec: type: ClusterIP ports: - port: 80 targetPort: 7476 protocol: TCP name: http - port: 9074 targetPort: 9074 protocol: TCP name: metrics selector: app.kubernetes.io/controller: qui app.kubernetes.io/instance: qbittorrent app.kubernetes.io/name: qbittorrent --- apiVersion: v1 kind: Service metadata: name: qbittorrent labels: app.kubernetes.io/instance: qbittorrent app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: qbittorrent app.kubernetes.io/service: qbittorrent helm.sh/chart: qbittorrent-4.6.2 namespace: qbittorrent spec: type: ClusterIP ports: - port: 9999 targetPort: 9999 protocol: TCP name: health - port: 8080 targetPort: 8080 protocol: TCP name: http - port: 9022 targetPort: 9022 protocol: TCP name: metrics selector: app.kubernetes.io/controller: main app.kubernetes.io/instance: qbittorrent app.kubernetes.io/name: qbittorrent --- apiVersion: monitoring.coreos.com/v1 kind: ServiceMonitor metadata: name: qbittorrent-apprise labels: app.kubernetes.io/instance: qbittorrent app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: qbittorrent helm.sh/chart: qbittorrent-4.6.2 namespace: qbittorrent spec: jobLabel: qbittorrent-apprise namespaceSelector: matchNames: - qbittorrent selector: matchLabels: app.kubernetes.io/instance: qbittorrent-apprise app.kubernetes.io/name: qbittorrent-apprise endpoints: - interval: 30s path: /metrics port: apprise scrapeTimeout: 15s --- apiVersion: monitoring.coreos.com/v1 kind: ServiceMonitor metadata: name: qbittorrent-main labels: app.kubernetes.io/instance: qbittorrent app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: qbittorrent helm.sh/chart: qbittorrent-4.6.2 namespace: qbittorrent spec: jobLabel: qbittorrent-main namespaceSelector: matchNames: - qbittorrent selector: matchLabels: app.kubernetes.io/instance: qbittorrent app.kubernetes.io/name: qbittorrent endpoints: - interval: 30s path: /metrics port: metrics scrapeTimeout: 15s --- apiVersion: monitoring.coreos.com/v1 kind: ServiceMonitor metadata: name: qbittorrent-qui labels: app.kubernetes.io/instance: qbittorrent app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: qbittorrent helm.sh/chart: qbittorrent-4.6.2 namespace: qbittorrent spec: jobLabel: qbittorrent-qui namespaceSelector: matchNames: - qbittorrent selector: matchLabels: app.kubernetes.io/instance: qbittorrent-qui app.kubernetes.io/name: qbittorrent-qui endpoints: - interval: 30s path: /metrics port: metrics scrapeTimeout: 15s