Q: how to configure httproute with consul apigateway for statefulset?

I’m trying to expose a service with sts as backends through consul api-gateway.
The httproute looks like below(Note: the service is NOT headless):

apiVersion: gateway.networking.k8s.io/v1beta1
kind: HTTPRoute
metadata:
  name: route-web
  namespace: default
spec:
  parentRefs:
  - name: api-gateway
    namespace: default
  rules:
  - matches:
    - path:
        type: PathPrefix
        value: /web
    backendRefs:
    - name: web
      namespace: default
      port: 80

After creation, I can see the debug log in api-gateway pod that those endpoints were added:

2025-03-20T10:29:53.368Z+00:00 [debug] envoy.upstream(17) initializing Secondary cluster web-0.web.default.dc1.internal.bdba5437-e105-7b01-0e46-7b94aabbca88.consul completed
2025-03-20T10:29:53.368Z+00:00 [debug] envoy.upstream(17) warming cluster web-0.web.default.dc1.internal.bdba5437-e105-7b01-0e46-7b94aabbca88.consul complete
2025-03-20T10:29:53.368Z+00:00 [debug] envoy.upstream(24) adding TLS cluster web-0.web.default.dc1.internal.bdba5437-e105-7b01-0e46-7b94aabbca88.consul
2025-03-20T10:29:53.369Z+00:00 [debug] envoy.upstream(24) membership update for TLS cluster web-0.web.default.dc1.internal.bdba5437-e105-7b01-0e46-7b94aabbca88.consul added 1 removed 0
2025-03-20T10:29:53.369Z+00:00 [debug] envoy.upstream(17) adding TLS cluster web-0.web.default.dc1.internal.bdba5437-e105-7b01-0e46-7b94aabbca88.consul
2025-03-20T10:29:53.369Z+00:00 [debug] envoy.upstream(17) membership update for TLS cluster web-0.web.default.dc1.internal.bdba5437-e105-7b01-0e46-7b94aabbca88.consul added 1 removed 0
2025-03-20T10:29:53.369Z+00:00 [debug] envoy.upstream(17) EDS hosts or locality weights changed for cluster: web-2.web.default.dc1.internal.bdba5437-e105-7b01-0e46-7b94aabbca88.consul current hosts 0 priority 0
2025-03-20T10:29:53.369Z+00:00 [debug] envoy.upstream(17) initializing Secondary cluster web-2.web.default.dc1.internal.bdba5437-e105-7b01-0e46-7b94aabbca88.consul completed
2025-03-20T10:29:53.369Z+00:00 [debug] envoy.upstream(17) warming cluster web-2.web.default.dc1.internal.bdba5437-e105-7b01-0e46-7b94aabbca88.consul complete
2025-03-20T10:29:53.369Z+00:00 [debug] envoy.upstream(24) adding TLS cluster web-2.web.default.dc1.internal.bdba5437-e105-7b01-0e46-7b94aabbca88.consul
2025-03-20T10:29:53.369Z+00:00 [debug] envoy.upstream(24) membership update for TLS cluster web-2.web.default.dc1.internal.bdba5437-e105-7b01-0e46-7b94aabbca88.consul added 1 removed 0
2025-03-20T10:29:53.369Z+00:00 [debug] envoy.upstream(17) adding TLS cluster web-2.web.default.dc1.internal.bdba5437-e105-7b01-0e46-7b94aabbca88.consul
2025-03-20T10:29:53.369Z+00:00 [debug] envoy.upstream(17) membership update for TLS cluster web-2.web.default.dc1.internal.bdba5437-e105-7b01-0e46-7b94aabbca88.consul added 1 removed 0
2025-03-20T10:29:53.369Z+00:00 [debug] envoy.upstream(17) EDS hosts or locality weights changed for cluster: web-1.web.default.dc1.internal.bdba5437-e105-7b01-0e46-7b94aabbca88.consul current hosts 0 priority 0
2025-03-20T10:29:53.369Z+00:00 [debug] envoy.upstream(17) initializing Secondary cluster web-1.web.default.dc1.internal.bdba5437-e105-7b01-0e46-7b94aabbca88.consul completed
2025-03-20T10:29:53.369Z+00:00 [debug] envoy.upstream(17) warming cluster web-1.web.default.dc1.internal.bdba5437-e105-7b01-0e46-7b94aabbca88.consul complete
2025-03-20T10:29:53.370Z+00:00 [debug] envoy.upstream(24) adding TLS cluster web-1.web.default.dc1.internal.bdba5437-e105-7b01-0e46-7b94aabbca88.consul
2025-03-20T10:29:53.370Z+00:00 [debug] envoy.upstream(24) membership update for TLS cluster web-1.web.default.dc1.internal.bdba5437-e105-7b01-0e46-7b94aabbca88.consul added 1 removed 0

But when I try to access them through api-gateway, it return 503:

curl <hostnames>/web -v
...
< HTTP/1.1 503 Service Unavailable
...

and api-gateway shows:

2025-03-20T10:59:34.712Z+00:00 [debug] envoy.router(24) [Tags: "ConnectionId":"794","StreamId":"14524182312023257848"] unknown cluster 'web.default.dc1.internal.bdba5437-e105-7b01-0e46-7b94aabbca88.consul'
2025-03-20T10:59:37.086Z+00:00 [debug] envoy.router(24) [Tags: "ConnectionId":"790","StreamId":"14889386892784192465"] unknown cluster 'web.default.dc1.internal.bdba5437-e105-7b01-0e46-7b94aabbca88.consul'

I’ve tried to create backends of service as deployment, it works fine.
So I guess it require a different configuration for sts. Does anyone know what it would be look like?