Commit Graph

9 Commits

Author SHA1 Message Date
Jorge Turrado Ferrero b5c41c8c2a
chore: add golangci-lint (#584) 2023-01-27 08:52:15 +01:00
Aaron Schlesinger 81f1f75da7
Patching ScaledObjects in the operator when they already exist (#402)
* patching scaledobjects that already exist

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* updating test to check for updates

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>
2022-02-18 12:36:20 -08:00
Aaron Schlesinger eb4e1e9f42
Allowing cluster-global operation (#269)
* Allowing cluster-global operation

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* passing less unnecessary data in the operator

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* setting namespace

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* updating tests:

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* Updating deployment cache interfaces

To accommodate multi-namespace gets and watches

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* starting on deployment cache informer

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* switching over to informer-based deployment cache

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* fixing test compile errors and merging fake and in-memory deployment caches

Signed-off-by: Aaron <aaron@ecomaz.net>

* fixing tests

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* fixing more compile errs

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* improving logging, and several other small changes

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* go mod tidy

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* Adding config validation

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* improving ns and svc name var names to indicate interceptor

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* running go mod tidy

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* removing unused code

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* passing a function to transform target to in-cluster URL

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* not requiring namespace for operator

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* splitting namespace config for operator into watch and current

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* removing appInfo, passing current namespace everywhere in its place

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* using proper namespace when creating scaled object

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* allowing xkcd chart to set ingress namespace

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* printing namespace in error

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* using proper fully-qualified hostname of external scaler in scaledobject

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* adding note on cluster-global vs. namespaced mode

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* adding note about installing the xkcd chart in cluster-global mode

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* fixing hostname test

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* merging scaler queue counts with routing table hosts. removing merge functionality from interceptors

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* fix assumption in tests that queue has all hosts from routing table

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* adding test for MergeCountsWithRoutingTable

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* sleep for longer to wait for server to start

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* adding handler test for merging hosts

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* adding test to GetMetrics test cases for host not in queue pinger

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>
2022-01-13 14:50:49 -08:00
Aaron Schlesinger c211da9bd1
Multi-tenant interceptor and scaler (#206)
* multi-tenant interceptor and scaler

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* specifying host in XKCD ingress

Signed-off-by: Aaron Schlesinger <70865+arschles@users.noreply.github.com>

* routing the xkcd chart to the interceptor properly

Signed-off-by: Aaron Schlesinger <70865+arschles@users.noreply.github.com>

* check host header first

Signed-off-by: Aaron Schlesinger <70865+arschles@users.noreply.github.com>

* sending true active response in stream

Signed-off-by: Aaron Schlesinger <70865+arschles@users.noreply.github.com>

* passing target pending requests through to the underlying ScaledObject (so the scaler can read it later)

Signed-off-by: Aaron Schlesinger <70865+arschles@users.noreply.github.com>

* removing broken target pending requests

Signed-off-by: Aaron Schlesinger <70865+arschles@users.noreply.github.com>

* using getHost in proxy handler

Signed-off-by: Aaron Schlesinger <70865+arschles@users.noreply.github.com>

* adding integration test

Signed-off-by: Aaron Schlesinger <70865+arschles@users.noreply.github.com>

* adding more tests to the integration test

Signed-off-by: Aaron Schlesinger <70865+arschles@users.noreply.github.com>

* splitting up integration tests

Signed-off-by: Aaron Schlesinger <70865+arschles@users.noreply.github.com>

* more checks

Signed-off-by: Aaron Schlesinger <70865+arschles@users.noreply.github.com>

* mark new test TODO

Signed-off-by: Aaron Schlesinger <70865+arschles@users.noreply.github.com>

* expanding interceptor integration tests

Signed-off-by: Aaron Schlesinger <70865+arschles@users.noreply.github.com>

* error messages

Signed-off-by: Aaron Schlesinger <70865+arschles@users.noreply.github.com>

* refactor test

Signed-off-by: Aaron Schlesinger <70865+arschles@users.noreply.github.com>

* more test improvements

Signed-off-by: Aaron Schlesinger <70865+arschles@users.noreply.github.com>

* rolling back target pending requests in ScaledObject

Signed-off-by: Aaron Schlesinger <70865+arschles@users.noreply.github.com>

* removing target metric error. it's not used anymore

Signed-off-by: Aaron Schlesinger <70865+arschles@users.noreply.github.com>

* improving waitFunc test

Signed-off-by: Aaron Schlesinger <70865+arschles@users.noreply.github.com>

* Refactoring the deployment cache to add better error handing and resilience.

Signed-off-by: Aaron Schlesinger <70865+arschles@users.noreply.github.com>

* adding doc comment

Signed-off-by: Aaron Schlesinger <70865+arschles@users.noreply.github.com>

* refactoring deploy cache and adding tests

Signed-off-by: Aaron Schlesinger <70865+arschles@users.noreply.github.com>

* Using interfaces for deployment watch & list

this makes tests easier

Signed-off-by: Aaron Schlesinger <70865+arschles@users.noreply.github.com>

* adding more deploy cache tests

Signed-off-by: Aaron Schlesinger <70865+arschles@users.noreply.github.com>

* Fixing up TestK8sDeploymentCacheRewatch

Signed-off-by: Aaron Schlesinger <70865+arschles@users.noreply.github.com>

* shutting down everything else when one thing errors, and adding a deployments cache endpoint

Signed-off-by: Aaron Schlesinger <70865+arschles@users.noreply.github.com>

* removing commented code

Signed-off-by: Aaron Schlesinger <70865+arschles@users.noreply.github.com>

* clarifying deployment cache JSON output, and simplifying deployment watch function

Signed-off-by: Aaron Schlesinger <70865+arschles@users.noreply.github.com>

* adding TODO tests

Signed-off-by: Aaron Schlesinger <70865+arschles@users.noreply.github.com>

* error logs and restoring the count middleware

Signed-off-by: Aaron Schlesinger <70865+arschles@users.noreply.github.com>

* using consistent net/http package name throughout main.go

Signed-off-by: Aaron Schlesinger <70865+arschles@users.noreply.github.com>

* Refactoring deployment cache deployment storage

Also, running go mod tidy and adding new TODO (i.e. failing) tests

Signed-off-by: Aaron Schlesinger <70865+arschles@users.noreply.github.com>

* using deployment.Status.ReadyReplicas, instead of just replicas

Signed-off-by: Aaron Schlesinger <70865+arschles@users.noreply.github.com>

* integration_tets ==> proxy_handlers_integration_test

Signed-off-by: Aaron Schlesinger <70865+arschles@users.noreply.github.com>

* adding some resilience to tests

Signed-off-by: Aaron Schlesinger <70865+arschles@users.noreply.github.com>

* adding deployment cache endpoint documentation

Signed-off-by: Aaron Schlesinger <70865+arschles@users.noreply.github.com>

* running the global test target with sh.RunV

Signed-off-by: Aaron Schlesinger <70865+arschles@users.noreply.github.com>

* adding timeout to magefile test target

Signed-off-by: Aaron Schlesinger <70865+arschles@users.noreply.github.com>

* finishing one TODO test and adding issue for the rest:

Signed-off-by: Aaron Schlesinger <70865+arschles@users.noreply.github.com>
2021-09-03 10:19:20 +02:00
Aaron Schlesinger 22c912071b
Fixing app creation timing issue (#116)
* upgrading all dockerfile Go versions to 1.16

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* creating new targets for the example/test HTTPScaledObject

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* moving external scaler generated files

the scaler uses the server stubs but the operator now needs to use the client, so it needs to move out of the scaler binary

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* progress on code to wait for scaler

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* checking deployment replicas:

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* Adding health check endpoints to the scaler

Also centralizing config for the scaler with envconfig

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* Closing both the gRPC server and HTTP healthcheck server on context cancel/timeout

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* adding util functions for adding liveness/readiness probes

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* fixing var name

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* adding readiness and liveness probes, and tests for it

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* printing output for scaler tests, even when they fail

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* simplifying scaler health check code

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* adding health check test code to scaler

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>
2021-05-18 18:55:47 +00:00
Aaron Schlesinger 2b395d1548
Scaling up the interceptor (#32)
* Scaling up the interceptor

Fixes https://github.com/kedacore/http-add-on/issues/30

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* Specifying min and max replicas on ScaledObjects

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* respecting the min and max replica count

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* adding new enum types to kubebuilder definition

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* re-generating CRD

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* adding check for interceptor scaled object to tests

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* generalizing unstructured parsing code in test

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>
2021-03-22 12:06:35 -07:00
Aaron Schlesinger fd4cdfe718
Not creating app deployments (#78)
* Allowing users to scale an existing deployment

Fixes https://github.com/kedacore/http-add-on/issues/35

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* checking custom deployment info

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* Adding tests for new deployment logic

Also generalizing test "infrastructure" code

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* regenerating code

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* Remove functionality to auto-create deployments and services

Users provide a scale target ref, which is the name of the
deployment to scale and the service to route to. They are required
to have already deployed these things already

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* Adding more docs

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* regenerating with 0.5.0 controller-gen

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* fixing compile err

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>
2021-03-19 12:58:29 -07:00
Lucas Santos 269d17c410
Add min and max replicas (#85)
* Add min and max replicas

Signed-off-by: Lucas Santos <lhs.santoss@gmail.com>

* Go fmt

Signed-off-by: Lucas Santos <lhs.santoss@gmail.com>

* Update example

Signed-off-by: Lucas Santos <lhs.santoss@gmail.com>

* Fix wrong value key

Signed-off-by: Lucas Santos <lhs.santoss@gmail.com>

* Using internal struct for replicas

Signed-off-by: Lucas Santos <hello@lsantos.dev>

* Update manifests

Signed-off-by: Lucas Santos <hello@lsantos.dev>

* Fix wrong naming

Signed-off-by: Lucas Santos <hello@lsantos.dev>

* Create tests

Signed-off-by: Lucas Santos <hello@lsantos.dev>

Co-authored-by: Aaron Schlesinger <70865+arschles@users.noreply.github.com>
2021-03-15 16:26:36 -07:00
Aaron Schlesinger e0ca238fb2
Beginning to write tests (#43)
* Beginning to write tests

Ref https://github.com/kedacore/http-add-on/issues/13

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* Improve status conditions

Signed-off-by: Lucas Santos <lhs.santoss@gmail.com>

* removing old httpscaledobject CRD

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* starting on the user test

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* refactoring typed Kubernetes clients out

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* finishing delete logic

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* removing now-unused code

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* removing commented unused code

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* fixing lint error

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* first test for createUserApp

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* more checks

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* finishing tests for the service

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* starting with scaled object tests

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* adding GH action for running tests

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* going back to old versions of things

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* running tests on all pushes to main and PRs

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* go mod tidy and a new Makefile target

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* a few fixes

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* fixing compile errs

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* more testing

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* fixing tests

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* adding initial tests for the external scaler

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* starting interceptor tests

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* more interceptor testing

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* starting on proxy handler test

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* more tests for the interceptor, including middleware

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* fixing scaler compile errs

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* commenting cluster connection code

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* removing unneeded NameNamespaceInfo

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* fixing zap logging compile err

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

Co-authored-by: Lucas Santos <lhs.santoss@gmail.com>
2021-02-27 13:29:11 +01:00