Migrate KEDA HTTP scaling from HTTPScaledObject to ScaledObject with external trigger
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 35/100
- Issue type
- Feature
- Clarity
- Mostly clear
- Activity status
- Active
- Tech stack
- go
- Domain
- devops, infrastructure
Research direction
Start by locating the KEDA deployer code that creates HTTPScaledObject resources and reviewing how other triggers are assembled. Verify the KEDA HTTP add-on external scaler and InterceptorRoute or route CRD integration; done means one ScaledObject can combine HTTP and other triggers without the duplicate-workload admission error.
Written by the indexing model from the issue text.
Description
Problem
Currently, the KEDA deployer uses HTTPScaledObject for HTTP-based autoscaling. This creates an internal ScaledObject under the hood, which means we cannot create a second ScaledObject for the same Deployment (e.g. for Kafka consumer-lag scaling). KEDA's admission webhook rejects it:
admission webhook "vscaledobject.kb.io" denied the request: the workload 'my-func'
of type 'apps/v1.Deployment' is already managed by the ScaledObject 'my-func'
This makes it impossible to combine HTTP + Kafka triggers on the same function.
Proposed solution
Replace HTTPScaledObject with a single ScaledObject that uses the KEDA HTTP add-on's external scaler as one of its triggers, alongside any other triggers (Kafka, cron, etc.).
The HTTP add-on exposes an external scaler gRPC endpoint that a regular ScaledObject can reference via an external trigger. The interceptor routing can be handled via InterceptorRoute (or the HTTP add-on's route CRD) instead of relying on HTTPScaledObject to set it up.
This would:
- Allow combining HTTP + Kafka (or any other) triggers in a single
ScaledObject - Give us direct control over all trigger configuration in one place
- Remove the hidden internal
ScaledObjectthatHTTPScaledObjectcreates
Current workaround
Users must choose either HTTP-only or Kafka-only triggers — they cannot be combined.
References
- KEDA HTTP add-on external scaler: the add-on runs a gRPC external scaler service
- KEDA limitation: one
ScaledObjectper workload
- Dominant language
- Go
- Stars
- 365
- Forks
- 223
- Avg merge
- 2d 3h
- Merged PRs (30d)
- 25
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from knative/func
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
-
lifecycle/stale
Difficulty 1/5 Under an hour Newbie friendliness 88/100
-
setServiceOptions: %f format produces invalid autoscaling annotation values with trailing zeros Openlifecycle/stale
Difficulty 1/5 Under an hour Newbie friendliness 90/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
-
kind/bug
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
Similar issues
-
Difficulty 1/5 Under an hour Newbie friendliness 84/100
-
enhancement needs triage
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
-
kind/cleanup
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
kubernetes-sigs/kueue#15947 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
sympozium-ai/sympozium#627 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 86/100