Sobre o projeto
O GitHub Actions Gateway (GAG) é um operador Kubernetes projetado para clusters onde várias equipes compartilham runners auto-hospedados do GitHub Actions. Ele se posiciona como uma alternativa ao modo scale-set do Actions Runner Controller (ARC), abordando lacunas que surgem em escala multi-inquilino.
Os principais recursos incluem a reexecução automática de jobs interrompidos por evicção de pods, preempção ou drenagem, com um orçamento de tentativas configurável por execução. Os workers escalam até zero entre jobs, e todos os listeners de runner são executados como goroutines dentro de um único pod AGC compartilhado, em vez de um pod sempre ativo por scale set. Cada inquilino recebe uma identidade de saída isolada por meio de um pool de proxy por inquilino, permitindo allowlisting de IP por equipe e atribuição de auditoria.
O projeto aplica ResourceQuota compartilhado com segurança, controlando a admissão de jobs antes que as reivindicações sejam feitas, e oferece suporte ao agendamento prioritário de GPU por meio de camadas de PriorityClass do Kubernetes, para que hardware caro não seja privado de recursos por cargas de trabalho de CPU. Um Gateway Manager Controller provisiona a infraestrutura do inquilino a partir de um único recurso personalizado ActionsGateway, permitindo que as equipes façam autoatendimento dentro de cotas de propriedade da plataforma.
Recursos adicionais incluem dimensionamento medido de workers com base em amostragem de recursos por job, persistência write-ahead das conclusões de jobs, uma biblioteca curada de templates de runner, compartilhamento de proxy entre namespaces com consentimento controlado e uma postura de saída restrita para pull requests não confiáveis usando um espelho de registro no cluster. O projeto é distribuído como um Helm chart assinado a partir do GHCR, com v2beta1 como a versão de API recomendada e caminhos de migração a partir de v1 e ARC.
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.