keda
keda copied to clipboard
external-scaler documentation seems to be out of date
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