diff --git a/internal/mesh/internal/controllers/sidecarproxy/builder/destinations.go b/internal/mesh/internal/controllers/sidecarproxy/builder/destinations.go index 7b4914f9cab51..96f1d721d4d1e 100644 --- a/internal/mesh/internal/controllers/sidecarproxy/builder/destinations.go +++ b/internal/mesh/internal/controllers/sidecarproxy/builder/destinations.go @@ -54,20 +54,9 @@ func (b *Builder) buildDestination( cpr := destination.ComputedPortRoutes - defaultDC := func(dc string) string { - if destination.Explicit != nil { - dc = orDefault(dc, destination.Explicit.Datacenter) - } - dc = orDefault(dc, b.localDatacenter) - if dc != b.localDatacenter { - panic("cross datacenter service discovery clusters are not supported in v2") - } - return dc - } - var lb *ListenerBuilder if destination.Explicit != nil { - lb = b.addExplicitOutboundListener(destination.Explicit, defaultDC("")) + lb = b.addExplicitOutboundListener(destination.Explicit) } else { lb = tproxyOutboundListenerBuilder } @@ -82,6 +71,17 @@ func (b *Builder) buildDestination( } } } + + defaultDC := func(dc string) string { + if destination.Explicit != nil { + dc = orDefault(dc, destination.Explicit.Datacenter) + } + dc = orDefault(dc, b.localDatacenter) + if dc != b.localDatacenter { + panic("cross datacenter service discovery clusters are not supported in v2") + } + return dc + } statPrefix := DestinationStatPrefix( cpr.ParentRef.Ref, @@ -93,7 +93,7 @@ func (b *Builder) buildDestination( if destination.Explicit != nil { routeName = lb.listener.Name } else { - routeName = DestinationResourceID(cpr.ParentRef.Ref, defaultDC("")) + routeName = DestinationResourceID(cpr.ParentRef.Ref) } var ( @@ -455,13 +455,13 @@ func (b *ListenerBuilder) addL7Router(statPrefix string, protocol pbcatalog.Prot } // addExplicitOutboundListener creates an outbound listener for an explicit destination. -func (b *Builder) addExplicitOutboundListener(explicit *pbmesh.Destination, datacenter string) *ListenerBuilder { - listener := makeExplicitListener(explicit, datacenter, pbproxystate.Direction_DIRECTION_OUTBOUND) +func (b *Builder) addExplicitOutboundListener(explicit *pbmesh.Destination) *ListenerBuilder { + listener := makeExplicitListener(explicit, pbproxystate.Direction_DIRECTION_OUTBOUND) return b.NewListenerBuilder(listener) } -func makeExplicitListener(explicit *pbmesh.Destination, datacenter string, direction pbproxystate.Direction) *pbproxystate.Listener { +func makeExplicitListener(explicit *pbmesh.Destination, direction pbproxystate.Direction) *pbproxystate.Listener { if explicit == nil { panic("explicit upstream required") } @@ -482,7 +482,7 @@ func makeExplicitListener(explicit *pbmesh.Destination, datacenter string, direc Port: destinationAddr.IpPort.Port, }, } - listener.Name = DestinationListenerName(explicit.DestinationRef, datacenter, explicit.DestinationPort, destinationAddr.IpPort.Ip, destinationAddr.IpPort.Port) + listener.Name = DestinationListenerName(explicit.DestinationRef, explicit.DestinationPort, destinationAddr.IpPort.Ip, destinationAddr.IpPort.Port) case *pbmesh.Destination_Unix: destinationAddr := explicit.ListenAddr.(*pbmesh.Destination_Unix) listener.BindAddress = &pbproxystate.Listener_UnixSocket{ @@ -491,7 +491,7 @@ func makeExplicitListener(explicit *pbmesh.Destination, datacenter string, direc Mode: destinationAddr.Unix.Mode, }, } - listener.Name = DestinationListenerName(explicit.DestinationRef, datacenter, explicit.DestinationPort, destinationAddr.Unix.Path, 0) + listener.Name = DestinationListenerName(explicit.DestinationRef, explicit.DestinationPort, destinationAddr.Unix.Path, 0) } return listener diff --git a/internal/mesh/internal/controllers/sidecarproxy/builder/naming.go b/internal/mesh/internal/controllers/sidecarproxy/builder/naming.go index 4219fed367de7..3d4225bd787d4 100644 --- a/internal/mesh/internal/controllers/sidecarproxy/builder/naming.go +++ b/internal/mesh/internal/controllers/sidecarproxy/builder/naming.go @@ -28,19 +28,19 @@ func DestinationStatPrefix(serviceRef *pbresource.Reference, portName, datacente datacenter) } -func DestinationListenerName(destinationRef *pbresource.Reference, datacenter, portName string, address string, port uint32) string { +func DestinationListenerName(destinationRef *pbresource.Reference, portName string, address string, port uint32) string { + name := fmt.Sprintf("%s:%s:%s", DestinationResourceID(destinationRef), portName, address) if port != 0 { - return fmt.Sprintf("%s:%s:%s:%d", DestinationResourceID(destinationRef, datacenter), portName, address, port) + return fmt.Sprintf("%s:%d", name, port) } - return fmt.Sprintf("%s:%s:%s", DestinationResourceID(destinationRef, datacenter), portName, address) + return name } // XDSResourceID returns a string representation that uniquely identifies the // upstream in a canonical but human readable way. -func DestinationResourceID(destinationRef *pbresource.Reference, datacenter string) string { - tenancyPrefix := fmt.Sprintf("%s/%s/%s/%s", destinationRef.Tenancy.Partition, - destinationRef.Tenancy.PeerName, destinationRef.Tenancy.Namespace, - datacenter) +func DestinationResourceID(destinationRef *pbresource.Reference) string { + tenancyPrefix := fmt.Sprintf("%s/%s/%s", destinationRef.Tenancy.Partition, + destinationRef.Tenancy.PeerName, destinationRef.Tenancy.Namespace) return fmt.Sprintf("%s/%s", tenancyPrefix, destinationRef.Name) } diff --git a/internal/mesh/internal/controllers/sidecarproxy/builder/testdata/destination/l4-implicit-and-explicit-destinations-tproxy.golden b/internal/mesh/internal/controllers/sidecarproxy/builder/testdata/destination/l4-implicit-and-explicit-destinations-tproxy.golden index e30ee3b3b4867..322ea928f42b9 100644 --- a/internal/mesh/internal/controllers/sidecarproxy/builder/testdata/destination/l4-implicit-and-explicit-destinations-tproxy.golden +++ b/internal/mesh/internal/controllers/sidecarproxy/builder/testdata/destination/l4-implicit-and-explicit-destinations-tproxy.golden @@ -86,7 +86,7 @@ "host": "1.1.1.1", "port": 1234 }, - "name": "default/local/default/dc1/api-1:tcp:1.1.1.1:1234", + "name": "default/local/default/api-1:tcp:1.1.1.1:1234", "routers": [ { "l4": { diff --git a/internal/mesh/internal/controllers/sidecarproxy/builder/testdata/destination/l4-multi-destination.golden b/internal/mesh/internal/controllers/sidecarproxy/builder/testdata/destination/l4-multi-destination.golden index 6a6eb78dc26ca..eb7c3e60fcd49 100644 --- a/internal/mesh/internal/controllers/sidecarproxy/builder/testdata/destination/l4-multi-destination.golden +++ b/internal/mesh/internal/controllers/sidecarproxy/builder/testdata/destination/l4-multi-destination.golden @@ -140,7 +140,7 @@ "host": "1.1.1.1", "port": 1234 }, - "name": "default/local/default/dc1/api-1:tcp:1.1.1.1:1234", + "name": "default/local/default/api-1:tcp:1.1.1.1:1234", "routers": [ { "l4": { @@ -167,7 +167,7 @@ }, { "direction": "DIRECTION_OUTBOUND", - "name": "default/local/default/dc1/api-2:tcp:/path/to/socket", + "name": "default/local/default/api-2:tcp:/path/to/socket", "routers": [ { "l4": { @@ -189,7 +189,7 @@ "host": "1.1.1.1", "port": 2345 }, - "name": "default/local/default/dc1/api-1:tcp2:1.1.1.1:2345", + "name": "default/local/default/api-1:tcp2:1.1.1.1:2345", "routers": [ { "l4": { @@ -216,7 +216,7 @@ }, { "direction": "DIRECTION_OUTBOUND", - "name": "default/local/default/dc1/api-2:tcp2:/path/to/socket", + "name": "default/local/default/api-2:tcp2:/path/to/socket", "routers": [ { "l4": { diff --git a/internal/mesh/internal/controllers/sidecarproxy/builder/testdata/destination/l4-single-destination-ip-port-bind-address.golden b/internal/mesh/internal/controllers/sidecarproxy/builder/testdata/destination/l4-single-destination-ip-port-bind-address.golden index 2391d48f2c843..7ba7111235594 100644 --- a/internal/mesh/internal/controllers/sidecarproxy/builder/testdata/destination/l4-single-destination-ip-port-bind-address.golden +++ b/internal/mesh/internal/controllers/sidecarproxy/builder/testdata/destination/l4-single-destination-ip-port-bind-address.golden @@ -86,7 +86,7 @@ "host": "1.1.1.1", "port": 1234 }, - "name": "default/local/default/dc1/api-1:tcp:1.1.1.1:1234", + "name": "default/local/default/api-1:tcp:1.1.1.1:1234", "routers": [ { "l4": { diff --git a/internal/mesh/internal/controllers/sidecarproxy/builder/testdata/destination/l4-single-destination-unix-socket-bind-address.golden b/internal/mesh/internal/controllers/sidecarproxy/builder/testdata/destination/l4-single-destination-unix-socket-bind-address.golden index 913d510fcb154..ca72e84ef73c9 100644 --- a/internal/mesh/internal/controllers/sidecarproxy/builder/testdata/destination/l4-single-destination-unix-socket-bind-address.golden +++ b/internal/mesh/internal/controllers/sidecarproxy/builder/testdata/destination/l4-single-destination-unix-socket-bind-address.golden @@ -45,7 +45,7 @@ "listeners": [ { "direction": "DIRECTION_OUTBOUND", - "name": "default/local/default/dc1/api-2:tcp:/path/to/socket", + "name": "default/local/default/api-2:tcp:/path/to/socket", "routers": [ { "l4": { diff --git a/internal/mesh/internal/controllers/sidecarproxy/builder/testdata/destination/mixed-multi-destination.golden b/internal/mesh/internal/controllers/sidecarproxy/builder/testdata/destination/mixed-multi-destination.golden index e9af86fd7c14f..b1b5b19bff49c 100644 --- a/internal/mesh/internal/controllers/sidecarproxy/builder/testdata/destination/mixed-multi-destination.golden +++ b/internal/mesh/internal/controllers/sidecarproxy/builder/testdata/destination/mixed-multi-destination.golden @@ -172,7 +172,7 @@ "host": "1.1.1.1", "port": 1234 }, - "name": "default/local/default/dc1/api-1:tcp:1.1.1.1:1234", + "name": "default/local/default/api-1:tcp:1.1.1.1:1234", "routers": [ { "l4": { @@ -199,7 +199,7 @@ }, { "direction": "DIRECTION_OUTBOUND", - "name": "default/local/default/dc1/api-2:tcp:/path/to/socket", + "name": "default/local/default/api-2:tcp:/path/to/socket", "routers": [ { "l4": { @@ -221,11 +221,11 @@ "host": "1.1.1.1", "port": 1234 }, - "name": "default/local/default/dc1/api-1:http:1.1.1.1:1234", + "name": "default/local/default/api-1:http:1.1.1.1:1234", "routers": [ { "l7": { - "name": "default/local/default/dc1/api-1:http:1.1.1.1:1234", + "name": "default/local/default/api-1:http:1.1.1.1:1234", "statPrefix": "upstream." } } @@ -233,10 +233,10 @@ } ], "routes": { - "default/local/default/dc1/api-1:http:1.1.1.1:1234": { + "default/local/default/api-1:http:1.1.1.1:1234": { "virtualHosts": [ { - "name": "default/local/default/dc1/api-1:http:1.1.1.1:1234", + "name": "default/local/default/api-1:http:1.1.1.1:1234", "routeRules": [ { "destination": { diff --git a/internal/mesh/internal/controllers/sidecarproxy/builder/testdata/destination/multiport-l4-multiple-implicit-destinations-tproxy.golden b/internal/mesh/internal/controllers/sidecarproxy/builder/testdata/destination/multiport-l4-multiple-implicit-destinations-tproxy.golden index 40e80fa753623..e42968487730e 100644 --- a/internal/mesh/internal/controllers/sidecarproxy/builder/testdata/destination/multiport-l4-multiple-implicit-destinations-tproxy.golden +++ b/internal/mesh/internal/controllers/sidecarproxy/builder/testdata/destination/multiport-l4-multiple-implicit-destinations-tproxy.golden @@ -321,10 +321,10 @@ } ], "routes": { - "default/local/default/dc1/api-app": { + "default/local/default/api-app": { "virtualHosts": [ { - "name": "default/local/default/dc1/api-app", + "name": "default/local/default/api-app", "routeRules": [ { "destination": { @@ -342,10 +342,10 @@ } ] }, - "default/local/default/dc1/api-app2": { + "default/local/default/api-app2": { "virtualHosts": [ { - "name": "default/local/default/dc1/api-app2", + "name": "default/local/default/api-app2", "routeRules": [ { "destination": { diff --git a/internal/mesh/internal/controllers/sidecarproxy/builder/testdata/destination/multiport-l4-single-implicit-destination-tproxy.golden b/internal/mesh/internal/controllers/sidecarproxy/builder/testdata/destination/multiport-l4-single-implicit-destination-tproxy.golden index 79aeeb7526553..1ff271dabb20a 100644 --- a/internal/mesh/internal/controllers/sidecarproxy/builder/testdata/destination/multiport-l4-single-implicit-destination-tproxy.golden +++ b/internal/mesh/internal/controllers/sidecarproxy/builder/testdata/destination/multiport-l4-single-implicit-destination-tproxy.golden @@ -179,10 +179,10 @@ } ], "routes": { - "default/local/default/dc1/api-app": { + "default/local/default/api-app": { "virtualHosts": [ { - "name": "default/local/default/dc1/api-app", + "name": "default/local/default/api-app", "routeRules": [ { "destination": { diff --git a/internal/mesh/internal/controllers/sidecarproxy/builder/testdata/destination/multiport-l4-single-implicit-destination-with-multiple-workloads-tproxy.golden b/internal/mesh/internal/controllers/sidecarproxy/builder/testdata/destination/multiport-l4-single-implicit-destination-with-multiple-workloads-tproxy.golden index 79aeeb7526553..1ff271dabb20a 100644 --- a/internal/mesh/internal/controllers/sidecarproxy/builder/testdata/destination/multiport-l4-single-implicit-destination-with-multiple-workloads-tproxy.golden +++ b/internal/mesh/internal/controllers/sidecarproxy/builder/testdata/destination/multiport-l4-single-implicit-destination-with-multiple-workloads-tproxy.golden @@ -179,10 +179,10 @@ } ], "routes": { - "default/local/default/dc1/api-app": { + "default/local/default/api-app": { "virtualHosts": [ { - "name": "default/local/default/dc1/api-app", + "name": "default/local/default/api-app", "routeRules": [ { "destination": {