aws-application-networking-k8s icon indicating copy to clipboard operation
aws-application-networking-k8s copied to clipboard

Lattice Target Group only supports single stack IP addresses

Open olobrian opened this issue 8 months ago • 1 comments

When trying to install and configure an httproute with the AWS gateway controller I'm getting the error:

Failed build model due to failed to build rules due to buildTargetGroupSpec err Lattice Target Group only supports single stack IP addresses

I haven't found other issues containing this error and I'm confused where I'm going wrong after trying to follow the installation docs.

Here are the debug logs for my controller:

{"level":"debug","ts":"2025-04-11T19:26:06.423Z","logger":"runtime.events","caller":"record/event.go:418","msg":"Adding/Updating Reconcile","type":"Normal","object":{"kind":"HTTPRoute","namespace":"default","name":"api-dev3-redacted-httproute","uid":"609e0a06-aa23-4f01-bc9c-b6c903e3d0da","apiVersion":"gateway.networking.k8s.io/v1","resourceVersion":"25953912"},"reason":"Reconcile"}
{"level":"info","ts":"2025-04-11T19:26:06.436Z","logger":"controller.route","caller":"gateway/model_build_lattice_service.go:137","msg":"Setting customer-domain-name: api.dev3.dev.internal.redacted.com for route api-dev3-redacted-httproute-default","trace_id":"54a273b0-9e6f-4bf9-8164-03ff13183600"}
{"level":"debug","ts":"2025-04-11T19:26:06.436Z","logger":"controller.route","caller":"gateway/model_build_lattice_service.go:156","msg":"Added service api-dev3-redacted-htt-default to the stack (ID api-dev3-redacted-htt-default)","trace_id":"54a273b0-9e6f-4bf9-8164-03ff13183600"}
{"level":"debug","ts":"2025-04-11T19:26:06.436Z","logger":"controller.route","caller":"gateway/model_build_listener.go:28","msg":"Building Listener for Route api-dev3-redacted-httproute-default","trace_id":"54a273b0-9e6f-4bf9-8164-03ff13183600"}
{"level":"debug","ts":"2025-04-11T19:26:06.436Z","logger":"controller.route","caller":"gateway/model_build_listener.go:119","msg":"Added listener api-dev3-redacted-httproute-default to the stack (ID id-1ba52612f64e84211f67a7df38c58915a3257eacd59e88a498516712fce79c8a)","trace_id":"54a273b0-9e6f-4bf9-8164-03ff13183600"}
{"level":"debug","ts":"2025-04-11T19:26:06.436Z","logger":"controller.route","caller":"gateway/model_build_lattice_service.go:87","msg":"Building rules for 1 listeners","trace_id":"54a273b0-9e6f-4bf9-8164-03ff13183600"}
{"level":"debug","ts":"2025-04-11T19:26:06.436Z","logger":"controller.route","caller":"gateway/model_build_rule.go:33","msg":"Processing 1 rules","trace_id":"54a273b0-9e6f-4bf9-8164-03ff13183600"}
{"level":"debug","ts":"2025-04-11T19:26:06.436Z","logger":"controller.route","caller":"gateway/model_build_rule.go:45","msg":"Processing rule match","trace_id":"54a273b0-9e6f-4bf9-8164-03ff13183600"}
{"level":"debug","ts":"2025-04-11T19:26:06.436Z","logger":"controller.route","caller":"gateway/model_build_rule.go:109","msg":"Examining pathmatch type PathPrefix value / for for httproute api-dev3-redacted-httproute-default "}
{"level":"debug","ts":"2025-04-11T19:26:06.436Z","logger":"controller.route","caller":"gateway/model_build_rule.go:119","msg":"Using PathMatchPathPrefix for httproute api-dev3-redacted-httproute-default "}
{"level":"debug","ts":"2025-04-11T19:26:06.436Z","logger":"controller.route","caller":"gateway/model_build_rule.go:226","msg":"Processing Service backendRef api-dev3-redacted-service-default","trace_id":"54a273b0-9e6f-4bf9-8164-03ff13183600"}
{"level":"debug","ts":"2025-04-11T19:26:06.436Z","logger":"controller.route","caller":"gateway/model_build_targetgroup.go:290","msg":"buildTargetGroupSpec, kind Service","trace_id":"54a273b0-9e6f-4bf9-8164-03ff13183600"}
{"level":"info","ts":"2025-04-11T19:26:06.436Z","logger":"controller.route","caller":"controllers/route_controller.go:291","msg":"buildAndDeployModel, Failed build model for api-dev3-redacted-httproute due to failed to build rules due to buildTargetGroupSpec err Lattice Target Group only supports single stack IP addresses","trace_id":"54a273b0-9e6f-4bf9-8164-03ff13183600"}
{"level":"info","ts":"2025-04-11T19:26:06.436Z","logger":"controller.route","caller":"controllers/route_controller.go:162","msg":"reconcile error","name":"api-dev3-redacted-httproute","message":"failed to build rules due to buildTargetGroupSpec err Lattice Target Group only supports single stack IP addresses","trace_id":"54a273b0-9e6f-4bf9-8164-03ff13183600"}
{"level":"info","ts":"2025-04-11T19:26:06.436Z","logger":"controller.route","caller":"gwlog/metadata.go:82","msg":"reconcile_end","type":"route","name":"api-dev3-redacted-httproute","namespace":"default","trace_id":"54a273b0-9e6f-4bf9-8164-03ff13183600"}
{"level":"debug","ts":"2025-04-11T19:26:06.436Z","logger":"runtime.events","caller":"record/event.go:418","msg":"Failed build model due to failed to build rules due to buildTargetGroupSpec err Lattice Target Group only supports single stack IP addresses","type":"Warning","object":{"kind":"HTTPRoute","namespace":"default","name":"api-dev3-redacted-httproute","uid":"609e0a06-aa23-4f01-bc9c-b6c903e3d0da","apiVersion":"gateway.networking.k8s.io/v1","resourceVersion":"25954124"},"reason":"FailedBuildModel"}

My gateway:

kind: Gateway
metadata:
  creationTimestamp: "2025-04-11T19:17:45Z"
  finalizers:
  - gateway.k8s.aws/resources
  generation: 1
  name: dev-test
  namespace: default
  resourceVersion: "25952854"
  uid: 548112d6-45cd-403c-a403-806f6a53a26c
spec:
  gatewayClassName: amazon-vpc-lattice
  listeners:
  - allowedRoutes:
      namespaces:
        from: Same
    name: http
    port: 80
    protocol: HTTP

My gatewayclass:

apiVersion: gateway.networking.k8s.io/v1
kind: GatewayClass
metadata:
  creationTimestamp: "2025-04-11T18:08:59Z"
  generation: 1
  name: amazon-vpc-lattice
  resourceVersion: "25952838"
  uid: fd9a66c9-7b33-4280-a41c-ec6d1b2ec182
spec:
  controllerName: application-networking.k8s.aws/gateway-api-controller

My httproute:

apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
  creationTimestamp: "2025-04-11T19:00:23Z"
  finalizers:
  - httproute.k8s.aws/resources
  generation: 3
  name: api-dev
  namespace: default
  resourceVersion: "25958851"
  uid: 583091f0-6a01-480e-bf84-d64b4e67b0a6
spec:
  hostnames:
  - api.dev1.dev.internal.redacted.com
  parentRefs:
  - group: gateway.networking.k8s.io
    kind: Gateway
    name: dev-test
    namespace: default
    port: 80
  rules:
  - backendRefs:
    - group: ""
      kind: Service
      name: api-dev1-redacted-service
      port: 8080
      weight: 1
    matches:
    - path:
        type: PathPrefix
        value: /

The docs don't say anything about creating target groups, but I don't really understand VPC lattices quite yet.

I only use IPv4 in this cluster, but I'm open to debugging ideas or commands I can run to provide more info!

Would anyone be able to help me learn more?

olobrian avatar Apr 11 '25 19:04 olobrian

A service maps to a VPC Lattice target group. This line validates the service spec and if there is not a single IP family, the error you are seeing is thrown. Is it possible the service you are providing is not SingleStack?

rlymbur avatar Jun 19 '25 21:06 rlymbur