피드로 돌아가기
GitHub BlogInfrastructure
원문 읽기
eBPF 기반 cGroup 필터링을 통한 배포 Circular Dependency 원천 차단
How GitHub uses eBPF to improve deployment safety
AI 요약
Context
GitHub 서비스 장애 시 복구 코드를 GitHub에서 가져와야 하는 Circular Dependency 구조로 인해 복구 지연 위험 발생. Stateful 호스트 특성상 전체 네트워크 차단이 불가능하여 배포 스크립트만 선택적으로 제어하는 정밀한 필터링 체계 필요.
Technical Solution
- Linux 커널 수준의 네트워크 제어를 위해 eBPF 도입 및 cilium/ebpf 라이브러리 활용
- BPF_PROG_TYPE_CGROUP_SKB 프로그램 타입을 통한 특정 cGroup 기반 Network Egress 후킹
- 배포 스크립트를 전용 cGroup에 격리하여 실행함으로써 서비스 트래픽 간섭 없이 네트워크 접근 제어
- DNS 요청 및 TCP 패킷을 분석하여 github.com 등 금지 도메인으로의 호출을 커널 단에서 차단
- /proc/{PID}/cmdline 조회를 통한 차단 유발 명령어 식별 및 책임 팀으로의 피드백 루프 구축
- cGroup 설정을 통한 배포 스크립트의 CPU 및 Memory 리소스 제한으로 메인 워크로드 영향 최소화
실천 포인트
- 배포 스크립트 내 외부 API 호출 및 바이너리 다운로드 의존성 전수 조사 - 중요 인프라 복구 경로에서 서비스 자체에 의존하는 Circular Dependency 존재 여부 검토 - 프로세스 단위의 정밀한 네트워크 제어가 필요할 경우 eBPF cGroup Hooking 적용 고려 - 배포 도구의 리소스 폭주 방지를 위한 cGroup 기반 Resource Limit 설정 검토