-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
11c31b8
commit 5481b38
Showing
1 changed file
with
29 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
# keda-topology-scaler | ||
|
||
## What is this? | ||
|
||
Sometimes you want to run specific services (or pods) once every node, physical host, availability zone, region, .... | ||
Kubernetes itself has the possibility to run a pod on every node (or a subset of nodes, through a selector) by utilizing DaemonSets. | ||
Unfortunately, there's no support for running a DaemonSet once per region or Availability Zone. | ||
|
||
One option would be to create an Operator that's ensuring the pods running in the correct area. This project seeks to bridge the gap between HPA and DaemonSets by exposing the number of values for a specific Node Label (a so called `topologyKey`, as per kubernetes terms) towards [keda](https://keda.sh). This allows you to simply define a autoscaling policy "Run one pod per Availability Zone". | ||
|
||
## Building | ||
|
||
You need a working go + gRPC toolchain, or alternatively build the project directly in a container through the provided Dockerfile. | ||
|
||
## Deployment | ||
|
||
This service needs access to the Kubernetes APIServer through its serviceAccount and implements the KEDA external-scaler API. That way you can simply run it as a Deployment in your cluster, having a service target it and use it afterwards in KEDA through its service DNS name. | ||
|
||
Required RBAC Permissions: | ||
|
||
- Nodes | ||
- get | ||
- list | ||
- watch | ||
|
||
|
||
## Contributing | ||
|
||
If you find a bug, or want to request a feature, please submit an issue and/or fork the project and send a PR. |