From ca1f2ab96abc3683ef816faa8bfc7290e7c9e4c2 Mon Sep 17 00:00:00 2001 From: zirain Date: Mon, 23 Jun 2025 16:30:05 +0800 Subject: [PATCH] fix: use buildEndpointType for access and tracing Signed-off-by: zirain --- .../envoyproxy-tracing-backend-uds.in.yaml | 119 ++++++++ .../envoyproxy-tracing-backend-uds.out.yaml | 282 ++++++++++++++++++ internal/xds/translator/accesslog.go | 4 +- .../testdata/in/xds-ir/accesslog-cel.yaml | 3 +- .../in/xds-ir/accesslog-endpoint-stats.yaml | 1 + .../in/xds-ir/accesslog-formatters.yaml | 1 + .../in/xds-ir/accesslog-multi-cel.yaml | 1 + .../testdata/in/xds-ir/accesslog-types.yaml | 3 + .../in/xds-ir/accesslog-with-format.yaml | 1 + .../testdata/in/xds-ir/accesslog.yaml | 1 + .../testdata/in/xds-ir/dns-lookup-family.yaml | 13 +- .../in/xds-ir/tracing-datadog-uds.yaml | 50 ++++ .../testdata/in/xds-ir/tracing-datadog.yaml | 1 + .../in/xds-ir/tracing-endpoint-stats.yaml | 1 + .../testdata/in/xds-ir/tracing-zipkin.yaml | 1 + .../testdata/in/xds-ir/tracing.yaml | 1 + .../xds-ir/dns-lookup-family.clusters.yaml | 19 +- .../xds-ir/tracing-datadog-uds.clusters.yaml | 34 +++ .../xds-ir/tracing-datadog-uds.endpoints.yaml | 23 ++ .../xds-ir/tracing-datadog-uds.listeners.yaml | 60 ++++ .../xds-ir/tracing-datadog-uds.routes.yaml | 14 + internal/xds/translator/tracing.go | 3 +- 22 files changed, 626 insertions(+), 10 deletions(-) create mode 100644 internal/gatewayapi/testdata/envoyproxy-tracing-backend-uds.in.yaml create mode 100644 internal/gatewayapi/testdata/envoyproxy-tracing-backend-uds.out.yaml create mode 100644 internal/xds/translator/testdata/in/xds-ir/tracing-datadog-uds.yaml create mode 100644 internal/xds/translator/testdata/out/xds-ir/tracing-datadog-uds.clusters.yaml create mode 100644 internal/xds/translator/testdata/out/xds-ir/tracing-datadog-uds.endpoints.yaml create mode 100644 internal/xds/translator/testdata/out/xds-ir/tracing-datadog-uds.listeners.yaml create mode 100644 internal/xds/translator/testdata/out/xds-ir/tracing-datadog-uds.routes.yaml diff --git a/internal/gatewayapi/testdata/envoyproxy-tracing-backend-uds.in.yaml b/internal/gatewayapi/testdata/envoyproxy-tracing-backend-uds.in.yaml new file mode 100644 index 0000000000..f6ed2988fb --- /dev/null +++ b/internal/gatewayapi/testdata/envoyproxy-tracing-backend-uds.in.yaml @@ -0,0 +1,119 @@ +envoyProxyForGatewayClass: + apiVersion: gateway.envoyproxy.io/v1alpha1 + kind: EnvoyProxy + metadata: + namespace: envoy-gateway-system + name: test + spec: + telemetry: + tracing: + samplingRate: 100 + provider: + backendSettings: + http2: + initialStreamWindowSize: 128Ki + initialConnectionWindowSize: 2Mi + maxConcurrentStreams: 200 + onInvalidMessage: TerminateStream + loadBalancer: + type: ConsistentHash + consistentHash: + type: Header + header: + name: X-some-header + proxyProtocol: + version: V2 + tcpKeepalive: + probes: 7 + healthCheck: + passive: + consecutiveGatewayErrors: 4 + interval: 5s + circuitBreaker: + maxConnections: 2048 + timeout: + tcp: + connectTimeout: 15s + connection: + bufferLimit: 20Mi + backendRefs: + - group: gateway.envoyproxy.io + kind: Backend + name: datadog-svc + namespace: envoy-gateway-system + port: 8126 + type: OpenTelemetry + provider: + type: Kubernetes + kubernetes: + envoyService: + type: LoadBalancer + envoyDeployment: + replicas: 2 + container: + env: + - name: env_a + value: env_a_value + - name: env_b + value: env_b_name + image: "envoyproxy/envoy:distroless-dev" + resources: + requests: + cpu: 100m + memory: 512Mi + securityContext: + runAsUser: 2000 + allowPrivilegeEscalation: false + pod: + annotations: + key1: val1 + key2: val2 + affinity: + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: cloud.google.com/gke-nodepool + operator: In + values: + - router-node + tolerations: + - effect: NoSchedule + key: node-type + operator: Exists + value: "router" + securityContext: + runAsUser: 1000 + runAsGroup: 3000 + fsGroup: 2000 + fsGroupChangePolicy: "OnRootMismatch" + volumes: + - name: certs + secret: + secretName: envoy-cert +gateways: + - apiVersion: gateway.networking.k8s.io/v1 + kind: Gateway + metadata: + namespace: envoy-gateway + name: gateway-1 + spec: + gatewayClassName: envoy-gateway-class + listeners: + - name: http + protocol: HTTP + port: 80 + allowedRoutes: + namespaces: + from: Same +backends: + - apiVersion: gateway.envoyproxy.io/v1alpha1 + kind: Backend + metadata: + name: datadog-svc + namespace: envoy-gateway-system + spec: + endpoints: + - unix: + path: /var/run/envoy-uds/dsd.socket + type: Endpoints diff --git a/internal/gatewayapi/testdata/envoyproxy-tracing-backend-uds.out.yaml b/internal/gatewayapi/testdata/envoyproxy-tracing-backend-uds.out.yaml new file mode 100644 index 0000000000..b797b32849 --- /dev/null +++ b/internal/gatewayapi/testdata/envoyproxy-tracing-backend-uds.out.yaml @@ -0,0 +1,282 @@ +backends: +- apiVersion: gateway.envoyproxy.io/v1alpha1 + kind: Backend + metadata: + creationTimestamp: null + name: datadog-svc + namespace: envoy-gateway-system + spec: + endpoints: + - unix: + path: /var/run/envoy-uds/dsd.socket + type: Endpoints + status: + conditions: + - lastTransitionTime: null + message: The Backend was accepted + reason: Accepted + status: "True" + type: Accepted +gateways: +- apiVersion: gateway.networking.k8s.io/v1 + kind: Gateway + metadata: + creationTimestamp: null + name: gateway-1 + namespace: envoy-gateway + spec: + gatewayClassName: envoy-gateway-class + listeners: + - allowedRoutes: + namespaces: + from: Same + name: http + port: 80 + protocol: HTTP + status: + listeners: + - attachedRoutes: 0 + conditions: + - lastTransitionTime: null + message: Sending translated listener configuration to the data plane + reason: Programmed + status: "True" + type: Programmed + - lastTransitionTime: null + message: Listener has been successfully translated + reason: Accepted + status: "True" + type: Accepted + - lastTransitionTime: null + message: Listener references have been resolved + reason: ResolvedRefs + status: "True" + type: ResolvedRefs + name: http + supportedKinds: + - group: gateway.networking.k8s.io + kind: HTTPRoute + - group: gateway.networking.k8s.io + kind: GRPCRoute +infraIR: + envoy-gateway/gateway-1: + proxy: + config: + apiVersion: gateway.envoyproxy.io/v1alpha1 + kind: EnvoyProxy + metadata: + creationTimestamp: null + name: test + namespace: envoy-gateway-system + spec: + logging: {} + provider: + kubernetes: + envoyDeployment: + container: + env: + - name: env_a + value: env_a_value + - name: env_b + value: env_b_name + image: envoyproxy/envoy:distroless-dev + resources: + requests: + cpu: 100m + memory: 512Mi + securityContext: + allowPrivilegeEscalation: false + runAsUser: 2000 + pod: + affinity: + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: cloud.google.com/gke-nodepool + operator: In + values: + - router-node + annotations: + key1: val1 + key2: val2 + securityContext: + fsGroup: 2000 + fsGroupChangePolicy: OnRootMismatch + runAsGroup: 3000 + runAsUser: 1000 + tolerations: + - effect: NoSchedule + key: node-type + operator: Exists + value: router + volumes: + - name: certs + secret: + secretName: envoy-cert + replicas: 2 + envoyService: + type: LoadBalancer + type: Kubernetes + telemetry: + tracing: + provider: + backendRefs: + - group: gateway.envoyproxy.io + kind: Backend + name: datadog-svc + namespace: envoy-gateway-system + port: 8126 + backendSettings: + circuitBreaker: + maxConnections: 2048 + connection: + bufferLimit: 20Mi + healthCheck: + passive: + consecutiveGatewayErrors: 4 + interval: 5s + http2: + initialConnectionWindowSize: 2Mi + initialStreamWindowSize: 128Ki + maxConcurrentStreams: 200 + onInvalidMessage: TerminateStream + loadBalancer: + consistentHash: + header: + name: X-some-header + type: Header + type: ConsistentHash + proxyProtocol: + version: V2 + tcpKeepalive: + probes: 7 + timeout: + tcp: + connectTimeout: 15s + type: OpenTelemetry + samplingRate: 100 + status: {} + listeners: + - address: null + name: envoy-gateway/gateway-1/http + ports: + - containerPort: 10080 + name: http-80 + protocol: HTTP + servicePort: 80 + metadata: + labels: + gateway.envoyproxy.io/owning-gateway-name: gateway-1 + gateway.envoyproxy.io/owning-gateway-namespace: envoy-gateway + ownerReference: + kind: GatewayClass + name: envoy-gateway-class + name: envoy-gateway/gateway-1 + namespace: envoy-gateway-system +xdsIR: + envoy-gateway/gateway-1: + accessLog: + json: + - path: /dev/stdout + http: + - address: 0.0.0.0 + hostnames: + - '*' + isHTTP2: false + metadata: + kind: Gateway + name: gateway-1 + namespace: envoy-gateway + sectionName: http + name: envoy-gateway/gateway-1/http + path: + escapedSlashesAction: UnescapeAndRedirect + mergeSlashes: true + port: 10080 + readyListener: + address: 0.0.0.0 + ipFamily: IPv4 + path: /ready + port: 19003 + tracing: + destination: + metadata: + kind: EnvoyProxy + name: test + namespace: envoy-gateway-system + name: tracing + settings: + - addressType: IP + endpoints: + - host: "" + path: /var/run/envoy-uds/dsd.socket + port: 0 + metadata: + kind: Backend + name: datadog-svc + namespace: envoy-gateway-system + name: tracing/backend/-1 + protocol: TCP + provider: + backendRefs: + - group: gateway.envoyproxy.io + kind: Backend + name: datadog-svc + namespace: envoy-gateway-system + port: 8126 + backendSettings: + circuitBreaker: + maxConnections: 2048 + connection: + bufferLimit: 20Mi + healthCheck: + passive: + consecutiveGatewayErrors: 4 + interval: 5s + http2: + initialConnectionWindowSize: 2Mi + initialStreamWindowSize: 128Ki + maxConcurrentStreams: 200 + onInvalidMessage: TerminateStream + loadBalancer: + consistentHash: + header: + name: X-some-header + type: Header + type: ConsistentHash + proxyProtocol: + version: V2 + tcpKeepalive: + probes: 7 + timeout: + tcp: + connectTimeout: 15s + type: OpenTelemetry + samplingRate: 100 + serviceName: gateway-1.envoy-gateway + traffic: + backendConnection: + bufferLimit: 20971520 + circuitBreaker: + maxConnections: 2048 + healthCheck: + passive: + consecutiveGatewayErrors: 4 + interval: 5s + http2: + initialConnectionWindowSize: 131072 + initialStreamWindowSize: 2097152 + maxConcurrentStreams: 200 + resetStreamOnError: true + loadBalancer: + consistentHash: + header: + name: X-some-header + proxyProtocol: + version: V2 + tcpKeepalive: + probes: 7 + timeout: + tcp: + connectTimeout: 15s diff --git a/internal/xds/translator/accesslog.go b/internal/xds/translator/accesslog.go index 5473645b9d..e7cc253046 100644 --- a/internal/xds/translator/accesslog.go +++ b/internal/xds/translator/accesslog.go @@ -520,7 +520,7 @@ func processClusterForAccessLog(tCtx *types.ResourceVersionTable, al *ir.AccessL name: als.Destination.Name, settings: als.Destination.Settings, tSocket: nil, - endpointType: EndpointTypeStatic, + endpointType: buildEndpointType(als.Destination.Settings), loadBalancer: traffic.LoadBalancer, proxyProtocol: traffic.ProxyProtocol, circuitBreaker: traffic.CircuitBreaker, @@ -548,7 +548,7 @@ func processClusterForAccessLog(tCtx *types.ResourceVersionTable, al *ir.AccessL name: otel.Destination.Name, settings: otel.Destination.Settings, tSocket: nil, - endpointType: EndpointTypeDNS, + endpointType: buildEndpointType(otel.Destination.Settings), metrics: metrics, loadBalancer: traffic.LoadBalancer, proxyProtocol: traffic.ProxyProtocol, diff --git a/internal/xds/translator/testdata/in/xds-ir/accesslog-cel.yaml b/internal/xds/translator/testdata/in/xds-ir/accesslog-cel.yaml index aa6681dddc..5a22eccfd8 100644 --- a/internal/xds/translator/testdata/in/xds-ir/accesslog-cel.yaml +++ b/internal/xds/translator/testdata/in/xds-ir/accesslog-cel.yaml @@ -29,7 +29,8 @@ accesslog: destination: name: "accesslog-0" settings: - - endpoints: + - addressType: FQDN + endpoints: - host: "otel-collector.default.svc.cluster.local" port: 4317 protocol: "GRPC" diff --git a/internal/xds/translator/testdata/in/xds-ir/accesslog-endpoint-stats.yaml b/internal/xds/translator/testdata/in/xds-ir/accesslog-endpoint-stats.yaml index c9c4bc6085..17760201da 100644 --- a/internal/xds/translator/testdata/in/xds-ir/accesslog-endpoint-stats.yaml +++ b/internal/xds/translator/testdata/in/xds-ir/accesslog-endpoint-stats.yaml @@ -28,6 +28,7 @@ accesslog: - endpoints: - host: "otel-collector.default.svc.cluster.local" port: 4317 + addressType: FQDN protocol: "GRPC" name: "accesslog-0/backend/0" http: diff --git a/internal/xds/translator/testdata/in/xds-ir/accesslog-formatters.yaml b/internal/xds/translator/testdata/in/xds-ir/accesslog-formatters.yaml index 3deb3b589e..4f9893c566 100644 --- a/internal/xds/translator/testdata/in/xds-ir/accesslog-formatters.yaml +++ b/internal/xds/translator/testdata/in/xds-ir/accesslog-formatters.yaml @@ -36,6 +36,7 @@ accesslog: - endpoints: - host: "otel-collector.default.svc.cluster.local" port: 4317 + addressType: FQDN protocol: "GRPC" name: "accesslog-0/backend/0" http: diff --git a/internal/xds/translator/testdata/in/xds-ir/accesslog-multi-cel.yaml b/internal/xds/translator/testdata/in/xds-ir/accesslog-multi-cel.yaml index d1257878d0..989390b135 100644 --- a/internal/xds/translator/testdata/in/xds-ir/accesslog-multi-cel.yaml +++ b/internal/xds/translator/testdata/in/xds-ir/accesslog-multi-cel.yaml @@ -36,6 +36,7 @@ accesslog: - endpoints: - host: "otel-collector.default.svc.cluster.local" port: 4317 + addressType: FQDN protocol: "GRPC" name: "accesslog-0/backend/0" http: diff --git a/internal/xds/translator/testdata/in/xds-ir/accesslog-types.yaml b/internal/xds/translator/testdata/in/xds-ir/accesslog-types.yaml index e995f5a50c..93e038e10a 100644 --- a/internal/xds/translator/testdata/in/xds-ir/accesslog-types.yaml +++ b/internal/xds/translator/testdata/in/xds-ir/accesslog-types.yaml @@ -112,6 +112,7 @@ accessLog: - host: otel-collector.monitoring.svc.cluster.local port: 4317 protocol: GRPC + addressType: FQDN weight: 1 name: accesslog_otel_0_3/backend/0 logType: Route @@ -127,6 +128,7 @@ accessLog: - host: otel-collector.monitoring.svc.cluster.local port: 4317 protocol: GRPC + addressType: FQDN weight: 1 name: accesslog_otel_1_3/backend/0 logType: Listener @@ -142,6 +144,7 @@ accessLog: - host: otel-collector.monitoring.svc.cluster.local port: 4317 protocol: GRPC + addressType: FQDN weight: 1 name: accesslog_otel_2_3/backend/0 resources: diff --git a/internal/xds/translator/testdata/in/xds-ir/accesslog-with-format.yaml b/internal/xds/translator/testdata/in/xds-ir/accesslog-with-format.yaml index 5a7fba2ea5..915517dc73 100644 --- a/internal/xds/translator/testdata/in/xds-ir/accesslog-with-format.yaml +++ b/internal/xds/translator/testdata/in/xds-ir/accesslog-with-format.yaml @@ -45,6 +45,7 @@ accesslog: - endpoints: - host: "otel-collector.default.svc.cluster.local" port: 4317 + addressType: FQDN protocol: "GRPC" http: - name: "first-listener" diff --git a/internal/xds/translator/testdata/in/xds-ir/accesslog.yaml b/internal/xds/translator/testdata/in/xds-ir/accesslog.yaml index 7c8bcb91db..7b27237294 100644 --- a/internal/xds/translator/testdata/in/xds-ir/accesslog.yaml +++ b/internal/xds/translator/testdata/in/xds-ir/accesslog.yaml @@ -52,6 +52,7 @@ accesslog: - host: "otel-collector.default.svc.cluster.local" port: 4317 protocol: "GRPC" + addressType: FQDN name: "accesslog-0/backend/0" http: - name: "first-listener" diff --git a/internal/xds/translator/testdata/in/xds-ir/dns-lookup-family.yaml b/internal/xds/translator/testdata/in/xds-ir/dns-lookup-family.yaml index 82e8491aaa..9fcd42b86e 100644 --- a/internal/xds/translator/testdata/in/xds-ir/dns-lookup-family.yaml +++ b/internal/xds/translator/testdata/in/xds-ir/dns-lookup-family.yaml @@ -1,9 +1,14 @@ accessLog: openTelemetry: - destination: - name: accesslog_otel_0_1 + name: "accesslog_otel_0_1" settings: - - protocol: TCP + - endpoints: + - host: "otel-collector.default.svc.cluster.local" + port: 4317 + protocol: "GRPC" + addressType: FQDN + name: "accesslog-0/backend/0" resources: k8s.cluster.name: cluster-1 text: | @@ -19,7 +24,7 @@ accessLog: http: - address: 0.0.0.0 hostnames: - - '*' + - "*" isHTTP2: true metadata: kind: Gateway @@ -101,7 +106,7 @@ http: port: 8080 protocol: GRPC weight: 1 - hostname: '*' + hostname: "*" isHTTP2: true metadata: kind: GRPCRoute diff --git a/internal/xds/translator/testdata/in/xds-ir/tracing-datadog-uds.yaml b/internal/xds/translator/testdata/in/xds-ir/tracing-datadog-uds.yaml new file mode 100644 index 0000000000..694c99fd27 --- /dev/null +++ b/internal/xds/translator/testdata/in/xds-ir/tracing-datadog-uds.yaml @@ -0,0 +1,50 @@ +name: "tracing" +tracing: + serviceName: "fake-name.fake-ns" + samplingRate: 90 + customTags: + "literal1": + type: Literal + literal: + value: "value1" + "env1": + type: Environment + environment: + name: "env1" + defaultValue: "-" + "req1": + type: RequestHeader + requestHeader: + name: "X-Request-Id" + defaultValue: "-" + authority: "datadog-agent.default.svc.cluster.local" + destination: + name: "tracing-0" + settings: + - addressType: IP + endpoints: + - host: "" + path: /var/run/envoy-uds/dsd.socket + port: 0 + name: "tracing-0/backend/0" + provider: + type: Datadog +http: + - name: "first-listener" + address: "::" + port: 10080 + hostnames: + - "*" + path: + mergeSlashes: true + escapedSlashesAction: UnescapeAndRedirect + routes: + - name: "direct-route" + hostname: "*" + destination: + name: "direct-route-dest" + settings: + - endpoints: + - host: "1.2.3.4" + port: 50000 + name: "direct-route-dest/backend/0" diff --git a/internal/xds/translator/testdata/in/xds-ir/tracing-datadog.yaml b/internal/xds/translator/testdata/in/xds-ir/tracing-datadog.yaml index 809ccb6b77..c7c42d9bae 100644 --- a/internal/xds/translator/testdata/in/xds-ir/tracing-datadog.yaml +++ b/internal/xds/translator/testdata/in/xds-ir/tracing-datadog.yaml @@ -24,6 +24,7 @@ tracing: - endpoints: - host: "datadog-agent.default.svc.cluster.local" port: 8126 + addressType: FQDN name: "tracing-0/backend/0" provider: type: Datadog diff --git a/internal/xds/translator/testdata/in/xds-ir/tracing-endpoint-stats.yaml b/internal/xds/translator/testdata/in/xds-ir/tracing-endpoint-stats.yaml index 4c8145aefd..1a147187d2 100644 --- a/internal/xds/translator/testdata/in/xds-ir/tracing-endpoint-stats.yaml +++ b/internal/xds/translator/testdata/in/xds-ir/tracing-endpoint-stats.yaml @@ -27,6 +27,7 @@ tracing: - host: "otel-collector.default.svc.cluster.local" port: 4317 protocol: "GRPC" + addressType: FQDN name: "tracing-0/backend/0" provider: host: otel-collector.monitoring.svc.cluster.local diff --git a/internal/xds/translator/testdata/in/xds-ir/tracing-zipkin.yaml b/internal/xds/translator/testdata/in/xds-ir/tracing-zipkin.yaml index 5fbee5baf2..2db97e2646 100644 --- a/internal/xds/translator/testdata/in/xds-ir/tracing-zipkin.yaml +++ b/internal/xds/translator/testdata/in/xds-ir/tracing-zipkin.yaml @@ -25,6 +25,7 @@ tracing: - host: "zipkin.default.svc.cluster.local" port: 9411 protocol: "TCP" + addressType: FQDN name: "tracing-0/backend/0" provider: host: zipkin.default.svc.cluster.local diff --git a/internal/xds/translator/testdata/in/xds-ir/tracing.yaml b/internal/xds/translator/testdata/in/xds-ir/tracing.yaml index 33d4b01ee3..c0196ca747 100644 --- a/internal/xds/translator/testdata/in/xds-ir/tracing.yaml +++ b/internal/xds/translator/testdata/in/xds-ir/tracing.yaml @@ -25,6 +25,7 @@ tracing: - host: "otel-collector.default.svc.cluster.local" port: 4317 protocol: "GRPC" + addressType: FQDN name: "tracing-0/backend/0" traffic: backendConnection: diff --git a/internal/xds/translator/testdata/out/xds-ir/dns-lookup-family.clusters.yaml b/internal/xds/translator/testdata/out/xds-ir/dns-lookup-family.clusters.yaml index d7473a42f5..30b831b0eb 100644 --- a/internal/xds/translator/testdata/out/xds-ir/dns-lookup-family.clusters.yaml +++ b/internal/xds/translator/testdata/out/xds-ir/dns-lookup-family.clusters.yaml @@ -122,9 +122,24 @@ loadAssignment: clusterName: accesslog_otel_0_1 endpoints: - - loadBalancingWeight: 1 - locality: {} + - lbEndpoints: + - endpoint: + address: + socketAddress: + address: otel-collector.default.svc.cluster.local + portValue: 4317 + loadBalancingWeight: 1 + loadBalancingWeight: 1 + locality: + region: accesslog-0/backend/0 name: accesslog_otel_0_1 perConnectionBufferLimitBytes: 32768 respectDnsTtl: true type: STRICT_DNS + typedExtensionProtocolOptions: + envoy.extensions.upstreams.http.v3.HttpProtocolOptions: + '@type': type.googleapis.com/envoy.extensions.upstreams.http.v3.HttpProtocolOptions + explicitHttpConfig: + http2ProtocolOptions: + initialConnectionWindowSize: 1048576 + initialStreamWindowSize: 65536 diff --git a/internal/xds/translator/testdata/out/xds-ir/tracing-datadog-uds.clusters.yaml b/internal/xds/translator/testdata/out/xds-ir/tracing-datadog-uds.clusters.yaml new file mode 100644 index 0000000000..46b6091ff5 --- /dev/null +++ b/internal/xds/translator/testdata/out/xds-ir/tracing-datadog-uds.clusters.yaml @@ -0,0 +1,34 @@ +- circuitBreakers: + thresholds: + - maxRetries: 1024 + commonLbConfig: + localityWeightedLbConfig: {} + connectTimeout: 10s + dnsLookupFamily: V4_PREFERRED + edsClusterConfig: + edsConfig: + ads: {} + resourceApiVersion: V3 + serviceName: direct-route-dest + ignoreHealthOnHostRemoval: true + lbPolicy: LEAST_REQUEST + name: direct-route-dest + perConnectionBufferLimitBytes: 32768 + type: EDS +- circuitBreakers: + thresholds: + - maxRetries: 1024 + commonLbConfig: + localityWeightedLbConfig: {} + connectTimeout: 10s + dnsLookupFamily: V4_PREFERRED + edsClusterConfig: + edsConfig: + ads: {} + resourceApiVersion: V3 + serviceName: tracing-0 + ignoreHealthOnHostRemoval: true + lbPolicy: LEAST_REQUEST + name: tracing-0 + perConnectionBufferLimitBytes: 32768 + type: EDS diff --git a/internal/xds/translator/testdata/out/xds-ir/tracing-datadog-uds.endpoints.yaml b/internal/xds/translator/testdata/out/xds-ir/tracing-datadog-uds.endpoints.yaml new file mode 100644 index 0000000000..d4d338eb9d --- /dev/null +++ b/internal/xds/translator/testdata/out/xds-ir/tracing-datadog-uds.endpoints.yaml @@ -0,0 +1,23 @@ +- clusterName: direct-route-dest + endpoints: + - lbEndpoints: + - endpoint: + address: + socketAddress: + address: 1.2.3.4 + portValue: 50000 + loadBalancingWeight: 1 + loadBalancingWeight: 1 + locality: + region: direct-route-dest/backend/0 +- clusterName: tracing-0 + endpoints: + - lbEndpoints: + - endpoint: + address: + pipe: + path: /var/run/envoy-uds/dsd.socket + loadBalancingWeight: 1 + loadBalancingWeight: 1 + locality: + region: tracing-0/backend/0 diff --git a/internal/xds/translator/testdata/out/xds-ir/tracing-datadog-uds.listeners.yaml b/internal/xds/translator/testdata/out/xds-ir/tracing-datadog-uds.listeners.yaml new file mode 100644 index 0000000000..32f1b0230f --- /dev/null +++ b/internal/xds/translator/testdata/out/xds-ir/tracing-datadog-uds.listeners.yaml @@ -0,0 +1,60 @@ +- address: + socketAddress: + address: '::' + portValue: 10080 + defaultFilterChain: + filters: + - name: envoy.filters.network.http_connection_manager + typedConfig: + '@type': type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager + commonHttpProtocolOptions: + headersWithUnderscoresAction: REJECT_REQUEST + http2ProtocolOptions: + initialConnectionWindowSize: 1048576 + initialStreamWindowSize: 65536 + maxConcurrentStreams: 100 + httpFilters: + - name: envoy.filters.http.router + typedConfig: + '@type': type.googleapis.com/envoy.extensions.filters.http.router.v3.Router + suppressEnvoyHeaders: true + mergeSlashes: true + normalizePath: true + pathWithEscapedSlashesAction: UNESCAPE_AND_REDIRECT + rds: + configSource: + ads: {} + resourceApiVersion: V3 + routeConfigName: first-listener + serverHeaderTransformation: PASS_THROUGH + statPrefix: http-10080 + tracing: + clientSampling: + value: 100 + customTags: + - environment: + defaultValue: '-' + name: env1 + tag: env1 + - literal: + value: value1 + tag: literal1 + - requestHeader: + defaultValue: '-' + name: X-Request-Id + tag: req1 + overallSampling: + value: 100 + provider: + name: envoy.tracers.datadog + typedConfig: + '@type': type.googleapis.com/envoy.config.trace.v3.DatadogConfig + collectorCluster: tracing-0 + serviceName: fake-name.fake-ns + randomSampling: + value: 90 + spawnUpstreamSpan: true + useRemoteAddress: true + name: first-listener + name: first-listener + perConnectionBufferLimitBytes: 32768 diff --git a/internal/xds/translator/testdata/out/xds-ir/tracing-datadog-uds.routes.yaml b/internal/xds/translator/testdata/out/xds-ir/tracing-datadog-uds.routes.yaml new file mode 100644 index 0000000000..ea343799ac --- /dev/null +++ b/internal/xds/translator/testdata/out/xds-ir/tracing-datadog-uds.routes.yaml @@ -0,0 +1,14 @@ +- ignorePortInHostMatching: true + name: first-listener + virtualHosts: + - domains: + - '*' + name: first-listener/* + routes: + - match: + prefix: / + name: direct-route + route: + cluster: direct-route-dest + upgradeConfigs: + - upgradeType: websocket diff --git a/internal/xds/translator/tracing.go b/internal/xds/translator/tracing.go index 1315473497..56c5a8f101 100644 --- a/internal/xds/translator/tracing.go +++ b/internal/xds/translator/tracing.go @@ -128,11 +128,12 @@ func processClusterForTracing(tCtx *types.ResourceVersionTable, tracing *ir.Trac if traffic == nil { traffic = &ir.TrafficFeatures{} } + return addXdsCluster(tCtx, &xdsClusterArgs{ name: tracing.Destination.Name, settings: tracing.Destination.Settings, tSocket: nil, - endpointType: EndpointTypeDNS, + endpointType: buildEndpointType(tracing.Destination.Settings), metrics: metrics, loadBalancer: traffic.LoadBalancer, proxyProtocol: traffic.ProxyProtocol,