Browse Source

NET-6943 - Replace usage of deprecated Envoy field envoy.config.router.v3.WeightedCluster.total_weight. (#20011)

pull/19328/head^2
John Murret 11 months ago committed by GitHub
parent
commit
2f335113f8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 3
      .changelog/20011.txt
  2. 15
      agent/xds/routes.go
  3. 3
      agent/xds/testdata/builtin_extension/routes/propertyoverride-patch-specific-upstream-service-splitter.latest.golden
  4. 3
      agent/xds/testdata/routes/connect-proxy-lb-in-resolver.latest.golden
  5. 3
      agent/xds/testdata/routes/connect-proxy-with-chain-and-router.latest.golden
  6. 3
      agent/xds/testdata/routes/connect-proxy-with-chain-and-splitter.latest.golden
  7. 3
      agent/xds/testdata/routes/ingress-lb-in-resolver.latest.golden
  8. 3
      agent/xds/testdata/routes/ingress-splitter-with-resolver-redirect.latest.golden
  9. 3
      agent/xds/testdata/routes/ingress-with-chain-and-router-header-manip.latest.golden
  10. 3
      agent/xds/testdata/routes/ingress-with-chain-and-router.latest.golden
  11. 3
      agent/xds/testdata/routes/ingress-with-chain-and-splitter.latest.golden
  12. 3
      agent/xds/testdata/routes/mesh-gateway-with-exported-peered-services-http-with-router.latest.golden
  13. 3
      agent/xds/testdata/routes/splitter-with-resolver-redirect.latest.golden
  14. 3
      agent/xds/testdata/routes/xds-fetch-timeout-ms-ingress-with-router.latest.golden
  15. 3
      agent/xds/testdata/routes/xds-fetch-timeout-ms-sidecar.latest.golden
  16. 7
      agent/xdsv2/route_resources.go
  17. 3
      troubleshoot/proxy/testdata/upstreams/config.json

3
.changelog/20011.txt

@ -0,0 +1,3 @@
```release-note:improvement
connect: replace usage of deprecated Envoy field `envoy.config.router.v3.WeightedCluster.total_weight`.
```

15
agent/xds/routes.go

@ -17,16 +17,14 @@ import (
"golang.org/x/exp/maps"
"golang.org/x/exp/slices"
"google.golang.org/protobuf/proto"
"google.golang.org/protobuf/types/known/durationpb"
"google.golang.org/protobuf/types/known/wrapperspb"
"github.com/hashicorp/consul/agent/connect"
"github.com/hashicorp/consul/agent/consul/discoverychain"
"github.com/hashicorp/consul/agent/proxycfg"
"github.com/hashicorp/consul/agent/structs"
"github.com/hashicorp/consul/agent/xds/config"
"github.com/hashicorp/consul/agent/xds/response"
"google.golang.org/protobuf/proto"
"google.golang.org/protobuf/types/known/durationpb"
)
// routesFromSnapshot returns the xDS API representation of the "routes" in the
@ -1016,7 +1014,6 @@ func (s *ResourceGenerator) makeRouteActionForSplitter(
forMeshGateway bool,
) (*envoy_route_v3.Route_Route, error) {
clusters := make([]*envoy_route_v3.WeightedCluster_ClusterWeight, 0, len(splits))
totalWeight := 0
for _, split := range splits {
nextNode := chain.Nodes[split.NextNode]
@ -1033,7 +1030,6 @@ func (s *ResourceGenerator) makeRouteActionForSplitter(
// The smallest representable weight is 1/10000 or .01% but envoy
// deals with integers so scale everything up by 100x.
weight := int(split.Weight * 100)
totalWeight += weight
cw := &envoy_route_v3.WeightedCluster_ClusterWeight{
Weight: response.MakeUint32Value(weight),
Name: clusterName,
@ -1049,18 +1045,11 @@ func (s *ResourceGenerator) makeRouteActionForSplitter(
return nil, fmt.Errorf("number of clusters in splitter must be > 0; got %d", len(clusters))
}
var envoyWeightScale *wrapperspb.UInt32Value
if totalWeight == 10000 {
envoyWeightScale = response.MakeUint32Value(10000)
}
return &envoy_route_v3.Route_Route{
Route: &envoy_route_v3.RouteAction{
ClusterSpecifier: &envoy_route_v3.RouteAction_WeightedClusters{
WeightedClusters: &envoy_route_v3.WeightedCluster{
Clusters: clusters,
// this field is deprecated, and we should get the desired behavior with the front-end validation
TotalWeight: envoyWeightScale, // scaled up 100%
},
},
},

3
agent/xds/testdata/builtin_extension/routes/propertyoverride-patch-specific-upstream-service-splitter.latest.golden vendored

@ -28,8 +28,7 @@
"name": "v2.db.default.dc2.internal.11111111-2222-3333-4444-555555555555.consul",
"weight": 5000
}
],
"totalWeight": 10000
]
}
}
}

3
agent/xds/testdata/routes/connect-proxy-lb-in-resolver.latest.golden vendored

@ -57,8 +57,7 @@
"name": "db.default.dc1.internal.11111111-2222-3333-4444-555555555555.consul",
"weight": 450
}
],
"totalWeight": 10000
]
}
}
}

3
agent/xds/testdata/routes/connect-proxy-with-chain-and-router.latest.golden vendored

@ -360,8 +360,7 @@
"name": "lil-bit-side.default.dc1.internal.11111111-2222-3333-4444-555555555555.consul",
"weight": 50
}
],
"totalWeight": 10000
]
}
}
},

3
agent/xds/testdata/routes/connect-proxy-with-chain-and-splitter.latest.golden vendored

@ -125,8 +125,7 @@
],
"weight": 50
}
],
"totalWeight": 10000
]
}
}
}

3
agent/xds/testdata/routes/ingress-lb-in-resolver.latest.golden vendored

@ -58,8 +58,7 @@
"name": "db.default.dc1.internal.11111111-2222-3333-4444-555555555555.consul",
"weight": 450
}
],
"totalWeight": 10000
]
}
}
}

3
agent/xds/testdata/routes/ingress-splitter-with-resolver-redirect.latest.golden vendored

@ -28,8 +28,7 @@
"name": "v2.db.default.dc2.internal.11111111-2222-3333-4444-555555555555.consul",
"weight": 5000
}
],
"totalWeight": 10000
]
}
}
}

3
agent/xds/testdata/routes/ingress-with-chain-and-router-header-manip.latest.golden vendored

@ -399,8 +399,7 @@
"name": "lil-bit-side.default.dc1.internal.11111111-2222-3333-4444-555555555555.consul",
"weight": 50
}
],
"totalWeight": 10000
]
}
}
},

3
agent/xds/testdata/routes/ingress-with-chain-and-router.latest.golden vendored

@ -361,8 +361,7 @@
"name": "lil-bit-side.default.dc1.internal.11111111-2222-3333-4444-555555555555.consul",
"weight": 50
}
],
"totalWeight": 10000
]
}
}
},

3
agent/xds/testdata/routes/ingress-with-chain-and-splitter.latest.golden vendored

@ -126,8 +126,7 @@
],
"weight": 50
}
],
"totalWeight": 10000
]
}
}
}

3
agent/xds/testdata/routes/mesh-gateway-with-exported-peered-services-http-with-router.latest.golden vendored

@ -27,8 +27,7 @@
"name": "exported~db.default.dc1.internal.11111111-2222-3333-4444-555555555555.consul",
"weight": 4000
}
],
"totalWeight": 10000
]
}
}
},

3
agent/xds/testdata/routes/splitter-with-resolver-redirect.latest.golden vendored

@ -27,8 +27,7 @@
"name": "v2.db.default.dc2.internal.11111111-2222-3333-4444-555555555555.consul",
"weight": 5000
}
],
"totalWeight": 10000
]
}
}
}

3
agent/xds/testdata/routes/xds-fetch-timeout-ms-ingress-with-router.latest.golden vendored

@ -361,8 +361,7 @@
"name": "lil-bit-side.default.dc1.internal.11111111-2222-3333-4444-555555555555.consul",
"weight": 50
}
],
"totalWeight": 10000
]
}
}
},

3
agent/xds/testdata/routes/xds-fetch-timeout-ms-sidecar.latest.golden vendored

@ -360,8 +360,7 @@
"name": "lil-bit-side.default.dc1.internal.11111111-2222-3333-4444-555555555555.consul",
"weight": 50
}
],
"totalWeight": 10000
]
}
}
},

7
agent/xdsv2/route_resources.go

@ -264,22 +264,15 @@ func (pr *ProxyResources) makeEnvoyRouteActionFromProxystateRouteDestination(psR
case *pbproxystate.RouteDestination_WeightedClusters:
psWeightedClusters := psRouteDestination.GetWeightedClusters()
envoyClusters := make([]*envoy_route_v3.WeightedCluster_ClusterWeight, 0, len(psWeightedClusters.GetClusters()))
totalWeight := 0
for _, psCluster := range psWeightedClusters.GetClusters() {
pr.addEnvoyClustersAndEndpointsToEnvoyResources(psCluster.Name)
totalWeight += int(psCluster.Weight.GetValue())
envoyClusters = append(envoyClusters, makeEnvoyClusterWeightFromProxystateWeightedCluster(psCluster))
}
var envoyWeightScale *wrapperspb.UInt32Value
if totalWeight == 10000 {
envoyWeightScale = response.MakeUint32Value(10000)
}
envoyRouteRoute.Route.ClusterSpecifier = &envoy_route_v3.RouteAction_WeightedClusters{
WeightedClusters: &envoy_route_v3.WeightedCluster{
Clusters: envoyClusters,
TotalWeight: envoyWeightScale,
},
}
default:

3
troubleshoot/proxy/testdata/upstreams/config.json vendored

@ -174,8 +174,7 @@
"name": "backend2.default.dc1.internal.domain.consul",
"weight": 5000
}
],
"total_weight": 10000
]
}
}
}

Loading…
Cancel
Save