Skip to content

Commit c7373e7

Browse files
authored
feat: adding ratelimiting parameters (#74)
1 parent b4a654f commit c7373e7

File tree

5 files changed

+29
-5
lines changed

5 files changed

+29
-5
lines changed

charts/nidhogg/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ A Helm chart for Kubernetes
1212
|-----|------|---------|-------------|
1313
| affinity | object | `{}` | |
1414
| configuration | object | `{"taintRemovalDelayInSeconds":5}` | Configuration for nidhogg |
15+
| extraArgs | object | `{}` | |
1516
| extraLabels | object | `{}` | |
1617
| fullnameOverride | string | `""` | |
1718
| image.pullPolicy | string | `"IfNotPresent"` | |

charts/nidhogg/templates/statefulset.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,9 @@ spec:
4444
- --leader-election
4545
- --leader-namespace={{ $.Release.Namespace }}
4646
- --leader-configmap=nidhogg-election
47+
{{- range $key, $value := .Values.extraArgs }}
48+
- --{{ $key }}={{ $value }}
49+
{{- end }}
4750
env:
4851
- name: POD_NAMESPACE
4952
valueFrom:

charts/nidhogg/values.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,3 +84,8 @@ nodeSelector: {}
8484
tolerations: []
8585

8686
affinity: {}
87+
88+
extraArgs: {}
89+
# kube-api-qps: 20
90+
# kube-api-burst: 30
91+
# disable-compression: true

cmd/manager/main.go

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,14 @@ import (
3535
)
3636

3737
var (
38-
metricsAddr string
39-
configPath string
40-
leaderElection bool
41-
leaderConfigMap string
42-
leaderNamespace string
38+
metricsAddr string
39+
configPath string
40+
leaderElection bool
41+
leaderConfigMap string
42+
leaderNamespace string
43+
clientRequestQPS float64
44+
clientRequestBurst int
45+
disableCompression bool
4346
)
4447

4548
func main() {
@@ -49,6 +52,9 @@ func main() {
4952
flag.BoolVar(&leaderElection, "leader-election", false, "enable leader election")
5053
flag.StringVar(&leaderConfigMap, "leader-configmap", "", "Name of configmap to use for leader election")
5154
flag.StringVar(&leaderNamespace, "leader-namespace", "", "Namespace where leader configmap located")
55+
flag.Float64Var(&clientRequestQPS, "kube-api-qps", 20.0, "QPS rate for throttling requests sent to the Kubernetes API server")
56+
flag.IntVar(&clientRequestBurst, "kube-api-burst", 30, "Maximum burst for throttling requests sent to the Kubernetes API server")
57+
flag.BoolVar(&disableCompression, "disable-compression", true, "Disable response compression for k8s restAPI in client-go")
5258
flag.Parse()
5359
logf.SetLogger(zap.New())
5460
log := logf.Log.WithName("entrypoint")
@@ -68,6 +74,9 @@ func main() {
6874
// Get a config to talk to the apiserver
6975
log.Info("setting up client for manager")
7076
cfg, err := config.GetConfig()
77+
cfg.QPS = float32(clientRequestQPS)
78+
cfg.Burst = clientRequestBurst
79+
cfg.DisableCompression = disableCompression
7180
if err != nil {
7281
log.Error(err, "unable to set up client config")
7382
os.Exit(1)

docs/README.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,5 +100,11 @@ We publish a helm chart to https://ghcr.io/pelotech/charts/nidhogg
100100
The address of the Kubernetes API server. Overrides any value in kubeconfig. Only required if out-of-cluster.
101101
-metrics-addr string
102102
The address the metric endpoint binds to. (default ":8080")
103+
-kube-api-qps float
104+
QPS rate for throttling requests sent to the Kubernetes API server (default 20)
105+
-kube-api-burst int
106+
Maximum burst for throttling requests sent to the Kubernetes API server (default 30)
107+
-disable-compression bool
108+
Disable response compression for k8s restAPI in client-go (default true)
103109
```
104110

0 commit comments

Comments
 (0)