A deep dive into ARC the Kubernetes operator to scale self-hosted runners
Stop manually managing runners. Get an on-demand, scalable GitHub Actions experience inside your own Kubernetes cluster with ARC.
#1about 2 minutes
Introducing the Actions Runner Controller for GitHub Actions
Actions Runner Controller (ARC) is an open-source project, now maintained by GitHub, for managing and scaling self-hosted runners on demand.
#2about 2 minutes
A live demonstration of auto-scaling self-hosted runners
See how a queued GitHub Actions workflow automatically triggers the creation of new runner pods in a Kubernetes cluster.
#3about 3 minutes
Understanding the core concept of Kubernetes control loops
Kubernetes operators use control loops, also known as reconciliation loops, to continuously check and enforce a desired state for resources.
#4about 1 minute
The high-level architecture of ARC and GitHub Actions
The controller runs in your Kubernetes cluster and communicates with GitHub to manage runner scale sets based on workflow demands.
#5about 1 minute
Why you should run ARC in a dedicated Kubernetes cluster
Isolate ARC from production workloads to prevent noisy neighbor problems and security risks from running arbitrary code.
#6about 4 minutes
How ARC controllers and custom resources work together
ARC installs a controller manager with multiple control loops, each responsible for reconciling a specific custom resource like runner scale sets.
#7about 5 minutes
The role of runner scale sets and the listener pod
Runner scale sets are pools of homogeneous runners, and a dedicated listener pod makes scaling decisions based on messages from GitHub.
#8about 6 minutes
A step-by-step workflow for scaling up a new runner
A workflow trigger sends a message to the listener, which patches a resource to increase the runner count, prompting a controller to create a new runner pod.
#9about 5 minutes
Exploring the open-source ARC repository on GitHub
A tour of the Actions Runner Controller codebase highlights its structure and the distinction between legacy community modes and the new GitHub-supported mode.
#10about 5 minutes
Defining custom resources for the ARC controller
The controller uses custom resource definitions (CRDs) to extend the Kubernetes API, creating new resource types like AutoscalingRunnerSet.
#11about 5 minutes
A look inside the controller's reconciliation function
The core logic of the operator resides in the reconciliation function, which compares the current state to the desired state and applies necessary changes.
#12about 3 minutes
How the listener application uses a long-poll connection
The listener runs as a separate application that establishes a long-poll HTTPS connection to the GitHub Actions backend to receive job messages.
#13about 7 minutes
Packaging and publishing ARC with Helm and OCI images
ARC is distributed as OCI-compliant Helm charts and a container image containing the controller manager and listener applications.
#14about 3 minutes
Common challenges when scaling self-hosted runners
Key challenges include scaling quickly to meet demand, scaling down to zero, and managing resource limitations within the Kubernetes cluster.
#15about 4 minutes
Career advice for aspiring self-taught developers
Beyond learning a tech stack, focus on software engineering fundamentals like data structures, algorithms, and writing maintainable code.
Related jobs
Jobs that call for the skills explored in this talk.
Why Attend a Developer Event?Modern software engineering moves too fast for documentation alone. Attending a world-class event is about shifting from tactical execution to strategic leadership.
Skill Diversification: Break out of your specific tech stack to see how the industry...
With AIs wide open - WeAreDevelopers at All Things Open 2025Last week our VP of Developer Relations, Chris Heilmann, flew to Raleigh, North Carolina to present at All Things Open . An excellent event he had spoken at a few times in the past and this being the “Lucky 13” edition, he didn’t hesitate to come and...