Cilium 네트워크 정책 kubectl‑capture 기능이 디버깅을 위한 tcpdump 사이드카를 대체했습니다

발행: (2026년 5월 2일 PM 05:20 GMT+9)
7 분 소요
원문: Dev.to

Source: Dev.to

tcpdump 사이드카의 문제점

Cilium의 kubectl‑capture를 도입하기 전, 우리 팀은 트래픽 손실, 정책 오설정, 연결 문제를 디버깅하기 위해 tcpdump 사이드카에 의존했습니다. 이 워크플로에는 세 가지 핵심 결함이 있었습니다:

  • 운영 오버헤드: 디버깅 세션마다 pod 사양을 패치해 tcpdump 사이드카 컨테이너를 추가하고, 워크로드를 재시작하며, 캡처가 끝난 후 정리해야 했습니다.
  • 보안 위험: tcpdump 사이드카는 트래픽을 캡처하기 위해 특권 액세스 또는 host‑network 모드가 필요해, 프로덕션 pod의 공격 표면을 확대합니다.
  • 제한된 컨텍스트: 사이드카 캡처는 Cilium 네트워크 정책과의 네이티브 통합이 부족해, 캡처된 패킷을 특정 정책 규칙이나 엔드포인트 아이덴티티와 연관시키기 어렵습니다.

Cilium kubectl‑capture란?

Cilium은 Kubernetes를 위한 eBPF 기반 네트워킹 및 보안 레이어로, 고급 네트워크 정책 적용, 로드 밸런싱, 가시성을 제공합니다. kubectl‑capture 플러그인(Cilium CLI에 번들 포함)은 eBPF의 저수준 커널 가시성을 활용해 Cilium이 관리하는 엔드포인트에서 직접 패킷을 캡처합니다 — 사이드카가 필요 없습니다.

전통적인 패킷 캡처와 달리 kubectl‑capture는 Cilium의 네이티브 구성 요소와 캡처를 연결합니다: 엔드포인트 IP, 파드 라벨, 네트워크 정책 이름, 목적지 포트, 혹은 특정 정책 판정(허용/드롭) 등으로 트래픽을 필터링할 수 있습니다. 캡처는 로컬 머신으로 직접 스트리밍되거나 파일에 저장되어 Wireshark와 같은 도구로 오프라인 분석이 가능합니다.

사이드카에서 kubectl‑capture 로 전환한 방법

디버깅 워크플로우를 마이그레이션하는 데 하루도 채 걸리지 않았습니다. 아래는 kubectl‑capture 로 드롭된 네트워크 정책을 디버깅하는 간단한 예시입니다:

# app=web 라벨이 붙은 파드의 트래픽을 캡처하고, 포트 80에서 드롭된 패킷만 필터링
kubectl capture --pod-labels app=web --port 80 --verdict dropped -o capture.pcap

기존 사이드카 워크플로우

  1. hostNetwork: true 로 설정된 tcpdump 사이드카를 추가하도록 웹 파드의 Deployment를 패치합니다.

  2. 파드가 재시작될 때까지 기다린 뒤, 사이드카에 접속합니다:

    kubectl exec -it web-pod -- tcpdump -i eth0 port 80 -w capture.pcap
  3. kubectl cp 로 캡처 파일을 로컬에 복사합니다.

  4. 사이드카를 Deployment에서 제거하고 파드를 다시 재시작하여 정리합니다.

kubectl‑capture 워크플로우는 이 네 단계 중 세 단계를 생략하며, 파드 재시작이나 설정 변경 없이 작업을 수행할 수 있습니다.

우리가 본 주요 이점

  • Zero overhead: eBPF 캡처는 커널 내에서 실행되며, 파드 리소스를 소모하는 사이드카와 달리 최소한의 성능 영향을 미칩니다.
  • Better policy context: 캡처에는 정책 이름, 엔드포인트 ID, 판정(verdict) 등 Cilium 메타데이터가 포함되어 있어, 어떤 규칙이 패킷을 허용하거나 차단했는지 정확히 알 수 있습니다.
  • Improved security: 특권 사이드카나 호스트 네트워크 접근이 필요하지 않습니다 — kubectl‑capture는 Cilium의 기존 eBPF 프로그램을 사용해 트래픽을 캡처합니다.
  • Faster debugging: kubectl‑capture로 전환한 이후 네트워크 정책 문제 해결 평균 시간(MTTR)을 약 60% 단축했습니다.

실제 사례: 드롭된 인그레스 정책 디버깅

지난달, 프런트엔드 포드에 적용된 새로운 인그레스 정책이 API 게이트웨이에서 오는 정상 트래픽을 차단하고 있었습니다. tcpdump 사이드카를 사용한다면 세 개의 프런트엔드 포드를 패치하고 재시작한 뒤 일반 패킷 캡처를 일일이 살펴야 했을 것입니다. 대신 우리는 다음을 실행했습니다:

kubectl capture --pod-labels app=frontend --source-ip 10.2.3.4 --verdict dropped -o frontend-drop.pcap

캡처 결과, 정책에 게이트웨이의 Cilium 엔드포인트 ID에서 오는 트래픽을 허용하는 규칙이 누락되어 있음을 확인했습니다. 우리는 정책을 업데이트하고 적용했으며, 단일 kubectl‑capture 명령으로 수정 사항을 검증했습니다 — 재시작이 필요 없었습니다.

Conclusion

Cilium의 kubectl‑capture 기능은 네트워크‑정책 디버깅을 위한 tcpdump 사이드카 워크플로를 완전히 대체했습니다. 더 빠르고, 더 안전하며, Kubernetes 네트워킹을 관리하는 방식과 훨씬 더 통합됩니다. 프로덕션 환경에서 Cilium을 사용하고 있다면, kubectl‑capture는 디버깅 툴킷에 반드시 포함해야 할 도구입니다.

0 조회
Back to Blog

관련 글

더 보기 »

AWS에서 멀티 VPC 아키텍처 구축

소개 사람들이 클라우드 네트워킹을 배우기 시작하면 보통 단일 VPC부터 시작합니다. 조직은 워크로드를 다음과 같이 분리합니다: - 보안 - 확장성 - ...