Skip to content

Commit 18ddecf

Browse files
authored
Becoming stateless + supporting multiple metrics (#28)
1 parent 368367c commit 18ddecf

File tree

8 files changed

+202
-388
lines changed

8 files changed

+202
-388
lines changed

cmd/autoscaler/app/autoscaler.go

Lines changed: 5 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -18,24 +18,11 @@ import (
1818
func Run(kubeconfigPath string,
1919
namespace string,
2020
scaleInterval time.Duration,
21-
scaleWindow time.Duration,
22-
metricName string,
23-
scaleThreshold int64,
24-
metricsInterval time.Duration,
2521
metricsGroupKind string) error {
2622
autoScalerOptions := scaler_types.AutoScalerOptions{
2723
Namespace: namespace,
2824
ScaleInterval: scaleInterval,
29-
ScaleWindow: scaleWindow,
30-
Threshold: scaleThreshold,
31-
MetricName: metricName,
32-
}
33-
34-
pollerOptions := scaler_types.PollerOptions{
35-
Namespace: namespace,
36-
MetricName: metricName,
37-
MetricInterval: metricsInterval,
38-
GroupKind: metricsGroupKind,
25+
GroupKind: metricsGroupKind,
3926
}
4027

4128
pluginLoader, err := pluginloader.New()
@@ -56,7 +43,6 @@ func Run(kubeconfigPath string,
5643
if resourceScalerConfig != nil {
5744
kubeconfigPath = resourceScalerConfig.KubeconfigPath
5845
autoScalerOptions = resourceScalerConfig.AutoScalerOptions
59-
pollerOptions = resourceScalerConfig.PollerOptions
6046
}
6147

6248
restConfig, err := getClientConfig(kubeconfigPath)
@@ -73,15 +59,6 @@ func Run(kubeconfigPath string,
7359
return errors.Wrap(err, "Failed to start scaler")
7460
}
7561

76-
newPoller, err := createPoller(restConfig, newScaler, pollerOptions)
77-
if err != nil {
78-
return errors.Wrap(err, "Failed to create poller")
79-
}
80-
81-
if err := newPoller.Start(); err != nil {
82-
return errors.Wrap(err, "Failed to start poller")
83-
}
84-
8562
select {}
8663
}
8764

@@ -93,34 +70,18 @@ func createAutoScaler(restConfig *rest.Config,
9370
return nil, errors.Wrap(err, "Failed to initialize root logger")
9471
}
9572

96-
newScaler, err := autoscaler.NewAutoScaler(rootLogger, resourceScaler, options)
97-
98-
if err != nil {
99-
return nil, err
100-
}
101-
102-
return newScaler, nil
103-
}
104-
105-
func createPoller(restConfig *rest.Config,
106-
reporter autoscaler.MetricReporter,
107-
options scaler_types.PollerOptions) (*autoscaler.MetricsPoller, error) {
108-
rootLogger, err := nucliozap.NewNuclioZap("autoscaler", "console", os.Stdout, os.Stderr, nucliozap.DebugLevel)
109-
if err != nil {
110-
return nil, errors.Wrap(err, "Failed to initialize root logger")
111-
}
112-
11373
customMetricsClient, err := custommetricsv1.NewForConfig(restConfig)
11474
if err != nil {
11575
return nil, errors.Wrap(err, "Failed create custom metrics client set")
11676
}
11777

118-
newPoller, err := autoscaler.NewMetricsPoller(rootLogger, reporter, customMetricsClient, options)
78+
newScaler, err := autoscaler.NewAutoScaler(rootLogger, resourceScaler, customMetricsClient, options)
79+
11980
if err != nil {
120-
return nil, errors.Wrap(err, "Failed to create metrics poller")
81+
return nil, err
12182
}
12283

123-
return newPoller, err
84+
return newScaler, nil
12485
}
12586

12687
func getClientConfig(kubeconfigPath string) (*rest.Config, error) {

cmd/autoscaler/main.go

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,22 +15,14 @@ func main() {
1515
kubeconfigPath := flag.String("kubeconfig-path", os.Getenv("KUBECONFIG"), "Path of kubeconfig file")
1616
namespace := flag.String("namespace", "", "Namespace to listen on, or * for all")
1717
scaleInterval := flag.Duration("scale-interval", time.Minute, "Interval to call check scale function")
18-
scaleWindow := flag.Duration("scale-window", time.Minute, "Time window after initial value to act upon")
19-
metricsInterval := flag.Duration("metrics-poll-interval", time.Minute, "Interval to poll custom metrics")
2018
metricsGroupKind := flag.String("metrics-group-kind", "", "Metrics resource kind")
21-
metricName := flag.String("metric-name", "", "Metric name from custom metrics")
22-
scaleThreshold := flag.Int64("scale-threshold", 0, "Maximum allowed value for metric to be considered below active")
2319
flag.Parse()
2420

2521
*namespace = common.GetNamespace(*namespace)
2622

2723
if err := app.Run(*kubeconfigPath,
2824
*namespace,
2925
*scaleInterval,
30-
*scaleWindow,
31-
*metricName,
32-
*scaleThreshold,
33-
*metricsInterval,
3426
*metricsGroupKind); err != nil {
3527
errors.PrintErrorStack(os.Stderr, err, 5)
3628

0 commit comments

Comments
 (0)