From 4db9701c62c7f88cd2196098a99808f166a84579 Mon Sep 17 00:00:00 2001 From: Henrique Fernandes Date: Wed, 11 Nov 2020 17:48:27 -0300 Subject: [PATCH] Add QPS and Burst configs for kubernetes client Implemented as requested in PR723 supersedes: https://github.com/weaveworks/flagger/pull/723 fixes: https://github.com/weaveworks/flagger/issues/638 --- charts/flagger/templates/deployment.yaml | 6 ++++++ charts/flagger/values.yaml | 3 +++ cmd/flagger/main.go | 10 ++++++++++ 3 files changed, 19 insertions(+) diff --git a/charts/flagger/templates/deployment.yaml b/charts/flagger/templates/deployment.yaml index 363c18ade..3d8b246c2 100644 --- a/charts/flagger/templates/deployment.yaml +++ b/charts/flagger/templates/deployment.yaml @@ -115,6 +115,12 @@ spec: {{- if .Values.eventWebhook }} - -event-webhook={{ .Values.eventWebhook }} {{- end }} + {{- if .Values.kubeconfigQPS }} + - -kubeconfig-qps={{ .Values.kubeconfigQPS }} + {{- end }} + {{- if .Values.kubeconfigBurst }} + - -kubeconfig-burst={{ .Values.kubeconfigBurst }} + {{- end }} {{- if .Values.istio.kubeconfig.secretName }} - -kubeconfig-service-mesh=/tmp/istio-host/{{ .Values.istio.kubeconfig.key }} {{- end }} diff --git a/charts/flagger/values.yaml b/charts/flagger/values.yaml index 3b72e870a..15cd45d18 100644 --- a/charts/flagger/values.yaml +++ b/charts/flagger/values.yaml @@ -127,6 +127,9 @@ prometheus: image: docker.io/prom/prometheus:v2.21.0 retention: 2h +kubeconfigQPS: "" +kubeconfigBurst: "" + # Istio multi-cluster service mesh (shared control plane single-network) # https://istio.io/docs/setup/install/multicluster/shared-vpn/ istio: diff --git a/cmd/flagger/main.go b/cmd/flagger/main.go index 5267f08e4..d0c54d77b 100644 --- a/cmd/flagger/main.go +++ b/cmd/flagger/main.go @@ -38,6 +38,8 @@ import ( var ( masterURL string kubeconfig string + kubeconfigQPS int + kubeconfigBurst int metricsServer string controlLoopInterval time.Duration logLevel string @@ -65,6 +67,8 @@ var ( func init() { flag.StringVar(&kubeconfig, "kubeconfig", "", "Path to a kubeconfig. Only required if out-of-cluster.") + flag.IntVar(&kubeconfigQPS, "kubeconfig-qps", 100, "Set QPS for kubeconfig.") + flag.IntVar(&kubeconfigBurst, "kubeconfig-burst", 250, "Set Burst for kubeconfig.") flag.StringVar(&masterURL, "master", "", "The address of the Kubernetes API server. Overrides any value in kubeconfig. Only required if out-of-cluster.") flag.StringVar(&metricsServer, "metrics-server", "http://prometheus:9090", "Prometheus URL.") flag.DurationVar(&controlLoopInterval, "control-loop-interval", 10*time.Second, "Kubernetes API sync interval.") @@ -118,6 +122,9 @@ func main() { logger.Fatalf("Error building kubeconfig: %v", err) } + cfg.QPS = float32(kubeconfigQPS) + cfg.Burst = kubeconfigBurst + kubeClient, err := kubernetes.NewForConfig(cfg) if err != nil { logger.Fatalf("Error building kubernetes clientset: %v", err) @@ -137,6 +144,9 @@ func main() { logger.Fatalf("Error building host kubeconfig: %v", err) } + cfgHost.QPS = float32(kubeconfigQPS) + cfgHost.Burst = kubeconfigBurst + meshClient, err := clientset.NewForConfig(cfgHost) if err != nil { logger.Fatalf("Error building mesh clientset: %v", err)