본문 바로가기
Infra2026년 4월 24일8분 읽기

eBPF 실전 — Cilium·Pixie·Falco로 만드는 관측·보안

YS
김영삼
조회 1
eBPF 실전 — Cilium·Pixie·Falco로 만드는 관측·보안

핵심 요약

eBPF는 커널 안에서 안전하게 실행되는 작은 프로그램. 직접 작성은 어렵지만, 이미 만들어진 도구를 사용하면 강력한 관측·보안·네트워크가 가능. 2026년 시점 가장 검증된 3개를 정리.

  • Cilium: 네트워크 (이전 글 참고)
  • Pixie: 자동 관측성 (코드 변경 0)
  • Falco: 런타임 보안 (이상 행위 감지)

1. eBPF 기본 — 왜 강력한가

  • 커널 안에서 실행 → 커널 함수 호출·네트워크 패킷 즉시 가시성
  • verifier가 안전성 보장 — 무한 루프·메모리 침범 불가
  • JIT 컴파일 — native 코드 속도
  • userspace 코드 변경 0 — 기존 앱 그대로

2. Pixie — 자동 관측성

# 설치
curl -fsSL https://withpixie.ai/install.sh | bash
px deploy

설치 후 즉시:

  • 모든 HTTP 요청·응답 자동 캡처 (코드 변경 0)
  • SQL 쿼리 자동 추적
  • gRPC·DNS·TLS handshake 추적
  • 플레임 그래프 자동 생성
  • 저장 비용 0 (커널 ring buffer, 휘발성)
# 사용 예시 — PxL (Pixie 쿼리 언어)
df = px.DataFrame(table='http_events', start_time='-1m')
df = df[df.req_method == 'POST']
df = df.groupby('remote_addr').agg(
    count=('req_path', px.count),
    avg_latency=('latency_ns', px.mean)
)
px.display(df)

Datadog APM 같은 도구를 코드 변경 없이 즉시. 단 데이터 보관 짧음 (4~24시간 권장).

3. Falco — 런타임 보안

# Helm
helm install falco falcosecurity/falco \
  --namespace falco --create-namespace
# 룰 예시 — falco_rules.yaml
- rule: Unexpected outbound connection
  desc: Pod이 외부 IP로 연결
  condition: >
    outbound and not allowed_outbound_destinations
  output: >
    Outbound connection to %fd.rip:%fd.rport from %k8s.pod.name
  priority: WARNING

- rule: Container shell access
  desc: Pod에서 shell 실행
  condition: spawned_process and shell_procs and container
  output: >
    Shell %proc.name in container %container.name
  priority: NOTICE

이상 행위 즉시 감지: cryptominer 실행, 의심 프로세스, sensitive 파일 접근 등. CNCF Graduated.

4. Falco 실전 룰 5가지

- rule: Write below /etc
  condition: write_etc_common
  priority: ERROR

- rule: K8s ServiceAccount Token Read
  condition: open_read and fd.name = /var/run/secrets/kubernetes.io/serviceaccount/token
  priority: WARNING

- rule: Crypto Miner Process
  condition: spawned_process and (proc.name in ("xmrig", "minerd"))
  priority: CRITICAL

- rule: Suspicious DNS Query
  condition: outbound and fd.l4proto=udp and fd.rport=53 and proc.cmdline contains "curl"
  priority: NOTICE

5. eBPF 도구 매트릭스

도구용도설치 부담
CiliumCNI + Service Mesh중간
Pixie자동 관측성낮음
Falco런타임 보안낮음
Hubble네트워크 관측 (Cilium 종속)Cilium 함께
Tetragon커널 이벤트 보안중간
BCC·bpftrace커스텀 디버깅높음 (커널 코드)
parcacontinuous profiling낮음

6. continuous profiling — Parca·Pyroscope

# Parca 설치
kubectl apply -f https://github.com/parca-dev/parca/releases/latest/download/kubernetes-manifest.yaml

# 모든 Pod의 CPU·메모리 프로파일을 자동 수집
# 코드 변경 0
# 어느 함수가 CPU를 가장 많이 쓰는지 즉시 보임

Sentry·NewRelic의 profiling을 self-hosted로. 비용 $0.

7. 실전 — eBPF로 디버깅 사례

케이스 1: Pod이 가끔 OOMKilled

# Pixie로 메모리 사용 패턴 추적
px run px/oom_analysis -- --namespace prod
# → 특정 endpoint 호출 시 메모리 spike 발견
# → 메모리 leak 코드 위치 즉시 식별

케이스 2: 외부 API latency 증가

# Pixie로 요청 추적
df = px.DataFrame('http_events')
df = df[df.remote_addr == 'api.external.com']
df = df[df.latency_ns > 1_000_000_000]  # 1초 초과
# → DNS resolution이 느림 발견 → DNS 캐시 추가

케이스 3: 의심 활동 감지

# Falco 알람
[ERROR] Pod web-prod-abc123: Crypto Miner Process detected
# → 즉시 Pod 격리 + 침해 분석

8. 운영 권장 스택

# 표준 eBPF 관측·보안 스택
1. Cilium (CNI + Service Mesh)
2. Hubble (Cilium 관측)
3. Pixie (자동 application 관측)
4. Falco (런타임 보안)
5. Parca/Pyroscope (continuous profiling)

# 합쳐서:
# - 네트워크: Cilium
# - 응용 관측: Pixie
# - 보안: Falco
# - 성능: Parca

9. 한계·주의

  • 커널 5.10+ 필수 (대부분 모던 클라우드 만족)
  • 관리형 Kubernetes (EKS·GKE)에서 일부 제약
  • eBPF 프로그램 verifier 통과 어려운 경우 있음
  • 커스텀 eBPF 작성은 깊은 학습 필요

10. 학습 자료

  • ebpf.io — 시작점
  • "BPF Performance Tools" — Brendan Gregg 책
  • Cilium·Pixie·Falco 공식 워크숍
  • Linux Plumbers Conference eBPF 트랙

자주 묻는 질문

eBPF 직접 작성해야 하나?

대부분 아니다. Cilium·Pixie·Falco 같은 도구로 90% 해결. 커스텀 디버깅 한정에서 직접 작성.

Pixie 데이터 보관 짧은 게 문제?설계 선택. 휘발성으로 비용·프라이버시 강함. 장기 보관 필요하면 Pixie + S3 export 조합.

Datadog APM 대체 가능?관측성은 가능. 단 dashboard·알림·통합은 Datadog이 풍부. 중간 규모 회사는 Pixie + Grafana로 충분.

댓글 0

아직 댓글이 없습니다.
Ctrl+Enter로 등록