본문 바로가기
클라우드/Cilium

[네트워크/K8s] 쿠버네티스의 국경을 넘다: Cilium과 BGP 완벽 가이드 🌐

by gasbugs 2025. 12. 6.

안녕하세요! 오늘은 클라우드 네이티브 환경, 특히 Cilium을 사용하는 쿠버네티스 클러스터가 외부 세상과 소통하는 방법에 대해 깊이 있게 다뤄보려고 합니다.

 

쿠버네티스 네트워킹을 공부하다 보면 결국 마주치게 되는 끝판왕, 바로 BGP(Border Gateway Protocol)입니다. "왜 굳이 복잡한 BGP를 써야 해?"라고 생각하셨다면 오늘 포스팅이 그 해답이 될 것입니다. 🚀

 

 


1. 기본 용어 정리: Egress와 AS 📝

본격적인 내용에 앞서, 네트워크의 기초 개념 두 가지를 확실히 짚고 넘어갑시다.

🚦 Egress 트래픽이란? 네트워크 트래픽은 방향에 따라 Ingress와 Egress로 나뉩니다.

  • Ingress: 외부에서 우리 집(네트워크)으로 들어오는 손님.
  • Egress: 우리 집에서 외부로 나가는(Leaving) 모든 트래픽. 즉, 클러스터 내부의 파드(Pod)가 인터넷이나 외부 DB에 접속하려고 나가는 것이 바로 Egress입니다.

🗺️ AS (Autonomous System)란? BGP를 이해하려면 AS를 알아야 합니다. AS는 '동일한 관리 정책 하에 있는 네트워크 그룹'을 의미합니다. 쉽게 말해, 하나의 회사나 ISP(통신사)처럼 하나의 거대한 영토라고 보시면 됩니다.

  • BGP 설정에서 AS는 IP 주소 하나가 아니라, 네트워크 전체의 관리 단위를 대표합니다.

2. BGP: 네트워크의 외교관 🤝

BGP의 주 목적은 무엇일까요? 내부 네트워크 관리는 보통 OSPF나 EIGRP 같은 프로토콜이 담당합니다. 반면, BGP는 서로 다른 AS 간에 라우팅 정보를 교환하기 위해 태어났습니다. 즉, 우리 회사 네트워크와 외부 인터넷망을 연결해 주는 '외교관' 역할을 하는 것이죠.

BGP 연결의 필수 조건 BGP를 통해 외부로 나가는(Egress) 연결을 성공적으로 맺으려면 단순히 선만 꽂아서는 안 됩니다.

  1. 물리적 연결은 기본!
  2. 가장 중요한 것은 올바르게 설정된 BGP 피어(Peers)와 정책(Policies)입니다. 서로 "나랑 친구(Peer) 하자"라고 설정하고, 어떤 정보를 주고받을지 정책을 정해야 통신이 시작됩니다.

3. BGP의 환상의 짝꿍, OSPF 👫

BGP는 외부 경로를 잘 알지만, 정작 우리 내부 네트워크 안에서 패킷을 어디로 보내야 할지 모를 때가 있습니다. 이때 BGP를 도와주는 프로토콜이 바로 OSPF입니다.

  • 역할 분담: BGP가 "미국 가는 길은 저쪽이야"라고 알려주면, OSPF는 "그럼 그 '저쪽' 라우터까지 가는 가장 빠른 내부 길은 여기야"라고 알려줍니다.
  • 따라서 BGP를 사용하여 외부 연결(Egress Connectivity)을 구성할 때, OSPF가 내부에서 함께 사용되는 경우가 아주 많습니다.

4. Cilium과 BGP가 만났을 때 🐝

Cilium은 강력한 eBPF 기반의 CNI 플러그인입니다. Cilium이 관리하는 클러스터를 외부 네트워크와 연결할 때 BGP를 사용하면 놀라운 장점이 생깁니다.

💡 연결 방식 (Connectivity Method) Cilium은 동적 라우팅(Dynamic Routing)인 BGP를 사용하여 외부 네트워크와 연결합니다.

  • 어떻게? Cilium이 직접 BGP 스피커가 되어 파드(Pod)의 IP나 서비스 IP를 외부 라우터에 광고합니다.

✅ BGP 사용의 장점 가장 큰 장점은 '동적 경로 업데이트(Dynamic route updates)'입니다.

  • 네트워크 선 하나가 끊어지거나 라우터가 고장 나도, BGP가 이를 감지하고 자동으로 다른 경로로 트래픽을 우회시킵니다. 정적(Static) 라우팅이라면 일일이 사람이 수정해야 했을 일을 알아서 처리해 주는 것이죠.

🚫 연결 방식이 아닌 것 (주의!) Cilium과 외부 네트워크를 '연결(Routing)'하는 기술로는 BGP, MPLS, Static Routing 등이 있습니다.

  • 하지만 HTTP/HTTPS는 웹 통신을 위한 애플리케이션 프로토콜이지, 네트워크 경로를 뚫어주는 연결 방식이 아닙니다. 이 차이를 명확히 구분해야 합니다!

5. 서비스 디스커버리와 운영의 어려움 🧩

서비스 디스커버리 (Service Discovery) 외부 클라이언트가 우리 클러스터 내부의 서비스를 어떻게 찾을까요?

  1. BGP가 서비스 IP(LoadBalancer IP)를 외부에 광고하여 길을 뚫어줍니다.
  2. 이 IP를 외부 DNS 서비스와 연동하여 도메인 이름으로 접근하게 합니다. 즉, BGP와 외부 DNS의 통합이 핵심입니다.

운영상의 챌린지 (Challenge) BGP는 강력하지만 그만큼 '복잡성(Complexity)'이 높습니다. AS 번호 관리, 필터링 정책, 피어링 상태 관리 등 설정해야 할 것이 많아 초보자가 다루기엔 까다로운 편입니다.


6. 문제 해결: 상태 확인 명령어 🔍

네트워크 엔지니어라면 트러블슈팅은 필수죠. BGP 설정 후 제대로 연결되었는지 확인할 때 가장 먼저 써야 할 명령어는 무엇일까요?

  • show ip route: 이건 전체 라우팅 테이블을 보는 것입니다. 너무 포괄적이죠.
  • show ip bgp summary: 정답은 이것입니다! ⭐ 이 명령어를 입력해야 현재 BGP 피어(상대방)와 연결이 맺어졌는지(Established), 얼마나 오랫동안 연결되었는지 상태를 요약해서 볼 수 있습니다.

요약 정리

  1. BGP 목적: 서로 다른 AS 간 경로 교환.
  2. Cilium 연결: BGP를 통한 동적 라우팅 사용. (HTTP는 연결 프로토콜 아님)
  3. 짝꿍 프로토콜: 내부 연결을 위해 OSPF와 자주 함께 사용.
  4. 장점: 네트워크 변화에 따른 자동 경로 업데이트.
  5. 확인: show ip bgp summary 명령어로 피어 상태 점검.

이 글이 여러분의 쿠버네티스 네트워크 이해에 도움이 되기를 바랍니다! 🚀