피드로 돌아가기
How GitHub uses eBPF to improve deployment safety
GitHub BlogGitHub Blog
Infrastructure

eBPF 기반 cGroup 필터링을 통한 배포 Circular Dependency 원천 차단

How GitHub uses eBPF to improve deployment safety

Lawrence Gripper2026년 4월 16일8advanced

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 설정 검토

원문 읽기