Bassem Dghaidi
A deep dive into ARC the Kubernetes operator to scale self-hosted runners
#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.
Full Stack Developer (all genders welcome)
ROSEN Technology and Research Center GmbH
Osnabrück, Germany
Senior
Team Lead DevOps (m/w/d)
Rhein-Main-Verkehrsverbund Servicegesellschaft mbH
Frankfurt am Main, Germany
Senior
Matching moments
00:19 MIN
Introduction to GitOps and the talk agenda
Get ready for operations by pull requests
03:44 MIN
Exploring the core components of GitHub Actions
CI/CD with Github Actions
24:47 MIN
Audience Q&A on DevOps, tools, and process
GitOps for the people
00:09 MIN
A DBA's journey to running SQL Server on Kubernetes
Adjusting Pod Eviction Timings in Kubernetes
04:43 MIN
Enabling developer autonomy with GitOps and CRDs
Software Engineering Social Connection: Yubo’s lean approach to scaling an 80M-user infrastructure
15:33 MIN
The Kubernetes operator pattern for database automation
Databases on Kubernetes: Why you should care
17:48 MIN
Introducing Argo CD as a GitOps operator
Get ready for operations by pull requests
51:53 MIN
Q&A on shared systems and scaling productivity
Forget Developer Platforms, Think Developer Productivity!
Featured Partners
Related Videos
Get ready for operations by pull requests
Liviu Costea
Lights, Camera, GitHub Actions!
Ixchel Ruiz
Coffee With Developers - Kyle Daigle, COO of GitHub
Kyle Daigle
GitOps: The past, present and future
Roberth Strand
Kubernetes Maestro: Dive Deep into Custom Resources to Unleash Next-Level Orchestration Power!
Um e Habiba
Databases on Kubernetes
Denis Souza Rosa
5 steps for running a Kubernetes environment at scale
Stijn Polfliet
CI/CD with Github Actions
Chris Ayers
From learning to earning
Jobs that call for the skills explored in this talk.

DevOps Engineer – Kubernetes & Cloud (m/w/d)
epostbox epb GmbH
Berlin, Germany
Intermediate
Senior
DevOps
Kubernetes
Cloud (AWS/Google/Azure)

AI Platform Engineer - OpenShift & Kubernetes F/H
Arkadin Cloud Communications
Canton d'Antony, France
REST
Linux
Nginx
DevOps
Python
+11


DevOps Engineer. Github Actions
Grupo NS
Municipality of Madrid, Spain
€47-50K
Intermediate
GIT
JIRA
Flask
DevOps
+5



DevOps Engineer / Kubernetes
Passion for People GmbH
Karlsruhe, Germany
Remote
€70-90K
Azure
DevOps
Gitlab
+10

Remote: DevOps / CI/CD Engineer - Linux, Kubernetes & Automation
APRIORI - business solutions AG
Hannover, Germany
€85K
GIT
JIRA
Linux
Maven
+7

Cloud DevOps Engineer - Kubernetes/Clustering/Openshift/AWS- Glasgow/Scotland
Scope AT
Glasgow, United Kingdom
DevOps
Openshift
Kubernetes
Continuous Integration
Amazon Web Services (AWS)
+1