mirror of
https://github.com/pomerium/pomerium.git
synced 2025-04-29 10:26:29 +02:00
envoy: migrate deprecated overload setting (#5082)
Migrate from overload.global_downstream_max_connections to the suggested envoy.resource_monitors.global_downstream_max_connections replacement.
This commit is contained in:
parent
cc0a989cc0
commit
05e077fe04
2 changed files with 40 additions and 6 deletions
|
@ -12,7 +12,9 @@ import (
|
||||||
envoy_config_core_v3 "github.com/envoyproxy/go-control-plane/envoy/config/core/v3"
|
envoy_config_core_v3 "github.com/envoyproxy/go-control-plane/envoy/config/core/v3"
|
||||||
envoy_config_endpoint_v3 "github.com/envoyproxy/go-control-plane/envoy/config/endpoint/v3"
|
envoy_config_endpoint_v3 "github.com/envoyproxy/go-control-plane/envoy/config/endpoint/v3"
|
||||||
envoy_config_metrics_v3 "github.com/envoyproxy/go-control-plane/envoy/config/metrics/v3"
|
envoy_config_metrics_v3 "github.com/envoyproxy/go-control-plane/envoy/config/metrics/v3"
|
||||||
|
envoy_config_overload_v3 "github.com/envoyproxy/go-control-plane/envoy/config/overload/v3"
|
||||||
envoy_extensions_access_loggers_file_v3 "github.com/envoyproxy/go-control-plane/envoy/extensions/access_loggers/file/v3"
|
envoy_extensions_access_loggers_file_v3 "github.com/envoyproxy/go-control-plane/envoy/extensions/access_loggers/file/v3"
|
||||||
|
envoy_extensions_resource_monitors_downstream_connections_v3 "github.com/envoyproxy/go-control-plane/envoy/extensions/resource_monitors/downstream_connections/v3"
|
||||||
"google.golang.org/protobuf/types/known/durationpb"
|
"google.golang.org/protobuf/types/known/durationpb"
|
||||||
"google.golang.org/protobuf/types/known/structpb"
|
"google.golang.org/protobuf/types/known/structpb"
|
||||||
|
|
||||||
|
@ -21,6 +23,8 @@ import (
|
||||||
"github.com/pomerium/pomerium/internal/telemetry/trace"
|
"github.com/pomerium/pomerium/internal/telemetry/trace"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const maxActiveDownstreamConnections = 50000
|
||||||
|
|
||||||
var (
|
var (
|
||||||
envoyAdminAddressPath = filepath.Join(os.TempDir(), "pomerium-envoy-admin.sock")
|
envoyAdminAddressPath = filepath.Join(os.TempDir(), "pomerium-envoy-admin.sock")
|
||||||
envoyAdminAddressMode = 0o600
|
envoyAdminAddressMode = 0o600
|
||||||
|
@ -68,6 +72,17 @@ func (b *Builder) BuildBootstrap(
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bootstrap.OverloadManager = &envoy_config_overload_v3.OverloadManager{
|
||||||
|
ResourceMonitors: []*envoy_config_overload_v3.ResourceMonitor{{
|
||||||
|
Name: "envoy.resource_monitors.global_downstream_max_connections",
|
||||||
|
ConfigType: &envoy_config_overload_v3.ResourceMonitor_TypedConfig{
|
||||||
|
TypedConfig: marshalAny(&envoy_extensions_resource_monitors_downstream_connections_v3.DownstreamConnectionsConfig{
|
||||||
|
MaxActiveDownstreamConnections: maxActiveDownstreamConnections,
|
||||||
|
}),
|
||||||
|
},
|
||||||
|
}},
|
||||||
|
}
|
||||||
|
|
||||||
return bootstrap, nil
|
return bootstrap, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -135,9 +150,6 @@ func (b *Builder) BuildBootstrapDynamicResources(
|
||||||
// BuildBootstrapLayeredRuntime builds the layered runtime for the envoy bootstrap.
|
// BuildBootstrapLayeredRuntime builds the layered runtime for the envoy bootstrap.
|
||||||
func (b *Builder) BuildBootstrapLayeredRuntime() (*envoy_config_bootstrap_v3.LayeredRuntime, error) {
|
func (b *Builder) BuildBootstrapLayeredRuntime() (*envoy_config_bootstrap_v3.LayeredRuntime, error) {
|
||||||
layer, err := structpb.NewStruct(map[string]interface{}{
|
layer, err := structpb.NewStruct(map[string]interface{}{
|
||||||
"overload": map[string]interface{}{
|
|
||||||
"global_downstream_max_connections": 50000,
|
|
||||||
},
|
|
||||||
"re2": map[string]any{
|
"re2": map[string]any{
|
||||||
"max_program_size": map[string]any{
|
"max_program_size": map[string]any{
|
||||||
"error_level": 1024 * 1024,
|
"error_level": 1024 * 1024,
|
||||||
|
|
|
@ -41,9 +41,6 @@ func TestBuilder_BuildBootstrapLayeredRuntime(t *testing.T) {
|
||||||
{ "layers": [{
|
{ "layers": [{
|
||||||
"name": "static_layer_0",
|
"name": "static_layer_0",
|
||||||
"staticLayer": {
|
"staticLayer": {
|
||||||
"overload": {
|
|
||||||
"global_downstream_max_connections": 50000
|
|
||||||
},
|
|
||||||
"re2": {
|
"re2": {
|
||||||
"max_program_size": {
|
"max_program_size": {
|
||||||
"error_level": 1048576,
|
"error_level": 1048576,
|
||||||
|
@ -126,3 +123,28 @@ func TestBuilder_BuildBootstrapStatsConfig(t *testing.T) {
|
||||||
`, statsCfg)
|
`, statsCfg)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestBuilder_BuildBootstrap(t *testing.T) {
|
||||||
|
b := New("localhost:1111", "localhost:2222", "localhost:3333", filemgr.NewManager(), nil)
|
||||||
|
t.Run("OverloadManager", func(t *testing.T) {
|
||||||
|
bootstrap, err := b.BuildBootstrap(context.Background(), &config.Config{
|
||||||
|
Options: &config.Options{
|
||||||
|
EnvoyAdminAddress: "localhost:9901",
|
||||||
|
},
|
||||||
|
}, false)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
testutil.AssertProtoJSONEqual(t, `
|
||||||
|
{
|
||||||
|
"resourceMonitors": [
|
||||||
|
{
|
||||||
|
"name": "envoy.resource_monitors.global_downstream_max_connections",
|
||||||
|
"typedConfig": {
|
||||||
|
"@type": "type.googleapis.com/envoy.extensions.resource_monitors.downstream_connections.v3.DownstreamConnectionsConfig",
|
||||||
|
"maxActiveDownstreamConnections": "50000"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
`, bootstrap.OverloadManager)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue