mirror of https://github.com/status-im/consul.git
NET-6943 - Replace usage of deprecated Envoy field envoy.config.router.v3.WeightedCluster.total_weight. (#20011)
This commit is contained in:
parent
90cd56c5c3
commit
2f335113f8
|
@ -0,0 +1,3 @@
|
||||||
|
```release-note:improvement
|
||||||
|
connect: replace usage of deprecated Envoy field `envoy.config.router.v3.WeightedCluster.total_weight`.
|
||||||
|
```
|
|
@ -17,16 +17,14 @@ import (
|
||||||
"golang.org/x/exp/maps"
|
"golang.org/x/exp/maps"
|
||||||
"golang.org/x/exp/slices"
|
"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/connect"
|
||||||
"github.com/hashicorp/consul/agent/consul/discoverychain"
|
"github.com/hashicorp/consul/agent/consul/discoverychain"
|
||||||
"github.com/hashicorp/consul/agent/proxycfg"
|
"github.com/hashicorp/consul/agent/proxycfg"
|
||||||
"github.com/hashicorp/consul/agent/structs"
|
"github.com/hashicorp/consul/agent/structs"
|
||||||
"github.com/hashicorp/consul/agent/xds/config"
|
"github.com/hashicorp/consul/agent/xds/config"
|
||||||
"github.com/hashicorp/consul/agent/xds/response"
|
"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
|
// routesFromSnapshot returns the xDS API representation of the "routes" in the
|
||||||
|
@ -1016,7 +1014,6 @@ func (s *ResourceGenerator) makeRouteActionForSplitter(
|
||||||
forMeshGateway bool,
|
forMeshGateway bool,
|
||||||
) (*envoy_route_v3.Route_Route, error) {
|
) (*envoy_route_v3.Route_Route, error) {
|
||||||
clusters := make([]*envoy_route_v3.WeightedCluster_ClusterWeight, 0, len(splits))
|
clusters := make([]*envoy_route_v3.WeightedCluster_ClusterWeight, 0, len(splits))
|
||||||
totalWeight := 0
|
|
||||||
for _, split := range splits {
|
for _, split := range splits {
|
||||||
nextNode := chain.Nodes[split.NextNode]
|
nextNode := chain.Nodes[split.NextNode]
|
||||||
|
|
||||||
|
@ -1033,7 +1030,6 @@ func (s *ResourceGenerator) makeRouteActionForSplitter(
|
||||||
// The smallest representable weight is 1/10000 or .01% but envoy
|
// The smallest representable weight is 1/10000 or .01% but envoy
|
||||||
// deals with integers so scale everything up by 100x.
|
// deals with integers so scale everything up by 100x.
|
||||||
weight := int(split.Weight * 100)
|
weight := int(split.Weight * 100)
|
||||||
totalWeight += weight
|
|
||||||
cw := &envoy_route_v3.WeightedCluster_ClusterWeight{
|
cw := &envoy_route_v3.WeightedCluster_ClusterWeight{
|
||||||
Weight: response.MakeUint32Value(weight),
|
Weight: response.MakeUint32Value(weight),
|
||||||
Name: clusterName,
|
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))
|
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{
|
return &envoy_route_v3.Route_Route{
|
||||||
Route: &envoy_route_v3.RouteAction{
|
Route: &envoy_route_v3.RouteAction{
|
||||||
ClusterSpecifier: &envoy_route_v3.RouteAction_WeightedClusters{
|
ClusterSpecifier: &envoy_route_v3.RouteAction_WeightedClusters{
|
||||||
WeightedClusters: &envoy_route_v3.WeightedCluster{
|
WeightedClusters: &envoy_route_v3.WeightedCluster{
|
||||||
Clusters: clusters,
|
Clusters: clusters,
|
||||||
// this field is deprecated, and we should get the desired behavior with the front-end validation
|
|
||||||
TotalWeight: envoyWeightScale, // scaled up 100%
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
|
@ -28,8 +28,7 @@
|
||||||
"name": "v2.db.default.dc2.internal.11111111-2222-3333-4444-555555555555.consul",
|
"name": "v2.db.default.dc2.internal.11111111-2222-3333-4444-555555555555.consul",
|
||||||
"weight": 5000
|
"weight": 5000
|
||||||
}
|
}
|
||||||
],
|
]
|
||||||
"totalWeight": 10000
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -57,8 +57,7 @@
|
||||||
"name": "db.default.dc1.internal.11111111-2222-3333-4444-555555555555.consul",
|
"name": "db.default.dc1.internal.11111111-2222-3333-4444-555555555555.consul",
|
||||||
"weight": 450
|
"weight": 450
|
||||||
}
|
}
|
||||||
],
|
]
|
||||||
"totalWeight": 10000
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -360,8 +360,7 @@
|
||||||
"name": "lil-bit-side.default.dc1.internal.11111111-2222-3333-4444-555555555555.consul",
|
"name": "lil-bit-side.default.dc1.internal.11111111-2222-3333-4444-555555555555.consul",
|
||||||
"weight": 50
|
"weight": 50
|
||||||
}
|
}
|
||||||
],
|
]
|
||||||
"totalWeight": 10000
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
@ -125,8 +125,7 @@
|
||||||
],
|
],
|
||||||
"weight": 50
|
"weight": 50
|
||||||
}
|
}
|
||||||
],
|
]
|
||||||
"totalWeight": 10000
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -58,8 +58,7 @@
|
||||||
"name": "db.default.dc1.internal.11111111-2222-3333-4444-555555555555.consul",
|
"name": "db.default.dc1.internal.11111111-2222-3333-4444-555555555555.consul",
|
||||||
"weight": 450
|
"weight": 450
|
||||||
}
|
}
|
||||||
],
|
]
|
||||||
"totalWeight": 10000
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,8 +28,7 @@
|
||||||
"name": "v2.db.default.dc2.internal.11111111-2222-3333-4444-555555555555.consul",
|
"name": "v2.db.default.dc2.internal.11111111-2222-3333-4444-555555555555.consul",
|
||||||
"weight": 5000
|
"weight": 5000
|
||||||
}
|
}
|
||||||
],
|
]
|
||||||
"totalWeight": 10000
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -399,8 +399,7 @@
|
||||||
"name": "lil-bit-side.default.dc1.internal.11111111-2222-3333-4444-555555555555.consul",
|
"name": "lil-bit-side.default.dc1.internal.11111111-2222-3333-4444-555555555555.consul",
|
||||||
"weight": 50
|
"weight": 50
|
||||||
}
|
}
|
||||||
],
|
]
|
||||||
"totalWeight": 10000
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
@ -361,8 +361,7 @@
|
||||||
"name": "lil-bit-side.default.dc1.internal.11111111-2222-3333-4444-555555555555.consul",
|
"name": "lil-bit-side.default.dc1.internal.11111111-2222-3333-4444-555555555555.consul",
|
||||||
"weight": 50
|
"weight": 50
|
||||||
}
|
}
|
||||||
],
|
]
|
||||||
"totalWeight": 10000
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
@ -126,8 +126,7 @@
|
||||||
],
|
],
|
||||||
"weight": 50
|
"weight": 50
|
||||||
}
|
}
|
||||||
],
|
]
|
||||||
"totalWeight": 10000
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,8 +27,7 @@
|
||||||
"name": "exported~db.default.dc1.internal.11111111-2222-3333-4444-555555555555.consul",
|
"name": "exported~db.default.dc1.internal.11111111-2222-3333-4444-555555555555.consul",
|
||||||
"weight": 4000
|
"weight": 4000
|
||||||
}
|
}
|
||||||
],
|
]
|
||||||
"totalWeight": 10000
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
@ -27,8 +27,7 @@
|
||||||
"name": "v2.db.default.dc2.internal.11111111-2222-3333-4444-555555555555.consul",
|
"name": "v2.db.default.dc2.internal.11111111-2222-3333-4444-555555555555.consul",
|
||||||
"weight": 5000
|
"weight": 5000
|
||||||
}
|
}
|
||||||
],
|
]
|
||||||
"totalWeight": 10000
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -361,8 +361,7 @@
|
||||||
"name": "lil-bit-side.default.dc1.internal.11111111-2222-3333-4444-555555555555.consul",
|
"name": "lil-bit-side.default.dc1.internal.11111111-2222-3333-4444-555555555555.consul",
|
||||||
"weight": 50
|
"weight": 50
|
||||||
}
|
}
|
||||||
],
|
]
|
||||||
"totalWeight": 10000
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
@ -360,8 +360,7 @@
|
||||||
"name": "lil-bit-side.default.dc1.internal.11111111-2222-3333-4444-555555555555.consul",
|
"name": "lil-bit-side.default.dc1.internal.11111111-2222-3333-4444-555555555555.consul",
|
||||||
"weight": 50
|
"weight": 50
|
||||||
}
|
}
|
||||||
],
|
]
|
||||||
"totalWeight": 10000
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
@ -264,22 +264,15 @@ func (pr *ProxyResources) makeEnvoyRouteActionFromProxystateRouteDestination(psR
|
||||||
case *pbproxystate.RouteDestination_WeightedClusters:
|
case *pbproxystate.RouteDestination_WeightedClusters:
|
||||||
psWeightedClusters := psRouteDestination.GetWeightedClusters()
|
psWeightedClusters := psRouteDestination.GetWeightedClusters()
|
||||||
envoyClusters := make([]*envoy_route_v3.WeightedCluster_ClusterWeight, 0, len(psWeightedClusters.GetClusters()))
|
envoyClusters := make([]*envoy_route_v3.WeightedCluster_ClusterWeight, 0, len(psWeightedClusters.GetClusters()))
|
||||||
totalWeight := 0
|
|
||||||
for _, psCluster := range psWeightedClusters.GetClusters() {
|
for _, psCluster := range psWeightedClusters.GetClusters() {
|
||||||
pr.addEnvoyClustersAndEndpointsToEnvoyResources(psCluster.Name)
|
pr.addEnvoyClustersAndEndpointsToEnvoyResources(psCluster.Name)
|
||||||
|
|
||||||
totalWeight += int(psCluster.Weight.GetValue())
|
|
||||||
envoyClusters = append(envoyClusters, makeEnvoyClusterWeightFromProxystateWeightedCluster(psCluster))
|
envoyClusters = append(envoyClusters, makeEnvoyClusterWeightFromProxystateWeightedCluster(psCluster))
|
||||||
}
|
}
|
||||||
var envoyWeightScale *wrapperspb.UInt32Value
|
|
||||||
if totalWeight == 10000 {
|
|
||||||
envoyWeightScale = response.MakeUint32Value(10000)
|
|
||||||
}
|
|
||||||
|
|
||||||
envoyRouteRoute.Route.ClusterSpecifier = &envoy_route_v3.RouteAction_WeightedClusters{
|
envoyRouteRoute.Route.ClusterSpecifier = &envoy_route_v3.RouteAction_WeightedClusters{
|
||||||
WeightedClusters: &envoy_route_v3.WeightedCluster{
|
WeightedClusters: &envoy_route_v3.WeightedCluster{
|
||||||
Clusters: envoyClusters,
|
Clusters: envoyClusters,
|
||||||
TotalWeight: envoyWeightScale,
|
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
|
|
|
@ -174,8 +174,7 @@
|
||||||
"name": "backend2.default.dc1.internal.domain.consul",
|
"name": "backend2.default.dc1.internal.domain.consul",
|
||||||
"weight": 5000
|
"weight": 5000
|
||||||
}
|
}
|
||||||
],
|
]
|
||||||
"total_weight": 10000
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue