Urgent.News

What's breaking now, across thousands of outlets.

Tech

GitHub Actions Runner Controller 0.15.0 Targets Reliability at Scale

GitHub has released Actions Runner Controller (ARC) 0.15.0, introducing reliability, scalability, and observability improvements for organisations running self-hosted GitHub Actions runners on Kubernetes. By Craig Risi

GitHub has unveiled Actions Runner Controller (ARC) 0.15.0, a release aimed at enhancing reliability, scalability, and observability for self-hosted GitHub Actions runners operating on Kubernetes. The October 1st update prioritizes minimizing unnecessary Kubernetes API requests, enhancing controller performance, and streamlining upgrades and shutdowns, especially for large-scale deployments managing numerous runner scale sets.

ARC functions as a Kubernetes operator, autonomously scaling self-hosted runners in response to workflow demand, enabling organizations to control build environments, network access, compute resources, and workload isolation without maintaining a permanent pool of runners. The 0.15.0 release emphasizes reducing controller workload to maintain runner resource synchronization.

A key focus of version 0.15.0 is reducing workload for the controller to keep runner resources in sync. The controller now employs Kubernetes patch requests instead of full update requests, decreasing API payload sizes. Runner status aggregation has transitioned to metrics for EphemeralRunnerSet and AutoscalingRunnerSet, reducing status updates sent to the Kubernetes API.

Controllers now filter incoming events to prevent unnecessary reconciliation, while listener API client rate limits can be configured via queries-per-second and burst settings.

Teams can also adjust reconciliation concurrency globally or per individual controllers using max-concurrent-reconciles flags. These modifications empower platform teams with greater control over ARC's behavior under load, potentially reducing unnecessary processing and API traffic in extensive deployments. The release also tackles lifecycle management improvements.

Patch-version upgrades now update resources in place, preserving a one-to-one mapping between autoscaling and ephemeral runner sets, thereby decreasing disruption during upgrades. Controller shutdown behavior has been refined, with the terminationGracePeriodSeconds setting configurable and synchronized with the controller manager's graceful-shutdown timeout, allowing operators to better manage controller exits during restarts or upgrades.

ARC can also re-register a runner scale set if its counterpart is no longer present in the GitHub Actions service, aiding controller recovery from discrepancies between local Kubernetes state and GitHub-maintained scale-set state.

While these changes might seem minor individually, they collectively address operational nuances crucial when runner environments are continuously created and destroyed. The enhancements to runner status aggregation into metrics are particularly significant for teams operating ARC as part of shared CI infrastructure. Large runner fleets generate frequent lifecycle events, and reducing status patches can alleviate pressure on the Kubernetes API while offering a more appropriate basis for monitoring aggregate controller and runner behavior.

Additionally, configurable reconciliation concurrency and listener rate limits assist operators in balancing throughput and API pressure.

However, these adjustments are not straightforward performance toggles. Increasing concurrency can augment the controller's interaction with Kubernetes and GitHub services. Teams should thus validate changes against their workload patterns and cluster capacity rather than assuming higher concurrency is universally advantageous. ARC represents one facet of a larger trend towards dynamically managed CI execution infrastructure, complementing solutions like CircleCI's Machine Runner Orchestrator, which focuses on scaling CPU, GPU, and ARM workloads through Kubernetes integration.

For organizations leveraging GitHub Actions and Kubernetes, ARC offers a native method to manage runner capacity alongside other cluster resources, albeit requiring platform teams to handle controller operation, Kubernetes capacity management, and the interaction between runner scaling and cluster scheduling, API limits, and workflow demand.

Written by urgent.news from InfoQ's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.

Read the original at infoq.com →

More in Tech

More from Tuesday 20 October →