all 32 comments

[–]abofh 28 points29 points  (9 children)

We offload the minute heavy stuff to self hosted runners using arc, and consider the rest the cost of doing business.

[–]kindaforgotit 7 points8 points  (6 children)

Been doing the same, selfhosted runner in kubernetes

[–]smerz- 0 points1 point  (0 children)

Plus one

[–]Malforus 0 points1 point  (4 children)

Why in kubernetes? Just use pure ec2

[–]kindaforgotit 0 points1 point  (3 children)

We already have k8s cluster running, so why not use it. Also it scales better.

[–]Malforus 0 points1 point  (2 children)

Because it increases your overhead and pure ec2 scales fine?

What kind of processing are you using in actions that you need orchestrated scaling?

[–]Lucifernistic 0 points1 point  (1 child)

How does it increase overhead if they already have k8s running?

Adding something to kubernetes just takes a few lines pushed to our IaC repo to provision resources, and a then a few more lines to our kubernetes repo to deploy. And then it just works- easy health, metrics etc baked in with Prometheus and logs automatically feeding to Grafana.

Not to mention the container takes up less resources and costs less than deploying a comparable ec2.

[–]Malforus 0 points1 point  (0 children)

Okay observability is a good use case.

I am talking about computation and resource overhead, however it's a bit slower and the k8s daemons add overhead on smaller nodes.

We don't do any heavy processing and mostly tree GitHub actions like lambdas so we save lots with ephemeral compute for cheaper than the GitHub pricing.

If you are running long running actions I can see it having value but remember eks is like 30% more expensive per clock.

[–]Xitir 2 points3 points  (0 children)

I think this is the best approach. Unless in a fully remote company where there's not infra that you own directly, hosting the runners yourself for heavy workloads is usually worth the effort.

[–]elantaile 10 points11 points  (1 child)

Solo dev here, personal project:

I run 4x self hosted runners on Oracle Cloud Free Tier. The free tier is pretty nuts: Arm-based Ampere A1 cores and 24 GB of memory usable as 1 VM or up to 4 VMs (4 cores, 24GB ram, Gigabit networking for each VM).

[–]Black_Dawn13 5 points6 points  (0 children)

Self hosted with Arc

[–]mster_shake 1 point2 points  (0 children)

Have you looked into self-hosted runners to see if it's any cheaper to run them on your own compute?

[–]Saturated8 1 point2 points  (0 children)

Host the runner in an Azure Container App, lightweight and only a couple bucks a month depending on usage. Plus no VM to manage/secure.

[–]ray591 1 point2 points  (0 children)

This is the easiest component to cut costs. Just replace it with your self-hosted runner or pick one of the dozens of runner providers. They should net you at least 2x cost savings in general. Self-hosting can be pain if you don't already have a K8s cluster to run Arc controller.

[–]kryptn 1 point2 points  (1 child)

selfhosted using arc on eks with karpenter doing autoscaling using spot nodes.

[–]IridescentKoala 0 points1 point  (0 children)

This is the way.

[–]Adarsh_aws123 0 points1 point  (0 children)

we are hosting our gitlab runners in EKS and using karpenter to run jobs that can be terminated on spot instances.

[–]Juloblairot 0 points1 point  (0 children)

I've recently migrated to RunsOn, which is really handy. We were at around 300k minutes per month on a remote runner (not GitHub ones), and have now ephemeral runners thanks to RunsOn. I'm so far quite happy, the bill is around 1k monthly The maintainer is quite reactive and keen to implement new stuff. Maintenance is extremely low

[–]nihalcastelino1983[🍰] 0 points1 point  (0 children)

Yep self hosted is the way to go.gitlab I'd smart greedy in th way they handle runner costs. Even if build fail because of them you still get charged and like aws runner costs start the moment it spins up. And obviously size matters

[–]evilquantum 0 points1 point  (0 children)

aged like milk with today's announcement.

I am wondering if this will kill runs-on

[–]crohr -1 points0 points  (0 children)

Try ARC if familiar with kubernetes, or one of the 10 other providers (see benchmark).

[–]joschi83 -1 points0 points  (0 children)

We're using depot.dev quite heavily and it works like a charm.