From 48f26058f58071eefafb080aee508ff2cb9c2f6d Mon Sep 17 00:00:00 2001 From: Chris Berry Date: Mon, 12 Jul 2021 12:12:53 +0100 Subject: [PATCH] Add ratelimitting parameters to keda metrics apiserver to allow override of client defaults (#1944) Signed-off-by: Chris Berry --- CHANGELOG.md | 1 + adapter/main.go | 13 +++++++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a7eb7afe0e2..b32b64e409a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -31,6 +31,7 @@ - Don't panic when HashiCorp Vault path doesn't exist ([#1864](https://github.com/kedacore/keda/pull/1864)) - Allow influxdb `authToken`, `serverURL`, and `organizationName` to be sourced from `(Cluster)TriggerAuthentication` ([#1904](https://github.com/kedacore/keda/pull/1904)) - IBM MQ scaler password handling fix ([#1939](https://github.com/kedacore/keda/pull/1939)) +- Metrics APIServer: Add ratelimiting parameters to override client ([#1944](https://github.com/kedacore/keda/pull/1944)) ### Breaking Changes diff --git a/adapter/main.go b/adapter/main.go index 860242d90fd..75a8cfa7526 100644 --- a/adapter/main.go +++ b/adapter/main.go @@ -44,13 +44,20 @@ type Adapter struct { var logger = klogr.New().WithName("keda_metrics_adapter") var ( - prometheusMetricsPort int - prometheusMetricsPath string + prometheusMetricsPort int + prometheusMetricsPath string + adapterClientRequestQPS float32 + adapterClientRequestBurst int ) func (a *Adapter) makeProvider(globalHTTPTimeout time.Duration) (provider.MetricsProvider, error) { // Get a config to talk to the apiserver cfg, err := config.GetConfig() + if cfg != nil { + cfg.QPS = adapterClientRequestQPS + cfg.Burst = adapterClientRequestBurst + } + if err != nil { logger.Error(err, "failed to get the config") return nil, fmt.Errorf("failed to get the config (%s)", err) @@ -129,6 +136,8 @@ func main() { cmd.Flags().AddGoFlagSet(flag.CommandLine) // make sure we get the klog flags cmd.Flags().IntVar(&prometheusMetricsPort, "metrics-port", 9022, "Set the port to expose prometheus metrics") cmd.Flags().StringVar(&prometheusMetricsPath, "metrics-path", "/metrics", "Set the path for the prometheus metrics endpoint") + cmd.Flags().Float32Var(&adapterClientRequestQPS, "kube-api-qps", 20.0, "Set the QPS rate for throttling requests sent to the apiserver") + cmd.Flags().IntVar(&adapterClientRequestBurst, "kube-api-burst", 30, "Set the burst for throttling requests sent to the apiserver") if err := cmd.Flags().Parse(os.Args); err != nil { return }