GitHub Actions Runner Controller 0.15.0 Enhances Reliability and Scalability

GitHub has released Actions Runner Controller (ARC) 0.15.0, which includes enhancements aimed at improving reliability, scalability, and observability for organizations using self-hosted GitHub Actions runners on Kubernetes. This update, launched on October 1, focuses on minimizing unnecessary Kubernetes API requests and enhancing controller throughput, particularly for environments managing large numbers of runner scale sets.
ARC functions as a Kubernetes operator that automatically adjusts the number of self-hosted runners based on workflow demands. This capability allows organizations to maintain control over their execution infrastructure while dynamically creating and removing runner instances as jobs are initiated and completed. This is particularly beneficial for enterprises that require specific control over build environments and workload isolation without the need for a permanently provisioned pool of runners.
A significant focus of version 0.15.0 is on reducing the workload of the controller in synchronizing runner resources. The update now employs Kubernetes patch requests for controller updates instead of full update requests, which decreases the size of API payloads. Additionally, the aggregation of runner status has transitioned to metrics for both EphemeralRunnerSet and AutoscalingRunnerSet, leading to a reduction in the frequency of status updates sent to the Kubernetes API.
The controllers have been enhanced to filter incoming events to prevent unnecessary reconciliation, and listener API client rate limits can now be configured through queries-per-second and burst settings. Teams can also set reconciliation concurrency globally or for individual controllers using max-concurrent-reconciles flags. These changes provide platform teams with greater control over ARC’s performance under load, potentially reducing avoidable processing and API traffic in larger deployments.
The release also improves lifecycle management. Patch-version upgrades now update resources in place, ensuring a one-to-one mapping between autoscaling runner sets and ephemeral runner sets, which minimizes disruption during upgrades.
Improvements have also been made to the controller’s shutdown behavior. The terminationGracePeriodSeconds setting is now configurable and aligned with the controller manager’s graceful-shutdown timeout, allowing operators to better manage how the controller exits during restarts or upgrades.
Furthermore, ARC can re-register a runner scale set when its recorded counterpart is no longer present in the GitHub Actions service, aiding in the recovery from discrepancies between the local Kubernetes state and the scale-set state managed by GitHub.
Lastly, ephemeral runners can be deleted more swiftly when their runner pods exit successfully, as ARC bypasses an additional server-side check for runner removal. Although these changes may seem minor individually, they address operational details that become increasingly critical in environments where runner instances are frequently created and destroyed.
Moving runner status aggregation into metrics is particularly relevant for teams operating ARC as shared CI infrastructure, as large fleets of runners generate frequent lifecycle events.
Source: InfoQ