Traefik IngressRouteTCP with eks and nlb not working

I have a TCP application that I am trying to deploy in the EKS cluster with an NLB load-balancer. I followed the Document and I created IngressRouteTCP even though I can not see the TCP server is working

step1: Deployed traefik via helm chart with the following values


ingressRoute:
 dashboard:
   enabled: true
providers:
 kubernetesCRD:
   enabled: true
   allowCrossNamespace: false
   allowExternalNameServices: false
 kubernetesIngress:
   enabled: true
   allowExternalNameServices: true
   allowEmptyServices: true
   publishedService:
     enabled: false
logs:
 general:
   level: DEBUG
 
dashboard:
 enable: true
additionalArguments:
 - "--log.level=DEBUG"
 
ports:
 traefik:
   port: 9000
   expose: false
   exposedPort: 9000
   protocol: TCP
 web:
   port: 8000
   expose: true
   exposedPort: 80
   protocol: TCP
 websecure:
   port: 8443
   expose: true
   exposedPort: 443
   protocol: TCP
service:
 enabled: true
 type: LoadBalancer
 annotations:
   service.beta.kubernetes.io/aws-load-balancer-type: "nlb"

Output of step1

CHART
traefik-10.24.0

APP VERSION
2.8.0

NLB was created and it's able to send HTTP requests to traefik but not TCP

Please note First tested a simple echo TCP application with port forwarding in EKS, and it was successful.

ECHO server manifest and ingress

# from https://raw.githubusercontent.com/istio/istio/master/samples/tcp-echo/tcp-echo-services.yaml
apiVersion: v1
kind: Service
metadata:
  name: tcp-echo
  labels:
    app: tcp-echo
    service: tcp-echo
spec:
  ports:
  - name: tcp
    port: 9000
  - name: tcp-other
    port: 9001
  # Port 9002 is omitted intentionally for testing the pass through filter chain.
  selector:
    app: tcp-echo
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: tcp-echo-v1
  labels:
    app: tcp-echo
    version: v1
spec:
  replicas: 1
  selector:
    matchLabels:
      app: tcp-echo
      version: v1
  template:
    metadata:
      labels:
        app: tcp-echo
        version: v1
    spec:
      containers:
      - name: tcp-echo
        image: docker.io/istio/tcp-echo-server:1.2
        imagePullPolicy: IfNotPresent
        args: [ "9000,9001,9002", "one" ]
        ports:
        - containerPort: 9000
        - containerPort: 9001
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: tcp-echo-v2
  labels:
    app: tcp-echo
    version: v2
spec:
  replicas: 1
  selector:
    matchLabels:
      app: tcp-echo
      version: v2
  template:
    metadata:
      labels:
        app: tcp-echo
        version: v2
    spec:
      containers:
      - name: tcp-echo
        image: docker.io/istio/tcp-echo-server:1.2
        imagePullPolicy: IfNotPresent
        args: [ "9000,9001,9002", "two" ]
        ports:
        - containerPort: 9000
        - containerPort: 9001
---
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRouteTCP
metadata:
  name: echotcp
spec:
  entryPoints:                      
    - web
  routes:                           
  - match: HostSNI(`*`) 
    services:                       
    - name: tcp-echo
      port: 9000 
---
  • What mistake I am doing here?
  • My expectation is along with HTTP and HTTPS port my TCP server server should be working