-
Notifications
You must be signed in to change notification settings - Fork 97
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add service mesh / GAMMA project based scaling #6
Comments
* starting the scaler and interceptor Signed-off-by: Aaron Schlesinger <[email protected]> * Adding interceptor Signed-off-by: Aaron Schlesinger <[email protected]> * link to issue Signed-off-by: Aaron Schlesinger <[email protected]> * operator and CLI start Signed-off-by: Aaron Schlesinger <[email protected]> * starting on the dockerfiles Signed-off-by: Aaron Schlesinger <[email protected]> * Improving the operator Dockerfile Signed-off-by: Aaron Schlesinger <[email protected]> * fix Signed-off-by: Aaron Schlesinger <[email protected]> * note Signed-off-by: Aaron Schlesinger <[email protected]> * adding go based operator Signed-off-by: Aaron Schlesinger <[email protected]> * a bit of progress Signed-off-by: Aaron Schlesinger <[email protected]> * moving rust operator to old will delete this shortly Signed-off-by: Aaron Schlesinger <[email protected]> * moving goperator to operator forgot to do this last commit Signed-off-by: Aaron Schlesinger <[email protected]> * moving go.mod to root Signed-off-by: Aaron Schlesinger <[email protected]> * marking deprecated Signed-off-by: Aaron Schlesinger <[email protected]> * it builds gs Signed-off-by: Aaron Schlesinger <[email protected]> * progress on the operator Signed-off-by: Aaron Schlesinger <[email protected]> * more progress Signed-off-by: Aaron Schlesinger <[email protected]> * more Signed-off-by: Aaron Schlesinger <[email protected]> * All my changes and implementations (#2) * Fix error with existing variable * Rename ScaledObject to HTTPScaledObject * Add draft implementation for status spec * Rename files to match new naming * Remove scaffolding comments * Change requeue time to 50s * Variable renaming to better read * Add new spec field to make polling configurable * Remove previously added objects in case of error * Set Statuses Signed-off-by: Aaron Schlesinger <[email protected]> * Fix Typos (#4) Signed-off-by: Aaron Schlesinger <[email protected]> * Add RBAC rules for services, pods and deployments (#5) * Fix Typos * Add RBAC rules for services, pods and deployments Signed-off-by: Aaron Schlesinger <[email protected]> * Bunch of changes (#6) * Fix Typos * Implement object deletion * Add prefix for logging * Remove unused status interface * Add status check for "Ready" * Golint * Generate CRD Manifests * Reorder RBAC Roles * Change file namings * Remove CLI part for now * Add internal build context for operator Signed-off-by: Aaron Schlesinger <[email protected]> * Charts, docs, readability and other changes (#8) * Fix Typos * Implement object deletion * Add prefix for logging * Remove unused status interface * Add status check for "Ready" * Golint * Generate CRD Manifests * Reorder RBAC Roles * Change file namings * Remove CLI part for now * Add internal build context for operator * Remove Rust-related things * Add comment docs and reorder packages * Change variable name and add package docs * Add package docs * Add package docs * Rename var for readability * Adds package docs * Remove commented code * Remove unused admin echo server and rename current one * Add more logging and docs * Fix doc * Update readme on cli * Add scaffold to operator chart * Add docs * Golint * Update name in kustomization * Add descriptions to fields * Update default image name * Change resource names * Add version tag to kustomization * Add make command for charts * Create base values file * Add patch for image name * Add environment variable to manager * Update charts/operator/Chart.yaml Co-authored-by: Tom Kerkhove <[email protected]> * Update charts/operator/Chart.yaml Co-authored-by: Tom Kerkhove <[email protected]> * Correct dir name and reuse step * Rename dir to keda-http-operator * Add envs to deployment pkg * Add new statuses for extended objetct * Fixing interceptor listening port * Include new "Terminating" status * Add namespaces for logs * Change variable names * Add new statuses * Code reorder * Create interceptor * Add missing return * Remove comment * Fix link * Remove all references to external scaler address This is because we'll use one external scaler for each new application, so there's no point in having a single environment variable controlling the address of the external scaler. The address will be defined by the operator for each new app and a new scaler will be created. * Fixing external scaler port * Code reorder and creation of external scaler * Improve code readability * Golint * Add colons * Further clean the code * Move functions to other file * Rename files * Add more meaninful names * Rename method * Update roles and enums * Make yamls * Add next TODO * Add todo Co-authored-by: Tom Kerkhove <[email protected]> Signed-off-by: Aaron Schlesinger <[email protected]> * Fixing the operator Dockerfile also adding env vars to allow users to customize docker image names Fixes #5 Signed-off-by: Aaron Schlesinger <[email protected]> * Updating to the KEDA 2.0 external scaler gRPC interface The notable change here is that there is an added StreamIsActive RPC call. The New and Close RPCs are removed. Fixes #3 Signed-off-by: Aaron Schlesinger <[email protected]> * Making the scaler talk to interceptors to get pending HTTP queue sizes Fixes #4 Signed-off-by: Aaron Schlesinger <[email protected]> * Initial install docs Includes various tweaks needed to make install work Signed-off-by: Aaron Schlesinger <[email protected]> * more Signed-off-by: Aaron Schlesinger <[email protected]> * more progress Signed-off-by: Aaron Schlesinger <[email protected]> * proper port and path Signed-off-by: Aaron Schlesinger <[email protected]> * splitting up helm chart Signed-off-by: Aaron Schlesinger <[email protected]> * fix chart, example yaml, and fix panic in operator logging Signed-off-by: Aaron Schlesinger <[email protected]> * fixing log errors Signed-off-by: Aaron Schlesinger <[email protected]> * minor changes Signed-off-by: Aaron Schlesinger <[email protected]> * gracefully moving on when deleting kube resources Signed-off-by: Aaron Schlesinger <[email protected]> * creating dynamic client Signed-off-by: Aaron Schlesinger <[email protected]> * using proper group for scaled objects Signed-off-by: Aaron Schlesinger <[email protected]> * adding scaledobject to ClusterRole Signed-off-by: Aaron Schlesinger <[email protected]> * Helm installation in the Makefile Signed-off-by: Aaron Schlesinger <[email protected]> * more loggign Signed-off-by: Aaron Schlesinger <[email protected]> * properly specifying namespaces etc... Signed-off-by: Aaron Schlesinger <[email protected]> * setting operator deployment pull policy to always Signed-off-by: Aaron Schlesinger <[email protected]> * adding more logs to resource creation Signed-off-by: Aaron Schlesinger <[email protected]> * fixing namespace problems and simplifying code Signed-off-by: Aaron Schlesinger <[email protected]> * proper API version Signed-off-by: Aaron Schlesinger <[email protected]> * aking image names and ports for external scaler and interceptor configurable Signed-off-by: Aaron Schlesinger <[email protected]> * adding docs Signed-off-by: Aaron Schlesinger <[email protected]> * proper env var names Signed-off-by: Aaron Schlesinger <[email protected]> * Specifying proper external scaler ports Also moving the application config in the operator into operator/config Signed-off-by: Aaron Schlesinger <[email protected]> * ports Signed-off-by: Aaron Schlesinger <[email protected]> * updated ScaledObject spec Signed-off-by: Aaron Schlesinger <[email protected]> * proper port formatting for interceptor Signed-off-by: Aaron Schlesinger <[email protected]> * more logging and not requeueing Signed-off-by: Aaron Schlesinger <[email protected]> * cscaler => kedahttp Signed-off-by: Aaron Schlesinger <[email protected]> * trying something out Signed-off-by: Aaron Schlesinger <[email protected]> * adding finalizer, simplifying get code Signed-off-by: Aaron Schlesinger <[email protected]> * finalizers Signed-off-by: Aaron Schlesinger <[email protected]> * ignoring more stuff Signed-off-by: Aaron Schlesinger <[email protected]> * removing the right things Signed-off-by: Aaron Schlesinger <[email protected]> * updating deletion & error logic Signed-off-by: Aaron Schlesinger <[email protected]> * logging status updates Signed-off-by: Aaron Schlesinger <[email protected]> * check for already exists inside specific creator logic Signed-off-by: Aaron Schlesinger <[email protected]> * Fiddling with status Signed-off-by: Aaron Schlesinger <[email protected]> * upgrading CRD version Signed-off-by: Aaron Schlesinger <[email protected]> * Adding instructions on microk8s installs Signed-off-by: Aaron Schlesinger <[email protected]> * Restoring the status file Don't know why I deleted it in arschles@021b5f1 Signed-off-by: Aaron Schlesinger <[email protected]> * myapp => xkcd Signed-off-by: Aaron Schlesinger <[email protected]> * service type Signed-off-by: Aaron Schlesinger <[email protected]> * logging Signed-off-by: Aaron Schlesinger <[email protected]> * configuring services properly Signed-off-by: Aaron Schlesinger <[email protected]> * readme Signed-off-by: Aaron Schlesinger <[email protected]> Co-authored-by: Lucas Santos <[email protected]> Co-authored-by: Tom Kerkhove <[email protected]>
Service meshes we should consider supporting:
Others?? |
We should only support SMI spec which is an open standard, the others are out of luck ;) |
Ah yes, you're right. I just meant that we should look into those service meshes (I have no idea which ones support SMI at the moment) and, if they do, test our integration against them, include them in our docs, and so forth... |
No problem! You can see all supported service meshes on https://smi-spec.io/ |
AWS App Mesh |
As part of this work, we need to add documentation - including updating the architecture diagram - explaining how service meshes integrate with the HTTP add on |
This issue has been automatically marked as stale because it has not had recent activity. It will be closed in 7 days if no further activity occurs. Thank you for your contributions. |
Creates resource somtochi
Hi there, I am curious about the status of this ticket. The roadmap seems to indicate that it's still in the works, but looks like no one is assigned. As it stands, is it possible at all to use the http add-on with in a cluster that has service mesh? |
If traffic goes through it, yes. But there is no integration |
What does that mean? We want to use this for a specific usecase - we have dev deployments that we want to scale to 0 when there is no traffic, and activate and scale back up to previous value when traffic starts again (usually 1 pod), but we also use a service mesh (Istio) and I was wondering how the traffic would flow in that case since envoy already exists as a proxy. Would this work in current form? |
Maybe also consider https://traefik.io/traefik-mesh/ ? |
Does it have a direct integration or built-in support? Ripping up a fully functional service mesh and replacing it with a new one is a very costly endeavor. |
The idea is that the used service mesh technology does not have to be changed and we just plug in. Given the range of service meshes, we should rely on GAMMA |
oh, sorry, a little confuse from my side, I think the traefik mesh compatible with GAMMA but turn out it only follow SMI (but I was thinking that SMI and GAMMA somewhat closed to each other also but it is not). |
Did someone get this working in the current form in service mesh? We are using Istio and I tried deploying the addon with the side-car injection enabled. The controller runs without problems but external scaler and interceptor pods do not come up due to failing readiness and liveness checks. |
…ontrol_plane Interceptor: envoy xDS control plane
The interceptor works with the scaler to provide KEDA with the HTTP queue size, which KEDA in turn uses to scale the app. That arrangement lets a user submit a single
HTTPScaledObject
and have the operator create all the moving pieces required (interceptor, scaler, etc...). We should, however, support service meshes, or really any HTTP server that can (a) route traffic from outside the cluster into a pod (the app) and (b) emit SMI-compatible metrics.The text was updated successfully, but these errors were encountered: