cruise-automation / isopod

An expressive DSL and framework for Kubernetes configuration without YAML
Apache License 2.0
482 stars 32 forks source link

Fix throttling requests #43

Closed jonnylangefeld closed 4 years ago

jonnylangefeld commented 4 years ago

Through the version updated introduced in https://github.com/cruise-automation/isopod/pull/39 we picked up an upgrade of the k8s/client-go library. Somwhere inbetween the two versions of the change k8s/client-go introduced an advanced rate limiter, that assumes default qps of 5 and burst of 10. For the requests that isopod makes these assumptions are too low and result in frequent throttling request errors.

This fix introduces higher defaults. To replicate the behavior of isopod v1.1.2, we could also swtich off rate limiting entirely by setting kubeC.QPS = float32(-1), but now that we have a reate limiter available we might as well use it. Also since the k8s/client-go library assumes magic numbers as default, I think its fine if we just raise the defaults.

The effect of this test can be seen by running the following command once with a build from master and once with a build from this branch:

./bin/isopod --context cluster=minikube -kubeconfig=/Users/jonny.langefeld/.kube/config -dry_run install $(pwd)/examples/main.ipd