diff --git a/injection/config.go b/injection/config.go index 01a5962b7e..54225b0718 100644 --- a/injection/config.go +++ b/injection/config.go @@ -20,6 +20,7 @@ import ( "errors" "flag" "log" + "math" "os" "os/user" "path/filepath" @@ -37,6 +38,9 @@ func ParseAndGetRESTConfigOrDie() *rest.Config { "The address of the Kubernetes API server. Overrides any value in kubeconfig. Only required if out-of-cluster.") kubeconfig = flag.String("kubeconfig", "", "Path to a kubeconfig. Only required if out-of-cluster.") + + burst = flag.Int("kube-api-burst", 0, "Maximum burst for throttle.") + qps = flag.Float64("kube-api-qps", 0, "Maximum QPS to the server from the client.") ) klog.InitFlags(flag.CommandLine) flag.Parse() @@ -46,9 +50,27 @@ func ParseAndGetRESTConfigOrDie() *rest.Config { log.Fatal("Error building kubeconfig: ", err) } + validBurstOrDie(*burst) + validQPSOrDie(*qps) + + cfg.Burst = *burst + cfg.QPS = float32(*qps) + return cfg } +func validBurstOrDie(burst int) { + if burst < 0 { + log.Fatal("Invalid burst value", burst) + } +} + +func validQPSOrDie(qps float64) { + if qps < 0 || qps > math.MaxFloat32 { + log.Fatal("Invalid QPS value", qps) + } +} + // GetRESTConfig returns a rest.Config to be used for kubernetes client creation. // It does so in the following order: // 1. Use the passed kubeconfig/serverURL.