피드로 돌아가기
Dev.toDevOps
원문 읽기
Self-hosted Runner 도입으로 CI 비용 0원 달성 및 인프라 최적화
Hit GitHub Actions limits too many times so I self hosted the CI in my living room
AI 요약
Context
GitHub Actions의 월 3,000분 무료 제공량을 초과하는 과금 문제 발생. 특히 매일 실행되는 Nightly Cron Job의 이미지 빌드 및 부팅 테스트가 전체 리소스 소모의 핵심 병목 지점으로 파악됨.
Technical Solution
- 비용 발생 지점인 GitHub-hosted Runner를 제거하고 사용자 소유 하드웨어를 활용하는 Self-hosted Runner 아키텍처로 전환
- 배포용 소형 Cloud Box와 무거운 빌드 작업을 처리하는 16GB Mini PC로 역할을 분리한 Hybrid 구조 설계
- Systemd 서비스 기반의 Single Binary를 통해 Outbound Polling 방식으로 작업을 수신하여 NAT 환경의 네트워크 설정 복잡도 제거
- Workflow YAML 내
runs-on라벨 수정을 통해 기존 CI/CD 파이프라인의 로직 변경 없이 실행 환경만 분리 - 잠재적 과금 리스크 대비 및 벤더 종속성 탈피를 위해 GitLab Runner로의 즉각적인 전환이 가능한 이관 전략 수립
- Public Repo의 Fork PR을 통한 임의 코드 실행 방지를 위해 Private Repo 전용으로 Runner 범위를 제한하는 보안 격리 적용
실천 포인트
1. 과금 지표 분석을 통해 비용 소모가 큰 특정 Job(예: Nightly Build) 식별
2. Self-hosted Runner 도입 시 반드시 Private Repo로 범위를 제한하여 RCE 공격 차단
3. Runner 실행 계정의 권한을 최소화하고 Resource Slice를 통해 시스템 자원 사용량 제한
4. 워크로드 특성에 따라 Parallelism이 필요한 작업은 Hosted로, 리소스 소모가 큰 작업은 Self-hosted로 분리 운영