You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Currently githubrunnerscalesetlistener bundles Kubernetes usage quite deeply, which requires quite a lot of code duplication when using same approach within e.g. AWS ECS, Azure Container Apps or Google Cloud Run. It would be nice if the code could be refactored in a way that actual implementation of job/container/pod creation would be abstracted away so that same code could easier be reused with other platforms.
It might be that this option still wouldn't enable usage of mentioned platforms same way as Kubernetes, but would allow e.g. easy way to autoscale runners (without container support) in those.
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
-
Currently githubrunnerscalesetlistener bundles Kubernetes usage quite deeply, which requires quite a lot of code duplication when using same approach within e.g. AWS ECS, Azure Container Apps or Google Cloud Run. It would be nice if the code could be refactored in a way that actual implementation of job/container/pod creation would be abstracted away so that same code could easier be reused with other platforms.
I have made a PoC myself towards those 3 mentioned platforms (ECS, ACA, Cloud Run), and it was very helpful to be able to utilize the Actions service connections (from github.com/actions/actions-runner-controller/github/actions). But the actual polling and message hanling had to be copied explicitly as those are part of main package (https://github.com/actions/actions-runner-controller/blob/master/cmd/githubrunnerscalesetlistener/autoScalerService.go#L100C19-L100C33).
Within my PoC (https://github.com/Hi-Fi/gha-runners-on-managed-env/blob/main/autoscaler/main.go#L70) there's already a bit of example of the abstraction, as the actual service just takes in handler that fullfills the interface needs, allowing easily to change the target of the spawned things.
It might be that this option still wouldn't enable usage of mentioned platforms same way as Kubernetes, but would allow e.g. easy way to autoscale runners (without container support) in those.
Beta Was this translation helpful? Give feedback.
All reactions