diff --git a/internal/gatewayapi/listener.go b/internal/gatewayapi/listener.go index 4d6fe26680..3ede5ae988 100644 --- a/internal/gatewayapi/listener.go +++ b/internal/gatewayapi/listener.go @@ -9,6 +9,7 @@ import ( "errors" "fmt" "math" + "net" "strings" "github.com/google/cel-go/cel" @@ -24,7 +25,7 @@ import ( "github.com/envoyproxy/gateway/internal/ir" "github.com/envoyproxy/gateway/internal/utils" "github.com/envoyproxy/gateway/internal/utils/naming" - "github.com/envoyproxy/gateway/internal/utils/net" + netutils "github.com/envoyproxy/gateway/internal/utils/net" "github.com/envoyproxy/gateway/internal/xds/bootstrap" ) @@ -105,10 +106,10 @@ func (t *Translator) ProcessListeners(gateways []*GatewayContext, xdsIR resource continue } - address := net.IPv4ListenerAddress + address := netutils.IPv4ListenerAddress ipFamily := getEnvoyIPFamily(gateway.envoyProxy) if ipFamily != nil && (*ipFamily == egv1a1.IPv6 || *ipFamily == egv1a1.DualStack) { - address = net.IPv6ListenerAddress + address = netutils.IPv6ListenerAddress } // Add the listener to the Xds IR @@ -434,14 +435,14 @@ func buildListenerMetadata(listener *ListenerContext, gateway *GatewayContext) * func (t *Translator) processProxyReadyListener(xdsIR *ir.Xds, envoyProxy *egv1a1.EnvoyProxy) { var ( ipFamily = egv1a1.IPv4 - address = net.IPv4ListenerAddress + address = netutils.IPv4ListenerAddress ) if envoyProxy != nil && envoyProxy.Spec.IPFamily != nil { ipFamily = *envoyProxy.Spec.IPFamily } if ipFamily == egv1a1.IPv6 || ipFamily == egv1a1.DualStack { - address = net.IPv6ListenerAddress + address = netutils.IPv6ListenerAddress } xdsIR.ReadyListener = &ir.ReadyListener{ @@ -835,12 +836,19 @@ func (t *Translator) processBackendRefs(name string, backendCluster egv1a1.Backe } func destinationSettingFromHostAndPort(name, host string, port uint32) []*ir.DestinationSetting { + // check if host is an IP address or a hostname + addressType := ir.FQDN + if net.ParseIP(host) != nil { + addressType = ir.IP + } + return []*ir.DestinationSetting{ { - Name: name, - Weight: ptr.To[uint32](1), - Protocol: ir.GRPC, - Endpoints: []*ir.DestinationEndpoint{ir.NewDestEndpoint(host, port, false, nil)}, + Name: name, + Weight: ptr.To[uint32](1), + Protocol: ir.GRPC, + AddressType: ptr.To(addressType), + Endpoints: []*ir.DestinationEndpoint{ir.NewDestEndpoint(host, port, false, nil)}, }, } } diff --git a/internal/gatewayapi/testdata/envoyproxy-accesslog-cel.out.yaml b/internal/gatewayapi/testdata/envoyproxy-accesslog-cel.out.yaml index 477102c91c..078d94a6ce 100644 --- a/internal/gatewayapi/testdata/envoyproxy-accesslog-cel.out.yaml +++ b/internal/gatewayapi/testdata/envoyproxy-accesslog-cel.out.yaml @@ -179,7 +179,8 @@ xdsIR: namespace: envoy-gateway-system name: accesslog_otel_0_1 settings: - - endpoints: + - addressType: FQDN + endpoints: - host: otel-collector.monitoring.svc.cluster.local port: 4317 name: accesslog_otel_0_1/backend/-1 diff --git a/internal/gatewayapi/testdata/envoyproxy-accesslog-types.out.yaml b/internal/gatewayapi/testdata/envoyproxy-accesslog-types.out.yaml index 1172d476eb..a3f6cc0073 100644 --- a/internal/gatewayapi/testdata/envoyproxy-accesslog-types.out.yaml +++ b/internal/gatewayapi/testdata/envoyproxy-accesslog-types.out.yaml @@ -445,7 +445,8 @@ xdsIR: namespace: envoy-gateway-system name: accesslog_otel_2_3 settings: - - endpoints: + - addressType: FQDN + endpoints: - host: otel-collector.monitoring.svc.cluster.local port: 4317 name: accesslog_otel_2_3/backend/-1 @@ -464,7 +465,8 @@ xdsIR: namespace: envoy-gateway-system name: accesslog_otel_3_3 settings: - - endpoints: + - addressType: FQDN + endpoints: - host: otel-collector.monitoring.svc.cluster.local port: 4317 name: accesslog_otel_3_3/backend/-1 @@ -483,7 +485,8 @@ xdsIR: namespace: envoy-gateway-system name: accesslog_otel_4_3 settings: - - endpoints: + - addressType: FQDN + endpoints: - host: otel-collector.monitoring.svc.cluster.local port: 4317 name: accesslog_otel_4_3/backend/-1 diff --git a/internal/gatewayapi/testdata/envoyproxy-accesslog-with-traffic.out.yaml b/internal/gatewayapi/testdata/envoyproxy-accesslog-with-traffic.out.yaml index 79f5dc4310..e457ac11ee 100644 --- a/internal/gatewayapi/testdata/envoyproxy-accesslog-with-traffic.out.yaml +++ b/internal/gatewayapi/testdata/envoyproxy-accesslog-with-traffic.out.yaml @@ -299,7 +299,8 @@ xdsIR: namespace: envoy-gateway-system name: accesslog_otel_0_3 settings: - - endpoints: + - addressType: FQDN + endpoints: - host: otel-collector.monitoring.svc.cluster.local port: 4317 name: accesslog_otel_0_3/backend/-1 diff --git a/internal/gatewayapi/testdata/envoyproxy-accesslog-without-format.out.yaml b/internal/gatewayapi/testdata/envoyproxy-accesslog-without-format.out.yaml index 596392106b..53e836c775 100644 --- a/internal/gatewayapi/testdata/envoyproxy-accesslog-without-format.out.yaml +++ b/internal/gatewayapi/testdata/envoyproxy-accesslog-without-format.out.yaml @@ -214,7 +214,8 @@ xdsIR: namespace: envoy-gateway-system name: accesslog_otel_0_3 settings: - - endpoints: + - addressType: FQDN + endpoints: - host: otel-collector.monitoring.svc.cluster.local port: 4317 name: accesslog_otel_0_3/backend/-1 diff --git a/internal/gatewayapi/testdata/envoyproxy-accesslog.out.yaml b/internal/gatewayapi/testdata/envoyproxy-accesslog.out.yaml index a1a806236d..33e103ae05 100644 --- a/internal/gatewayapi/testdata/envoyproxy-accesslog.out.yaml +++ b/internal/gatewayapi/testdata/envoyproxy-accesslog.out.yaml @@ -220,7 +220,8 @@ xdsIR: namespace: envoy-gateway-system name: accesslog_otel_0_3 settings: - - endpoints: + - addressType: FQDN + endpoints: - host: otel-collector.monitoring.svc.cluster.local port: 4317 name: accesslog_otel_0_3/backend/-1 diff --git a/internal/gatewayapi/testdata/gateway-with-infrastructure-parametersref.out.yaml b/internal/gatewayapi/testdata/gateway-with-infrastructure-parametersref.out.yaml index 97ef903057..ed7c237730 100644 --- a/internal/gatewayapi/testdata/gateway-with-infrastructure-parametersref.out.yaml +++ b/internal/gatewayapi/testdata/gateway-with-infrastructure-parametersref.out.yaml @@ -185,7 +185,8 @@ xdsIR: namespace: envoy-gateway name: tracing settings: - - endpoints: + - addressType: FQDN + endpoints: - host: otel-collector.monitoring.svc.cluster.local port: 4317 name: tracing/backend/-1 diff --git a/internal/gatewayapi/testdata/gateway-with-invalid-infrastructure-parametersref-fallback.out.yaml b/internal/gatewayapi/testdata/gateway-with-invalid-infrastructure-parametersref-fallback.out.yaml index d87d3b9131..68ae922686 100644 --- a/internal/gatewayapi/testdata/gateway-with-invalid-infrastructure-parametersref-fallback.out.yaml +++ b/internal/gatewayapi/testdata/gateway-with-invalid-infrastructure-parametersref-fallback.out.yaml @@ -185,7 +185,8 @@ xdsIR: namespace: envoy-gateway name: tracing settings: - - endpoints: + - addressType: FQDN + endpoints: - host: otel-collector.monitoring.svc.cluster.local port: 4317 name: tracing/backend/-1 diff --git a/internal/gatewayapi/testdata/tracing-merged-multiple-routes.out.yaml b/internal/gatewayapi/testdata/tracing-merged-multiple-routes.out.yaml index b5b61d01f0..b307872bb3 100644 --- a/internal/gatewayapi/testdata/tracing-merged-multiple-routes.out.yaml +++ b/internal/gatewayapi/testdata/tracing-merged-multiple-routes.out.yaml @@ -350,7 +350,8 @@ xdsIR: namespace: envoy-gateway name: tracing settings: - - endpoints: + - addressType: FQDN + endpoints: - host: otel-collector.monitoring.svc.cluster.local port: 4317 name: tracing/backend/-1 diff --git a/internal/gatewayapi/testdata/tracing-multiple-routes.out.yaml b/internal/gatewayapi/testdata/tracing-multiple-routes.out.yaml index f1c54f8ac1..805cbdb432 100644 --- a/internal/gatewayapi/testdata/tracing-multiple-routes.out.yaml +++ b/internal/gatewayapi/testdata/tracing-multiple-routes.out.yaml @@ -321,7 +321,8 @@ xdsIR: namespace: envoy-gateway name: tracing settings: - - endpoints: + - addressType: FQDN + endpoints: - host: otel-collector.monitoring.svc.cluster.local port: 4317 name: tracing/backend/-1 @@ -410,7 +411,8 @@ xdsIR: namespace: envoy-gateway name: tracing settings: - - endpoints: + - addressType: FQDN + endpoints: - host: otel-collector.monitoring.svc.cluster.local port: 4317 name: tracing/backend/-1 diff --git a/internal/gatewayapi/testdata/tracing-sampling-fraction.out.yaml b/internal/gatewayapi/testdata/tracing-sampling-fraction.out.yaml index 062584d68a..5124564f80 100644 --- a/internal/gatewayapi/testdata/tracing-sampling-fraction.out.yaml +++ b/internal/gatewayapi/testdata/tracing-sampling-fraction.out.yaml @@ -352,7 +352,8 @@ xdsIR: namespace: envoy-gateway name: tracing settings: - - endpoints: + - addressType: FQDN + endpoints: - host: otel-collector.monitoring.svc.cluster.local port: 4317 name: tracing/backend/-1