Feat/exclude workloads managed by scaled object #76
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Motivation
As stated in #64: workloads managed by ScaledObjects are currently also scaled by the Downscaler. This results in the ScaledObject and the downscaler fighting to downscale those workloads to (possibly) different Replicas.
This PRs solves this problem by excluding from downscaling all the workloads managed by a Keda ScaledObject. The solution works in this way:
Prerequisite: all ScaledObjects should be processed first by the algorithm
FilterExcluded
function:targetRef
, which is derived from the combination of (Kind+Name+Namespace):isManagedByKeda
function computes a hash for the workload using (Kind+Name+Namespace)Changes
FilterExcluded
to implement the solution proposedcomputeHash
function to compute a Sum64 hashOrderIncludeResourcesArgument
function to enforce the order of submission for resources inside--include-resources
argumentGroupVersionKind
Tests done
TODO