GitHub lançou a versão 0.15.0 do Actions Runner Controller (ARC) em 1º de outubro, apresentando melhorias em confiabilidade, escalabilidade e observabilidade para organizações que executam runners self-hosted do GitHub Actions em Kubernetes.
O que é ARC
ARC é um operador Kubernetes que escala automaticamente runners self-hosted em resposta à demanda de workflows. Permite que organizações executem sua própria infraestrutura de execução, criando e removendo instâncias de runners conforme jobs chegam e terminam. Essa abordagem é particularmente útil para empresas que necessitam controle sobre ambientes de build, acesso à rede, recursos de computação ou isolamento de workloads sem manter um pool permanente de runners.
Redução de carga na API Kubernetes
O tema principal da versão 0.15.0 é reduzir o trabalho do controller para manter recursos de runners sincronizados. As atualizações do controller agora usam requisições de patch Kubernetes em vez de requisições de atualização completa, reduzindo o tamanho dos payloads de API. Adicionalmente, a agregação de status de runners foi movida para métricas em EphemeralRunnerSet e AutoscalingRunnerSet, diminuindo o número de atualizações de status enviadas para a API Kubernetes.
Os controllers agora filtram eventos de entrada para evitar reconciliação desnecessária. Limites de taxa da API de listener podem ser configurados através de settings queries-per-second e burst. Equipes também podem configurar concorrência de reconciliação globalmente ou para controllers individuais usando flags max-concurrent-reconciles. Essas mudanças oferecem ao times de plataforma maior controle sobre o comportamento do ARC sob carga e ajudam a reduzir processamento evitável e tráfego de API em deployments maiores.
Melhorias no gerenciamento do ciclo de vida
Atualizações de versão patch agora atualizam recursos no local, mantendo um mapeamento um-para-um entre autoscaling runner sets e ephemeral runner sets, reduzindo disrupção durante upgrades. O comportamento de shutdown do controller foi aprimorado: a configuração terminationGracePeriodSeconds agora é configurável e alinhada com o timeout de graceful-shutdown do controller manager, permitindo que operadores controlem melhor como o controller sai durante restarts ou upgrades.
ARC pode re-registrar um scale set de runner quando seu equivalente não existe mais no serviço GitHub Actions, ajudando o controller a se recuperar de desajustes entre seu estado local em Kubernetes e o estado do scale set mantido pelo GitHub. Runners efêmeros podem ser deletados mais rapidamente quando seus pods exitam com sucesso, pois ARC pula uma verificação adicional no servidor para remoção de runner.
Impacto operacional
A movimentação da agregação de status de runners para métricas é particularmente relevante para equipes operando ARC como infraestrutura CI compartilhada. Grandes frotas de runners geram eventos de ciclo de vida frequentes conforme jobs são enfileirados, runners são provisionados, workloads são executados e ambientes efêmeros são removidos. Reduzir patches de status pode aliviar pressão na API Kubernetes, enquanto métricas fornecem base mais adequada para monitorar comportamento agregado do controller e runners.










