Skip to content

Commit

Permalink
NET-5951 - Unique route names for implicit routes (#19174)
Browse files Browse the repository at this point in the history
* NET-5951 - Unique route names for implicit routes

* remove use of datacenter

* PR feedback
  • Loading branch information
jmurret authored Oct 12, 2023
1 parent 9500711 commit dbca544
Show file tree
Hide file tree
Showing 10 changed files with 65 additions and 32 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,13 @@ func (b *Builder) buildDestination(
defaultDC(""),
)

var routeName string
if destination.Explicit != nil {
routeName = lb.listener.Name
} else {
routeName = DestinationResourceID(cpr.ParentRef.Ref)
}

var (
useRDS bool
needsNullRouteCluster bool
Expand All @@ -100,8 +107,6 @@ func (b *Builder) buildDestination(

route := config.Http

listenerName := lb.listener.Name

// this corresponds to roughly "makeUpstreamRouteForDiscoveryChain"

var proxyRouteRules []*pbproxystate.RouteRule
Expand Down Expand Up @@ -134,9 +139,9 @@ func (b *Builder) buildDestination(
}
}

b.addRoute(listenerName, &pbproxystate.Route{
b.addRoute(routeName, &pbproxystate.Route{
VirtualHosts: []*pbproxystate.VirtualHost{{
Name: listenerName,
Name: routeName,
RouteRules: proxyRouteRules,
}},
})
Expand All @@ -145,8 +150,6 @@ func (b *Builder) buildDestination(
useRDS = true
route := config.Grpc

listenerName := lb.listener.Name

var proxyRouteRules []*pbproxystate.RouteRule
for _, routeRule := range route.Rules {
for _, backendRef := range routeRule.BackendRefs {
Expand Down Expand Up @@ -178,9 +181,9 @@ func (b *Builder) buildDestination(
}
}

b.addRoute(listenerName, &pbproxystate.Route{
b.addRoute(routeName, &pbproxystate.Route{
VirtualHosts: []*pbproxystate.VirtualHost{{
Name: listenerName,
Name: routeName,
RouteRules: proxyRouteRules,
}},
})
Expand Down Expand Up @@ -479,7 +482,7 @@ func makeExplicitListener(explicit *pbmesh.Destination, direction pbproxystate.D
Port: destinationAddr.IpPort.Port,
},
}
listener.Name = DestinationListenerName(explicit.DestinationRef.Name, 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{
Expand All @@ -488,7 +491,7 @@ func makeExplicitListener(explicit *pbmesh.Destination, direction pbproxystate.D
Mode: destinationAddr.Unix.Mode,
},
}
listener.Name = DestinationListenerName(explicit.DestinationRef.Name, explicit.DestinationPort, destinationAddr.Unix.Path, 0)
listener.Name = DestinationListenerName(explicit.DestinationRef, explicit.DestinationPort, destinationAddr.Unix.Path, 0)
}

return listener
Expand Down
15 changes: 12 additions & 3 deletions internal/mesh/internal/controllers/sidecarproxy/builder/naming.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,19 @@ func DestinationStatPrefix(serviceRef *pbresource.Reference, portName, datacente
datacenter)
}

func DestinationListenerName(name, 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", name, portName, address, port)
return fmt.Sprintf("%s:%d", name, port)
}

return fmt.Sprintf("%s:%s:%s", name, portName, address)
return name
}

// DestinationResourceID returns a string representation that uniquely identifies the
// upstream in a canonical but human readable way.
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)
}
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@
"host": "1.1.1.1",
"port": 1234
},
"name": "api-1:tcp:1.1.1.1:1234",
"name": "default/local/default/api-1:tcp:1.1.1.1:1234",
"routers": [
{
"l4": {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,7 @@
"host": "1.1.1.1",
"port": 1234
},
"name": "api-1:tcp:1.1.1.1:1234",
"name": "default/local/default/api-1:tcp:1.1.1.1:1234",
"routers": [
{
"l4": {
Expand All @@ -167,7 +167,7 @@
},
{
"direction": "DIRECTION_OUTBOUND",
"name": "api-2:tcp:/path/to/socket",
"name": "default/local/default/api-2:tcp:/path/to/socket",
"routers": [
{
"l4": {
Expand All @@ -189,7 +189,7 @@
"host": "1.1.1.1",
"port": 2345
},
"name": "api-1:tcp2:1.1.1.1:2345",
"name": "default/local/default/api-1:tcp2:1.1.1.1:2345",
"routers": [
{
"l4": {
Expand All @@ -216,7 +216,7 @@
},
{
"direction": "DIRECTION_OUTBOUND",
"name": "api-2:tcp2:/path/to/socket",
"name": "default/local/default/api-2:tcp2:/path/to/socket",
"routers": [
{
"l4": {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@
"host": "1.1.1.1",
"port": 1234
},
"name": "api-1:tcp:1.1.1.1:1234",
"name": "default/local/default/api-1:tcp:1.1.1.1:1234",
"routers": [
{
"l4": {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@
"listeners": [
{
"direction": "DIRECTION_OUTBOUND",
"name": "api-2:tcp:/path/to/socket",
"name": "default/local/default/api-2:tcp:/path/to/socket",
"routers": [
{
"l4": {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -172,7 +172,7 @@
"host": "1.1.1.1",
"port": 1234
},
"name": "api-1:tcp:1.1.1.1:1234",
"name": "default/local/default/api-1:tcp:1.1.1.1:1234",
"routers": [
{
"l4": {
Expand All @@ -199,7 +199,7 @@
},
{
"direction": "DIRECTION_OUTBOUND",
"name": "api-2:tcp:/path/to/socket",
"name": "default/local/default/api-2:tcp:/path/to/socket",
"routers": [
{
"l4": {
Expand All @@ -221,22 +221,22 @@
"host": "1.1.1.1",
"port": 1234
},
"name": "api-1:http:1.1.1.1:1234",
"name": "default/local/default/api-1:http:1.1.1.1:1234",
"routers": [
{
"l7": {
"name": "api-1:http:1.1.1.1:1234",
"name": "default/local/default/api-1:http:1.1.1.1:1234",
"statPrefix": "upstream."
}
}
]
}
],
"routes": {
"api-1:http:1.1.1.1:1234": {
"default/local/default/api-1:http:1.1.1.1:1234": {
"virtualHosts": [
{
"name": "api-1:http:1.1.1.1:1234",
"name": "default/local/default/api-1:http:1.1.1.1:1234",
"routeRules": [
{
"destination": {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -321,10 +321,31 @@
}
],
"routes": {
"outbound_listener": {
"default/local/default/api-app": {
"virtualHosts": [
{
"name": "outbound_listener",
"name": "default/local/default/api-app",
"routeRules": [
{
"destination": {
"cluster": {
"name": "http.api-app.default.dc1.internal.foo.consul"
}
},
"match": {
"pathMatch": {
"prefix": "/"
}
}
}
]
}
]
},
"default/local/default/api-app2": {
"virtualHosts": [
{
"name": "default/local/default/api-app2",
"routeRules": [
{
"destination": {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -179,10 +179,10 @@
}
],
"routes": {
"outbound_listener": {
"default/local/default/api-app": {
"virtualHosts": [
{
"name": "outbound_listener",
"name": "default/local/default/api-app",
"routeRules": [
{
"destination": {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -179,10 +179,10 @@
}
],
"routes": {
"outbound_listener": {
"default/local/default/api-app": {
"virtualHosts": [
{
"name": "outbound_listener",
"name": "default/local/default/api-app",
"routeRules": [
{
"destination": {
Expand Down

0 comments on commit dbca544

Please sign in to comment.