Description
Describe the bug
`I am playing around the gateway fabric and trying to configure tracing for my applications. With one application, the configuration worked fine. But with two applications in two different namespaces, I am getting:
ObservabilityPolicy for app1 is complaining app2:
Message: Policy cannot be applied to target "app2/app2" since another Route "app2/app2" shares a hostname:port/path combination with this target
Observed Generation: 2
Reason: TargetConflict
ObservabilityPolicy for app2 is complaining app1:
Message: Policy cannot be applied to target "app1/app1" since another Route "app1/app1" shares a hostname:port/path combination with this target
Observed Generation: 1
Reason: TargetConflict
`
To Reproduce
Steps to reproduce the behavior:
- HTTPToutes:
`apiVersion: v1
items:
- apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
creationTimestamp: "2025-05-14T21:04:22Z"
generation: 12
name: app1
namespace: app1
resourceVersion: "60634620"
uid: 823cfaf9-9306-403c-abde-532430422792
spec:
hostnames:- app1.playground.testapis.net
parentRefs: - group: gateway.networking.k8s.io
kind: Gateway
name: central-gateway
namespace: nginx-gateway
rules: - backendRefs:
- group: ""
kind: Service
name: app1
namespace: app1
port: 50080
weight: 1
filters: - extensionRef:
group: gateway.nginx.org
kind: SnippetsFilter
name: app1-logging
type: ExtensionRef - extensionRef:
group: gateway.nginx.org
kind: SnippetsFilter
name: app1-ratelimit
type: ExtensionRef
matches: - path:
type: PathPrefix
value: /
status:
parents:
- group: ""
- conditions:
- lastTransitionTime: "2025-05-23T14:05:58Z"
message: The route is accepted
observedGeneration: 12
reason: Accepted
status: "True"
type: Accepted - lastTransitionTime: "2025-05-23T14:05:58Z"
message: All references are resolved
observedGeneration: 12
reason: ResolvedRefs
status: "True"
type: ResolvedRefs
controllerName: gateway.nginx.org/nginx-gateway-controller
parentRef:
group: gateway.networking.k8s.io
kind: Gateway
name: central-gateway
namespace: nginx-gateway
- lastTransitionTime: "2025-05-23T14:05:58Z"
- app1.playground.testapis.net
- apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
creationTimestamp: "2025-05-23T13:47:37Z"
generation: 2
name: app2
namespace: app2
resourceVersion: "60634618"
uid: c975562d-7241-43cb-9bba-b22bb2e0a3cc
spec:
hostnames:- app2.playground.testapis.net
parentRefs: - group: gateway.networking.k8s.io
kind: Gateway
name: central-gateway
namespace: nginx-gateway
rules: - backendRefs:
- group: ""
kind: Service
name: app2
namespace: app2
port: 51080
weight: 1
filters: - extensionRef:
group: gateway.nginx.org
kind: SnippetsFilter
name: app2-logging
type: ExtensionRef
matches: - path:
type: PathPrefix
value: /
status:
parents:
- group: ""
- conditions:
- lastTransitionTime: "2025-05-23T14:05:58Z"
message: The route is accepted
observedGeneration: 2
reason: Accepted
status: "True"
type: Accepted - lastTransitionTime: "2025-05-23T14:05:58Z"
message: All references are resolved
observedGeneration: 2
reason: ResolvedRefs
status: "True"
type: ResolvedRefs
controllerName: gateway.nginx.org/nginx-gateway-controller
parentRef:
group: gateway.networking.k8s.io
kind: Gateway
name: central-gateway
namespace: nginx-gateway`
- lastTransitionTime: "2025-05-23T14:05:58Z"
- app2.playground.testapis.net
ObservabilityPolicy configs:
`apiVersion: v1
items:
- apiVersion: gateway.nginx.org/v1alpha2
kind: ObservabilityPolicy
metadata:
creationTimestamp: "2025-05-22T18:23:49Z"
generation: 2
name: app1-observability
namespace: app1
resourceVersion: "60627544"
uid: 241ba77f-7860-4bb7-832e-32e393ced533
spec:
targetRefs:- group: gateway.networking.k8s.io
kind: HTTPRoute
name: app1
tracing:
ratio: 100
spanAttributes:- key: app1
value: app1
strategy: ratio
status:
ancestors:
- key: app1
- ancestorRef:
group: gateway.networking.k8s.io
kind: HTTPRoute
name: app1
namespace: app1
conditions:- lastTransitionTime: "2025-05-23T13:47:37Z"
message: Policy cannot be applied to target "app2/app2" since another Route
"app2/app2" shares a hostname:port/path combination with this target
observedGeneration: 2
reason: TargetConflict
status: "False"
type: Accepted
controllerName: gateway.nginx.org/nginx-gateway-controller
- lastTransitionTime: "2025-05-23T13:47:37Z"
- group: gateway.networking.k8s.io
- apiVersion: gateway.nginx.org/v1alpha2
kind: ObservabilityPolicy
metadata:
creationTimestamp: "2025-05-23T14:30:03Z"
generation: 1
name: app2-observability
namespace: app2
resourceVersion: "60643831"
uid: cdd669f5-17dc-43f8-91a0-8966cc1bad83
spec:
targetRefs:- group: gateway.networking.k8s.io
kind: HTTPRoute
name: app2
tracing:
ratio: 100
spanAttributes:- key: app2
value: app2
strategy: ratio
status:
ancestors:
- key: app2
- ancestorRef:
group: gateway.networking.k8s.io
kind: HTTPRoute
name: app2
namespace: app2
conditions:- lastTransitionTime: "2025-05-23T14:30:04Z"
message: Policy cannot be applied to target "app1/app1" since another Route
"app1/app1" shares a hostname:port/path combination with this target
observedGeneration: 1
reason: TargetConflict
status: "False"
type: Accepted
controllerName: gateway.nginx.org/nginx-gateway-controller
kind: List
metadata:
resourceVersion: ""`
- lastTransitionTime: "2025-05-23T14:30:04Z"
- group: gateway.networking.k8s.io
Your environment
- Version of the NGINX Gateway Fabric - release version or a specific commit. The first line of the nginx-gateway container logs includes the commit info.
{"level":"info","ts":"2025-05-23T13:00:37Z","msg":"Starting NGINX Gateway Fabric in static mode","version":"1.6.2","commit":"532db6a20b2912fe397211eef9f8d564d46a4bdd","date":"2025-03-11T17:28:32Z","dirty":"false"}
- Version of Kubernetes
Kustomize Version: v5.0.4-0.20230601165947-6ce0bf390ce3 Server Version: v1.31.8
- Kubernetes platform: AKS
- Details on how you expose the NGINX Gateway Fabric Pod (e.g. Service of type LoadBalancer or port-forward)
- Logs of NGINX container:
kubectl -n <nginx-deployment-namespace> logs deployments/<nginx-deployment>
- NGINX Configuration:
kubectl -n <nginx-deployment-namespace> exec -it deployments/<nginx-deployment> -- nginx -T
Additional context
Following section was injected in http.conf file:
`otel_exporter {
⤑ endpoint opentelemetry-collector-i.estapis.net:4317;
}
otel_service_name ngf:nginx-gateway:central-gateway;
split_clients $otel_trace_id $otel_ratio_100 {
⤑ 100% on;
⤑ * off;
}`
Metadata
Metadata
Assignees
Labels
Type
Projects
Status