Couldn't enable ingressroutetcp in traefik

Hi,

I trying to setup IngressRouteTcp in traefik for hivemq broker. I have a resource successfully created but TCP routes are not enabled in dashboard. I don't see any logs as well regarding to this.

IngressrouteTcp manifest:

extraObjects:
  - apiVersion: traefik.io/v1alpha1
    kind: IngressRouteTCP
    metadata:
      name: mqtt-ingress-route-tcp
      namespace: hivemq
    spec:
      entryPoints:
        - mqtt
      routes:
        - match: HostSNI(`*`)
          services:
            - name: mqtt-tls
              port: 8883
              serversTransport: mytransporttcp
      tls:
        secretName: hivemq-creds
        passthrough: true

serversTransport

extraObjects:
  - apiVersion: traefik.io/v1alpha1
    kind: ServersTransportTCP
    metadata:
      name: mytransporttcp
      namespace: hivemq
    spec:
      serverName: custom.example.com

entrypoint

ports:
   mqtt:
     port: 8883
   expose:
      default: true
   exposedPort: 8883
   protocol: TCP
   tls:
     enabled: true
     store:
       name: default

provider configuration

providers:
  kubernetesCRD:
    enabled: true
    allowCrossNamespace: true
    ingressClass: "traefik"
    nativeLBByDefault: true

Im using helm charts for traefik deployment, hence I have configured all these in helm values file.

Dashboard TCP routers

Please help to resolve the issue.

Hi @bluepuma77 @system

If any of you could help me with the problem

Thanks

@kevinpollet , Can you help me with the issue?

Did you check the doc?

Hey @bluepuma77 ,

Thanks for responding.
I did read the document before configuring the manifest. I don't know what I'm missing in this. I did check various examples as well but I couldn't figure out what mistake I was making.

Configuration received from logs:

Configuration received config={
    "http": {
        "middlewares": {
            "traefik-cc-middleware-redirection": {
                "redirectScheme": {
                    "permanent": true,
                    "scheme": "https"
                }
            },
            "traefik-cc-middleware-strip": {
                "stripPrefix": {
                    "prefixes": [
                        "/cc/"
                    ]
                }
            },
            "traefik-ese-host": {
                "headers": {
                    "customRequestHeaders": {
                        "Host": "xxx"
                    }
                }
            }
        },
        "routers": {
            "traefik-traefik-control-centre-99d177e47913e833b985": {
                "entryPoints": [
                    "websecure"
                ],
                "middlewares": [
                    "traefik-cc-middleware-strip"
                ],
                "rule": "Host(`xxx`) && (PathPrefix(`/cc/`) || PathPrefix(`/VAADIN/`))",
                "service": "traefik-traefik-control-centre-99d177e47913e833b985",
                "tls": {}
            },
            "traefik-traefik-dashboard-bfc3341bda2c0203b7c8": {
                "entryPoints": [
                    "websecure"
                ],
                "rule": "Host(`xxx`) && (PathPrefix(`/dashboard`) || PathPrefix(`/api`))",
                "service": "api@internal",
                "tls": {}
            },
            "traefik-traefik-ese-companion-92445dfb511e72effd77": {
                "entryPoints": [
                    "websecure"
                ],
                "middlewares": [
                    "traefik-ese-redirectregex"
                ],
                "rule": "Host(`xxx`) && PathPrefix(`/ese/`)",
                "service": "traefik-traefik-ese-companion-92445dfb511e72effd77",
                "tls": {}
            }
        },
        "serversTransports": {
            "hivemq-ese-transport": {
                "forwardingTimeouts": {
                    "dialTimeout": "30s",
                    "idleConnTimeout": "1m30s",
                    "pingTimeout": "15s"
                }
            }
        },
        "services": {
            "traefik-traefik-control-centre-99d177e47913e833b985": {
                "loadBalancer": {
                    "passHostHeader": true,
                    "responseForwarding": {
                        "flushInterval": "100ms"
                    },
                    "servers": [
                        {
                            "url": "http://xxx:1234"
                        }
                    ],
                    "sticky": {
                        "cookie": {
                            "httpOnly": true,
                            "name": "ClientIP",
                            "path": "/cc/",
                            "secure": true
                        }
                    }
                }
            },
            "traefik-traefik-ese-companion-92445dfb511e72effd77": {
                "loadBalancer": {
                    "passHostHeader": true,
                    "responseForwarding": {
                        "flushInterval": "100ms"
                    },
                    "servers": [
                        {
                            "url": "https://xxx:1235"
                        }
                    ],
                    "serversTransport": "hivemq-ese-transport",
                    "sticky": {
                        "cookie": {
                            "name": "ese_companion_cookie",
                            "path": "/ese/",
                            "secure": true
                        }
                    }
                }
            }
        }
    },
    "tcp": {},
    "tls": {
        "stores": {
            "default": {}
        }
    },
    "udp": {}
} 
providerName=kubernetescrd

logs:

2025-01-29T02:40:43Z DBG github.com/traefik/traefik/v3/pkg/middlewares/metrics/metrics.go:50 > Creating middleware entryPointName=traefik middlewareName=metrics-entrypoint middlewareType=Metrics
2025-01-29T02:40:43Z DBG github.com/traefik/traefik/v3/pkg/middlewares/recovery/recovery.go:25 > Creating middleware entryPointName=traefik middlewareName=traefik-internal-recovery middlewareType=Recovery
2025-01-29T02:40:43Z DBG github.com/traefik/traefik/v3/pkg/middlewares/metrics/metrics.go:50 > Creating middleware entryPointName=metrics middlewareName=metrics-entrypoint middlewareType=Metrics
2025-01-29T02:40:43Z DBG github.com/traefik/traefik/v3/pkg/middlewares/recovery/recovery.go:25 > Creating middleware entryPointName=metrics middlewareName=traefik-internal-recovery middlewareType=Recovery
2025-01-29T02:40:43Z DBG github.com/traefik/traefik/v3/pkg/middlewares/metrics/metrics.go:50 > Creating middleware entryPointName=web middlewareName=metrics-entrypoint middlewareType=Metrics
2025-01-29T02:40:43Z DBG github.com/traefik/traefik/v3/pkg/middlewares/redirect/redirect_scheme.go:29 > Creating middleware entryPointName=web middlewareName=redirect-web-to-443@internal middlewareType=RedirectScheme routerName=web-to-443@internal
2025-01-29T02:40:43Z DBG github.com/traefik/traefik/v3/pkg/middlewares/redirect/redirect_scheme.go:30 > Setting up redirection to https 443 entryPointName=web middlewareName=redirect-web-to-443@internal middlewareType=RedirectScheme routerName=web-to-443@internal
2025-01-29T02:40:43Z DBG github.com/traefik/traefik/v3/pkg/middlewares/recovery/recovery.go:25 > Creating middleware entryPointName=web middlewareName=traefik-internal-recovery middlewareType=Recovery
2025-01-29T02:40:43Z DBG github.com/traefik/traefik/v3/pkg/middlewares/metrics/metrics.go:50 > Creating middleware entryPointName=websecure middlewareName=metrics-entrypoint middlewareType=Metrics
2025-01-29T02:40:43Z DBG github.com/traefik/traefik/v3/pkg/middlewares/metrics/metrics.go:50 > Creating middleware entryPointName=mqtt middlewareName=metrics-entrypoint middlewareType=Metrics
2025-01-29T02:40:43Z DBG github.com/traefik/traefik/v3/pkg/middlewares/metrics/metrics.go:50 > Creating middleware entryPointName=websecure middlewareName=metrics-entrypoint middlewareType=Metrics
2025-01-29T02:40:43Z DBG github.com/traefik/traefik/v3/pkg/server/service/service.go:313 > Creating load-balancer entryPointName=websecure routerName=traefik-traefik-ese-companion-92445dfb511e72effd77@kubernetescrd serviceName=traefik-traefik-ese-companion-92445dfb511e72effd77@kubernetescrd
2025-01-29T02:40:43Z DBG github.com/traefik/traefik/v3/pkg/server/service/service.go:350 > Creating server entryPointName=websecure routerName=traefik-traefik-ese-companion-92445dfb511e72effd77@kubernetescrd serverName=6835427e184815a2 serviceName=traefik-traefik-ese-companion-92445dfb511e72effd77@kubernetescrd target=https://xxx:1235
2025-01-29T02:40:43Z DBG github.com/traefik/traefik/v3/pkg/middlewares/metrics/metrics.go:82 > Creating middleware entryPointName=websecure middlewareName=metrics-service middlewareType=Metrics routerName=traefik-traefik-ese-companion-92445dfb511e72effd77@kubernetescrd serviceName=traefik-traefik-ese-companion-92445dfb511e72effd77@kubernetescrd
2025-01-29T02:40:43Z DBG github.com/traefik/traefik/v3/pkg/middlewares/observability/middleware.go:33 > Adding tracing to middleware entryPointName=websecure middlewareName=metrics-service routerName=traefik-traefik-ese-companion-92445dfb511e72effd77@kubernetescrd serviceName=traefik-traefik-ese-companion-92445dfb511e72effd77@kubernetescrd
2025-01-29T02:40:43Z DBG github.com/traefik/traefik/v3/pkg/server/service/service.go:313 > Creating load-balancer entryPointName=websecure routerName=traefik-traefik-control-centre-99d177e47913e833b985@kubernetescrd serviceName=traefik-traefik-control-centre-99d177e47913e833b985@kubernetescrd
2025-01-29T02:40:43Z DBG github.com/traefik/traefik/v3/pkg/server/service/service.go:350 > Creating server entryPointName=websecure routerName=traefik-traefik-control-centre-99d177e47913e833b985@kubernetescrd serverName=6e31dac0558f6cd3 serviceName=traefik-traefik-control-centre-99d177e47913e833b985@kubernetescrd target=http://xxx:1234
2025-01-29T02:40:43Z DBG github.com/traefik/traefik/v3/pkg/middlewares/metrics/metrics.go:82 > Creating middleware entryPointName=websecure middlewareName=metrics-service middlewareType=Metrics routerName=traefik-traefik-control-centre-99d177e47913e833b985@kubernetescrd serviceName=traefik-traefik-control-centre-99d177e47913e833b985@kubernetescrd
2025-01-29T02:40:43Z DBG github.com/traefik/traefik/v3/pkg/middlewares/observability/middleware.go:33 > Adding tracing to middleware entryPointName=websecure middlewareName=metrics-service routerName=traefik-traefik-control-centre-99d177e47913e833b985@kubernetescrd serviceName=traefik-traefik-control-centre-99d177e47913e833b985@kubernetescrd
2025-01-29T02:40:43Z DBG github.com/traefik/traefik/v3/pkg/middlewares/stripprefix/strip_prefix.go:32 > Creating middleware entryPointName=websecure middlewareName=traefik-cc-middleware-strip@kubernetescrd middlewareType=StripPrefix routerName=traefik-traefik-control-centre-99d177e47913e833b985@kubernetescrd
2025-01-29T02:40:43Z DBG github.com/traefik/traefik/v3/pkg/middlewares/observability/middleware.go:33 > Adding tracing to middleware entryPointName=websecure middlewareName=traefik-cc-middleware-strip@kubernetescrd routerName=traefik-traefik-control-centre-99d177e47913e833b985@kubernetescrd
2025-01-29T02:40:43Z DBG github.com/traefik/traefik/v3/pkg/middlewares/metrics/metrics.go:50 > Creating middleware entryPointName=websecure middlewareName=metrics-entrypoint middlewareType=Metrics
2025-01-29T02:40:43Z DBG github.com/traefik/traefik/v3/pkg/middlewares/recovery/recovery.go:25 > Creating middleware entryPointName=websecure middlewareName=traefik-internal-recovery middlewareType=Recovery
2025-01-29T02:40:43Z DBG github.com/traefik/traefik/v3/pkg/middlewares/metrics/metrics.go:50 > Creating middleware entryPointName=traefik middlewareName=metrics-entrypoint middlewareType=Metrics
2025-01-29T02:40:43Z DBG github.com/traefik/traefik/v3/pkg/middlewares/metrics/metrics.go:50 > Creating middleware entryPointName=web middlewareName=metrics-entrypoint middlewareType=Metrics
2025-01-29T02:40:43Z DBG github.com/traefik/traefik/v3/pkg/middlewares/metrics/metrics.go:50 > Creating middleware entryPointName=metrics middlewareName=metrics-entrypoint middlewareType=Metrics
2025-01-29T02:40:43Z DBG github.com/traefik/traefik/v3/pkg/middlewares/metrics/metrics.go:50 > Creating middleware entryPointName=mqtt middlewareName=metrics-entrypoint middlewareType=Metrics
2025-01-29T02:40:43Z DBG github.com/traefik/traefik/v3/pkg/server/router/tcp/manager.go:237 > Adding route for xxx with TLS options default entryPointName=websecure
2025-01-29T02:40:55Z DBG github.com/traefik/traefik/v3/pkg/provider/kubernetes/ingress/kubernetes.go:185 > Skipping Kubernetes event kind *v1.Node providerName=kubernetes
2025-01-29T02:40:55Z DBG github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/kubernetes_http.go:648 > No secret name provided providerName=kubernetescrd
2025-01-29T02:40:55Z DBG github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/kubernetes_http.go:648 > No secret name provided providerName=kubernetescrd
2025-01-29T02:40:55Z DBG github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/kubernetes_http.go:648 > No secret name provided providerName=kubernetescrd
2025-01-29T02:40:55Z DBG github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/kubernetes.go:179 > Skipping Kubernetes event kind *v1.Node providerName=kubernetescrd
2025-01-29T02:41:31Z DBG github.com/traefik/traefik/v3/pkg/provider/kubernetes/ingress/kubernetes.go:185 > Skipping Kubernetes event kind *v1.Node providerName=kubernetes
2025-01-29T02:41:31Z DBG github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/kubernetes_http.go:648 > No secret name provided providerName=kubernetescrd
2025-01-29T02:41:31Z DBG github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/kubernetes_http.go:648 > No secret name provided providerName=kubernetescrd
2025-01-29T02:41:31Z DBG github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/kubernetes_http.go:648 > No secret name provided providerName=kubernetescrd
2025-01-29T02:41:31Z DBG github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/kubernetes.go:179 > Skipping Kubernetes event kind *v1.Node providerName=kubernetescrd
2025-01-29T02:41:35Z DBG github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/kubernetes_http.go:648 > No secret name provided providerName=kubernetescrd
2025-01-29T02:41:35Z DBG github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/kubernetes_http.go:648 > No secret name provided providerName=kubernetescrd
2025-01-29T02:41:35Z DBG github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/kubernetes_http.go:648 > No secret name provided providerName=kubernetescrd
2025-01-29T02:41:35Z DBG github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/kubernetes.go:179 > Skipping Kubernetes event kind *v1.Node providerName=kubernetescrd
2025-01-29T02:41:35Z DBG github.com/traefik/traefik/v3/pkg/provider/kubernetes/ingress/kubernetes.go:185 > Skipping Kubernetes event kind *v1.Node providerName=kubernetes
2025-01-29T02:42:01Z DBG github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/kubernetes_http.go:648 > No secret name provided providerName=kubernetescrd
2025-01-29T02:42:01Z DBG github.com/traefik/traefik/v3/pkg/provider/kubernetes/ingress/kubernetes.go:185 > Skipping Kubernetes event kind *v1.Node providerName=kubernetes

Yet I don't see TCP ingress route configuration in logs or dashboard. Please help

Hey @bluepuma77,

I also tried removing IngressRouteTCP and add the below given arguments in the helm chart. Still, I don't think traefik is recognising the tcp configurations

  - "traefik.tcp.routers.router-broker-mqtt-tls.entrypoints" : "mqtt"
  - "traefik.tcp.routers.router-broker-mqtt-tls.service" : "mqtt-tls"
  - "traefik.tcp.routers.router-broker-mqtt-tls.tls" : "true"
  - "traefik.tcp.routers.router-broker-mqtt-tls.tls.passthrough" : "true"
  - "traefik.tcp.routers.router-broker-mqtt-tls.tls.secretName" : "hivemq-creds"
  - "traefik.tcp.services.mqtt-tls.loadbalancer.server.port" : "8883"
  - "traefik.tcp.routers.router-broker-mqtt-tls.rule" : "HostSNI(`*`)"

Do I have to enable IngressRouteTCP explicitly? I have the CRDs created as well