Multiple "/dashboard" redirects when using haproxy

So I have a weird setup. We are using haproxy as a LB for several Traefik v2 ingress containers within K8s. And I am trying to route the dashboard through an Ingress object. And it is adding /dashbaord continuously to the url.

Current Args from the deployment :

args:
#        - "--api=true"
        - "--api.insecure=true"
        - "--providers.kubernetesingress"
        - "--entrypoints.web.address=:80"
        - "--metrics.prometheus=true"
        - "--metrics.prometheus.addEntryPointsLabels=true"
        - "--metrics.prometheus.addServicesLabels=true"
        - "--accesslog=true"
        - "--global.sendAnonymousUsage=false"

And the ingress object :

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: traefik-ingress
  namespace: ingress-traefik
  annotations:
    kubernetes.io/ingress.class: traefik
    traefik.ingress.kubernetes.io/rule-type: PathPrefix
spec:
  rules:
    - host: traefik.dockr.life
      http:
        paths:
        - path: /api || /dashboard
          backend:
            serviceName: traefik-ingress-service
            servicePort: 8080

here is the haproxy log :

74.212.241.145:61699 [20/Dec/2019:05:13:17.955] traefik traefik/server1 0/0/1/2/3 404 180 - - ---- 1/1/0/0/0 0/0 "GET /dashboard/dashboard/dashboard/dashboard/dashboard/dashboard/dashboard/dashboard/dashboard/dashboard/dashboard/dashboard/dashboard/dashboard/dashboard/dashboard/dashboard/dashboard/dashboard/dashboard/ HTTP/1.1"

haproxy.cfg :

global
    pidfile     /var/run/haproxy.pid
    log stdout  format raw  local0  info
    maxconn     4000
    user        root
    group       root
    nbproc 4

defaults
    mode        http
    log         global
    option      dontlognull
    option      httpclose
    option      httplog
    option      forwardfor
    timeout connect 10000 # default 10 second time out if a backend is not found
    timeout client 300000
    timeout server 300000
    maxconn     60000
    retries     3

listen traefik
       bind *:80
       mode http
#       stats enable
#       stats uri /stats
#       stats realm HAProxy\ Statistics
#       stats auth admin:Pa22word
#       option httpchk HEAD /check.txt HTTP/1.0
       server server1 167.172.242.69:32907 check

The docs say to use the insecure api. Not sure what I am missing. Has anyone been able to make this work? I want to disable port 8080...

Idez, that works great with Docker Swarm. I run that on another cluster. I am asking about Kubernetes. Does anyone have a kube yaml that shows how to set this up?

something like that:

apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
  name: traefik-web-ui
  namespace: yournamespace
spec:
  entryPoints:
    - web
  routes:
  - match: PathPrefix(`/api`) || PathPrefix(`/dashboard`)
    kind: Rule
    services:
    - name: api@internal
      kind: TraefikService

I have everything set up exactly like this in my kubernetes cluster. The problem is the dashboard is accessible from inside the cluster, even kubernetes nodes, but I can not access it from outside(internet).
my request is getting into the cluster but is lost inside, it seems NAT is doing some strange magic on machines
Anybody met this kind of behavior?
Thanks in advance

One more strange thing, I am able to access traefik.domain.com/api/http/services for example, but dashboard is not working

I am not using api.insecure, I am using api@internal TraefikService as defined in documentation

Thanks for the response

Still trying to find a way to make this work without a CRD. Here is the exact yaml I am using