keda icon indicating copy to clipboard operation
keda copied to clipboard

external-scaler documentation seems to be out of date

Open nikolabrdaroski opened this issue 1 year ago • 0 comments

Report

Following the steps provided at https://keda.sh/docs/2.13/concepts/external-scalers/ we implemented the scaler but when we deployed we noticed that keda operator is calling method which is not implemented in the proto file provided https://github.com/kedacore/keda/blob/main/pkg/scalers/externalscaler/externalscaler.proto

Also when you look at first link go example interface looks like:

type Scaler interface {
	GetMetrics(ctx context.Context, metricName string) ([]external_metrics.ExternalMetricValue, error)
	GetMetricSpecForScaling() []v2beta2.MetricSpec
	IsActive(ctx context.Context) (bool, error)
	Close() error
}

while proto looks like:

service ExternalScaler {
    rpc IsActive(ScaledObjectRef) returns (IsActiveResponse) {}
    rpc StreamIsActive(ScaledObjectRef) returns (stream IsActiveResponse) {}
    rpc GetMetricSpec(ScaledObjectRef) returns (GetMetricSpecResponse) {}
    rpc GetMetrics(GetMetricsRequest) returns (GetMetricsResponse) {}
}

Expected Behavior

I expected to have working scaler which will trigger my job to scale

Actual Behavior

I got warning in scaled object: Warning KEDAScalerFailed 2m9s (x11 over 5m29s) keda-operator got empty metric spec

Steps to Reproduce the Problem

Follow the guide provided at https://keda.sh/docs/2.13/concepts/external-scalers/

Logs from KEDA operator

2024-01-25T10:39:11Z	ERROR	external_scaler	error	{"type": "ScaledObject", "namespace": "sftp", "name": "test-2", "error": "rpc error: code = Unimplemented desc = unknown service externalscaler.ExternalScaler"}
github.com/kedacore/keda/v2/pkg/scalers.(*externalScaler).GetMetricSpecForScaling
	/workspace/pkg/scalers/external_scaler.go:175
github.com/kedacore/keda/v2/pkg/scaling/cache.(*ScalersCache).GetMetricSpecForScalingForScaler
	/workspace/pkg/scaling/cache/scalers_cache.go:104
github.com/kedacore/keda/v2/pkg/scaling.(*scaleHandler).getScalerState
	/workspace/pkg/scaling/scale_handler.go:728
github.com/kedacore/keda/v2/pkg/scaling.(*scaleHandler).getScaledObjectState.func1
	/workspace/pkg/scaling/scale_handler.go:628
2024-01-25T10:39:11Z	ERROR	external_scaler	error	{"type": "ScaledObject", "namespace": "sftp", "name": "test-2", "error": "rpc error: code = Unimplemented desc = unknown service externalscaler.ExternalScaler"}
github.com/kedacore/keda/v2/pkg/scalers.(*externalScaler).GetMetricSpecForScaling
	/workspace/pkg/scalers/external_scaler.go:175
github.com/kedacore/keda/v2/pkg/scaling/cache.(*ScalersCache).GetMetricSpecForScalingForScaler
	/workspace/pkg/scaling/cache/scalers_cache.go:113
github.com/kedacore/keda/v2/pkg/scaling.(*scaleHandler).getScalerState
	/workspace/pkg/scaling/scale_handler.go:728
github.com/kedacore/keda/v2/pkg/scaling.(*scaleHandler).getScaledObjectState.func1
	/workspace/pkg/scaling/scale_handler.go:628
2024-01-25T10:39:11Z	ERROR	scale_handler	error getting metric spec for the scaler	{"scaledObject.Namespace": "sftp", "scaledObject.Name": "test-2", "scaler": "externalScaler", "error": "got empty metric spec"}
github.com/kedacore/keda/v2/pkg/scaling.(*scaleHandler).getScalerState
	/workspace/pkg/scaling/scale_handler.go:731
github.com/kedacore/keda/v2/pkg/scaling.(*scaleHandler).getScaledObjectState.func1
	/workspace/pkg/scaling/scale_handler.go:628

KEDA Version

2.13.0

Kubernetes Version

1.27

Platform

Other

Scaler Details

external

Anything else?

No response

nikolabrdaroski avatar Jan 25 '24 10:01 nikolabrdaroski