러너 스케일 세트 운영 안정성 개선
Actions Runner Controller가 러너 스케일 세트의 안정성, 확장성, 관측성을 개선했습니다.
교안에 영향
러너 스케일 세트의 업그레이드, 종료 설정, 동시성 관련 기존 안내는 새 동작과 설정 이름을 반영해야 합니다.
요약
- 패치 버전 업그레이드에서 자원을 제자리에서 갱신해 autoscaling runner sets와 ephemeral runner sets 사이의 중단을 줄였습니다. - terminationGracePeriodSeconds를 설정할 수 있게 하고 controller manager의 graceful shutdown timeout과 맞춰 종료 동작을 더 안정적으로 만들었습니다. - Actions 서비스에서 기록된 scale set이 사라진 경우 runner scale sets를 다시 등록할 수 있게 했습니다. - Controller 업데이트와 상태 집계를 개선해 Kubernetes API 요청과 status patch 요청을 줄였으며, QPS·burst·max-concurrent-reconciles와 이벤트 필터링을 추가했습니다. - 러너 pod가 정상 종료되면 서버 측 runner 제거 확인을 건너뛰어 ephemeral runners 삭제가 더 빨라졌습니다.
바뀐 것
새 기능
- Actions 서비스에서 기록된 scale set이 더 이상 존재하지 않으면 runner scale sets를 다시 등록할 수 있게 되었습니다.
- Listener Kubernetes client rate limits를 QPS와 burst 설정으로 조정할 수 있게 되었습니다.
- Controller concurrency를 전역과 개별 controller 단위로 max-concurrent-reconciles flags로 설정할 수 있게 되었습니다.
개선
- 패치 버전 업그레이드가 리소스를 제자리에서 갱신하도록 바뀌어 autoscaling runner sets와 ephemeral runner sets 사이의 중단이 줄었습니다.
- terminationGracePeriodSeconds를 설정할 수 있게 되었고 controller manager의 graceful shutdown timeout과 동작이 맞춰졌습니다.
- Controller 업데이트가 full update requests 대신 patch requests를 사용하도록 바뀌어 Kubernetes API payload 크기가 줄었습니다.
- Runner 상태 집계가 EphemeralRunnerSet과 AutoscalingRunnerSet의 metrics로 이동해 status patch requests가 줄었습니다.
- Controllers가 들어오는 이벤트를 필터링해 이전보다 더 적은 reconciliations를 수행하도록 바뀌었습니다.
- 러너 pod가 정상 종료되면 서버 측 runner 제거 확인을 건너뛰어 ephemeral runners가 더 빨리 삭제됩니다.