Traefik rclone webdav 502 Bad Gateway

I am trying to run rclone webdav in a k3s Kubernetes container with traefik as proxy. However I keep getting following error in traefik (10.42.0.152 in this case is the ip of rclone webdav container):

'502 Bad Gateway' caused by: dial tcp 10.42.0.152:8080: connect: connection refused"

I can kubectl port-forward the webdav-service, and it is accessible that way. So the container itself is running fine, which means it could be one of following issue:

  • issue with traefik -- pass headers or something?
  • issue with rclone where it is detecting proxy (requests coming from someplace else) and therefore blocks it -- some rclone config change?

Following are my traefik & rclone deployment files:

traefik
apiVersion: apps/v1
kind: Deployment
metadata:
  name: traefik
  labels:
    app: traefik
spec:
  replicas: 1
  selector:
    matchLabels:
      app: traefik
  template:
    metadata:
      labels:
        app: traefik
    spec:
      serviceAccountName: traefik-ingress-controller
      containers:
      - name: traefik
        image: traefik:latest
        args:
        - --api.insecure=true
        - --accesslog=true
        - --log.level=DEBUG
        - --global.sendAnonymousUsage=false
        - --providers.kubernetescrd=true
        - --providers.kubernetescrd.allowCrossNamespace=true

        # Entrypoints 
        - --entrypoints.web.address=:80
        - --entrypoints.vpn.address=:81/udp
        - --entrypoints.mqtt.address=:83
        - --entrypoints.netbios.address=:139/udp
        - --entrypoints.samba.address=:445

        ports:
        - name: web
          containerPort: 80
          protocol: TCP
        - name: vpn
          containerPort: 81
          protocol: UDP
        - name: mqtt
          containerPort: 83
          protocol: TCP
        - name: netbios
          containerPort: 139
          protocol: UDP
        - name: samba
          containerPort: 445
          protocol: TCP
        - name: admin
          containerPort: 8080
          protocol: TCP
        env:
        - name: TZ
          value: America/New_York
        - name: PGID
          value: "1000"
        - name: PUID
          value: "1000"
        volumeMounts:
        - name: traefik-volume
          mountPath: /config
      volumes:
      - name: traefik-volume
        hostPath:
          path: /data/raid/kube/traefik
rclone
kind: Deployment
apiVersion: apps/v1
metadata:
  name: webdav
spec:
  replicas: 1
  selector:
    matchLabels:
      app: webdav
  template:
    metadata:
      labels:
        app: webdav
    spec:
      containers:
      - name: webdav
        image: rclone/rclone:latest
        args: ["serve", "webdav",  "/data/media", "--read-only", "--addr", "127.0.0.1:8080", "--log-level", "DEBUG", "--exclude", "*.log, *.bak, log/, logs/"]
        ports:
        - containerPort: 8080
        env:
        - name: TZ
          value: America/New_York
        volumeMounts:
        - name: data-volume
          mountPath: /data/media
          readOnly: true
      volumes:
      - name: data-volume
        hostPath:
          path: /data/media

---
apiVersion: v1
kind: Service
metadata:
  name: webdav-service
  labels:
    app: webdav
spec:
  ports:
  - name: http
    targetPort: 8080
    port: 80
  selector:
    app: webdav

---
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
  name: webdav-route
spec:
  entryPoints:
  - web
  routes:
  - match: Host(`webdav.local.example.com`)
    kind: Rule
    services:
    - name: webdav-service
      port: 80