GitHub Actions Runner Controller 0.15.0 includes reliability, scalability, and observability improvements for runner scale sets.

These updates help you operate larger runner fleets with fewer disruptions during upgrades and Kubernetes API updates. Here’s what’s now available:

  • Patch version upgrades now update resources in place, reducing disruption between autoscaling runner sets and ephemeral runner sets.
  • Controller shutdown behavior is more reliable because terminationGracePeriodSeconds is configurable and now aligns with the controller manager graceful shutdown timeout.
  • Runner scale sets can be reregistered when the recorded scale set no longer exists in the Actions service.
  • Controller updates now use patch requests instead of full update requests, reducing Kubernetes API payload size.
  • Runner status aggregation has moved to metrics for EphemeralRunnerSet and AutoscalingRunnerSet, reducing status patch requests.
  • Listener Kubernetes client rate limits are configurable through QPS and burst settings.
  • Controller concurrency can now be configured globally and per controller with max-concurrent-reconciles flags.
  • Controllers now filter incoming events so they perform fewer reconciliations than before.
  • Ephemeral runners are deleted faster because the server-side check for runner removal is skipped when the runner pod successfully exits.

These changes are especially useful for clusters with many runner scale sets where controller throughput, graceful shutdown, and accurate metrics are important for day-to-day operations.

Learn more in the Actions Runner Controller documentation.