generated from ydataai/opensource-template
-
Notifications
You must be signed in to change notification settings - Fork 0
/
client_config.go
27 lines (23 loc) · 930 Bytes
/
client_config.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
// Package kubernetes is an util library to deal with kubernetes.
package kubernetes
import (
"github.com/kelseyhightower/envconfig"
"k8s.io/client-go/rest"
"k8s.io/client-go/util/flowcontrol"
ctrl "sigs.k8s.io/controller-runtime"
)
// RestClientConfiguration defines required variables to configure the environment
type RestClientConfiguration struct {
ClientQPS float32 `envconfig:"K8S_REST_CLIENT_QPS" default:"100"`
ClientBurst int `envconfig:"K8S_REST_CLIENT_BURST" default:"500"`
}
// LoadFromEnvVars for RestClientConfiguration.
func (c *RestClientConfiguration) LoadFromEnvVars() error {
return envconfig.Process("", c)
}
// Config creates rest client configuration with TokenBucketRateLimiter.
func Config(config RestClientConfiguration) *rest.Config {
kconfig := ctrl.GetConfigOrDie()
kconfig.RateLimiter = flowcontrol.NewTokenBucketRateLimiter(config.ClientQPS, config.ClientBurst)
return kconfig
}