Skip to content

Calico 딥다이브: 엔터프라이즈급 Kubernetes 네트워킹

지원 버전: Calico v3.29+ / Kubernetes 1.28+ 마지막 업데이트: 2026년 7월 27일

개요

Calico는 Kubernetes, 가상 머신, 베어메탈 워크로드를 위한 업계 표준 오픈소스 네트워킹 및 네트워크 보안 솔루션입니다. Project Calico에서 시작하여 현재 Tigera에서 관리하며, 전 세계적으로 가장 널리 배포된 Kubernetes CNI 중 하나로 Fortune 100대 기업의 80% 이상이 프로덕션 환경에서 사용하고 있습니다.

2026년 7월 업데이트: Calico for VMs on Kubernetes

2026년 7월 21일, Tigera가 가상 머신과 컨테이너를 하나의 Kubernetes 네이티브 컨트롤 플레인에서 네트워킹·보안까지 통합 관리하는 eBPF 기반 플랫폼 Calico for VMs on Kubernetes를 출시했습니다. VMware/NSX 마이그레이션을 겨냥한 기능으로, Kubernetes로 이전한 VM이 기존 IP 주소를 유지하고, L2 브리지 확장으로 기존 VLAN에 그대로 연결되며, 옆의 컨테이너와 동일한 Calico 네트워크 정책·마이크로세그멘테이션(정책 티어, staged policy 포함)·라우팅·로드 밸런싱·플로우 가시성을 이어받습니다. 자세한 내용은 보도자료를 참고하세요.

Calico를 선택해야 하는 이유

고성능, 강력한 보안, 대규모 확장성, 유연성이라는 Calico의 4가지 핵심 가치가 모두 엔터프라이즈 프로덕션 환경이라는 하나의 결과로 모이는 구조를 보여준다.

핵심 장점:

특성설명
검증된 안정성10년 이상의 프로덕션 검증, 대규모 엔터프라이즈 환경에서 입증
유연한 데이터플레인iptables와 eBPF 모드 선택 가능
강력한 BGP 지원온프레미스 네트워크와의 완벽한 통합
포괄적인 정책Kubernetes 표준 + Calico 확장 Network Policy
Windows 완전 지원하이브리드 Windows/Linux 워크로드 지원
활발한 커뮤니티CNCF 생태계에서 가장 활발한 네트워킹 프로젝트

Calico v3.29 주요 기능

새로운 기능 및 개선사항

  • eBPF 데이터플레인 GA: 완전한 프로덕션 준비 상태의 eBPF 모드
  • 향상된 WireGuard 암호화: 성능 최적화 및 안정성 개선
  • 개선된 BGP 컨트롤러: 더 빠른 수렴 및 확장성
  • Kubernetes 1.32 지원: 최신 Kubernetes API와 완벽 호환
  • ARM64 네이티브 지원: Apple Silicon 및 AWS Graviton 최적화
  • 향상된 Prometheus 메트릭: 더 세분화된 모니터링 지표

버전 호환성 매트릭스

Calico 버전Kubernetes 버전Linux 커널eBPF 지원
v3.291.28 - 1.324.18+ (eBPF: 5.3+)GA
v3.281.27 - 1.314.18+ (eBPF: 5.3+)GA
v3.271.26 - 1.304.18+ (eBPF: 5.3+)Beta

CNI 비교: Calico vs Cilium

기능CalicoCilium
핵심 기술iptables/eBPF 선택 가능eBPF 전용
성숙도매우 높음 (10년+)높음 (6년+)
Network PolicyL3-L4 (L7은 Enterprise)L3-L7 (오픈소스)
Service Mesh별도 (Enterprise)내장
BGP 지원강력함 (BIRD 기반)지원 (기본)
관측성기본 (Flow Logs)Hubble (강력함)
Windows 지원완전 지원베타
커뮤니티 규모매우 큼빠르게 성장
학습 곡선중간높음
엔터프라이즈Calico Enterprise/CloudCilium Enterprise
문서화 품질우수우수
EKS 통합공식 지원공식 지원

아키텍처 개요

Control Plane의 API Server·Tigera Operator·kube-controllers가 Calico Datastore에 기록하고, 각 노드의 Typha·Felix·BIRD가 이를 받아 정책을 적용하며 BIRD가 BGP로 외부 ToR 스위치·네트워크와 통신하는 Calico 아키텍처 구조.

컴포넌트 역할 요약

컴포넌트배포 위치주요 역할
Felix모든 노드라우팅, iptables/eBPF 규칙, 정책 적용
BIRD모든 노드BGP 피어링, 라우트 교환
confd모든 노드BIRD 설정 동적 생성
Typha전용 Pod (3+)데이터스토어 연결 집계, 캐싱
kube-controllers단일 PodK8s ↔ Calico 리소스 동기화
CNI Plugin모든 노드Pod 네트워크 인터페이스 설정

네트워킹 모드 개요

Calico는 다양한 환경에 맞는 여러 네트워킹 모드를 지원합니다.

모드별 특성 비교

모드캡슐화오버헤드MTU사용 환경
IPIPIP-in-IP20 bytes1480클라우드, L3 네트워크
VXLANUDP/VXLAN50 bytes1450Azure, 방화벽 환경
Direct없음0 bytes1500BGP 가능 환경, 온프레미스
CrossSubnet조건부가변가변하이브리드 환경

BGP 사용 가능 여부, 클라우드 환경, 서브넷 일치 여부를 순서대로 물어 Direct·VXLAN·CrossSubnet·IPIP 중 적합한 Calico 네트워킹 모드를 안내하며, BGP가 가능한 Direct 모드가 최고 성능의 권장 경로임을 보여주는 의사결정 트리.

EKS 통합 빠른 시작

VPC CNI + Calico (Network Policy Only)

EKS에서 가장 일반적인 구성으로, AWS VPC CNI로 Pod 네트워킹을, Calico로 Network Policy를 처리합니다.

bash
# 1. EKS 클러스터 확인
kubectl get nodes

# 2. Calico 설치 (Policy only 모드)
kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.29.0/manifests/calico-policy-only.yaml

# 3. 설치 확인
kubectl get pods -n calico-system -w

# 4. calicoctl 설치
curl -L https://github.com/projectcalico/calico/releases/download/v3.29.0/calicoctl-linux-amd64 -o calicoctl
chmod +x calicoctl && sudo mv calicoctl /usr/local/bin/

# 5. 상태 확인
calicoctl node status

Helm을 통한 설치

bash
# Helm repo 추가
helm repo add projectcalico https://docs.tigera.io/calico/charts
helm repo update

# EKS용 설치
helm install calico projectcalico/tigera-operator \
  --namespace tigera-operator \
  --create-namespace \
  --set installation.kubernetesProvider=EKS \
  --set installation.cni.type=AmazonVPC

설치 확인

bash
# Pod 상태 확인
kubectl get pods -n calico-system

# 노드별 상태 확인
calicoctl node status

# IPPool 확인
calicoctl get ippool -o wide

Network Policy 기본 예시

기본 거부 정책 (Zero Trust)

yaml
apiVersion: projectcalico.org/v3
kind: GlobalNetworkPolicy
metadata:
  name: default-deny
spec:
  selector: all()
  types:
    - Ingress
    - Egress

네임스페이스 내 통신 허용

yaml
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-same-namespace
  namespace: production
spec:
  podSelector: {}
  policyTypes:
    - Ingress
  ingress:
    - from:
        - podSelector: {}

DNS 트래픽 허용

yaml
apiVersion: projectcalico.org/v3
kind: GlobalNetworkPolicy
metadata:
  name: allow-dns
spec:
  selector: all()
  order: 100
  egress:
    - action: Allow
      protocol: UDP
      destination:
        ports: [53]
    - action: Allow
      protocol: TCP
      destination:
        ports: [53]

모니터링 및 관측성

Prometheus 메트릭 활성화

yaml
apiVersion: projectcalico.org/v3
kind: FelixConfiguration
metadata:
  name: default
spec:
  prometheusMetricsEnabled: true
  prometheusMetricsPort: 9091

  # Flow Logs 활성화
  flowLogsFlushInterval: "15s"
  flowLogsFileEnabled: true

핵심 메트릭

메트릭설명
felix_active_local_endpoints활성 로컬 엔드포인트 수
felix_iptables_rules활성 iptables 규칙 수
felix_policies_applied적용된 정책 수
felix_datastore_syncer_*데이터스토어 동기화 상태
typha_connections_acceptedTypha 연결 수

트러블슈팅 빠른 참조

일반적인 문제 해결

bash
# 1. Calico 컴포넌트 상태 확인
kubectl get pods -n calico-system -o wide

# 2. Felix 로그 확인
kubectl logs -n calico-system -l k8s-app=calico-node -c calico-node --tail=100

# 3. 노드 BGP 상태 확인
calicoctl node status

# 4. IPAM 상태 확인
calicoctl ipam show --show-blocks

# 5. 특정 Pod의 엔드포인트 확인
calicoctl get workloadendpoint -n <namespace>

# 6. Network Policy 목록 확인
calicoctl get networkpolicy -A
calicoctl get globalnetworkpolicy

문제 유형별 체크리스트

증상확인 사항명령어
Pod IP 미할당IPAM 블록, IPPoolcalicoctl ipam show
Pod 간 통신 실패라우팅, BGP 상태calicoctl node status
정책 미적용Felix 로그, 정책 순서calicoctl get gnp -o yaml
외부 통신 실패NAT, BGP 광고calicoctl get bgpconfig

딥다이브 목차

이 섹션에서는 Calico의 모든 측면을 심층적으로 다룹니다:

파트제목설명
Part 1Calico 소개 및 기본 개념역사, 핵심 기능, 사용 사례
Part 2아키텍처 심층 분석컴포넌트 상세, 패킷 흐름, 데이터스토어
Part 3네트워킹 모드IPIP, VXLAN, Direct, 모드 선택 가이드
Part 4BGP 심층 분석BGP 피어링, Route Reflector, 외부 연동
Part 5Network Policy 마스터정책 설계, Tier, GlobalNetworkPolicy
Part 6eBPF 데이터플레인eBPF 모드 구성, 성능 튜닝
Part 7EKS 통합 가이드VPC CNI 연동, 고급 구성
Part 8운영 및 트러블슈팅모니터링, 디버깅, 모범 사례

Calico vs Cilium: 선택 가이드

Calico를 선택해야 하는 경우

  • BGP 기반 온프레미스/데이터센터 환경
  • Windows 워크로드가 있는 하이브리드 환경
  • 검증된 성숙한 솔루션이 필요한 엔터프라이즈
  • 기존 iptables 기반 인프라와의 호환성
  • Tigera Enterprise/Cloud 지원이 필요한 경우

Cilium을 선택해야 하는 경우

  • L7 Network Policy가 오픈소스로 필요한 경우
  • 내장 Service Mesh 기능이 필요한 경우
  • Hubble 기반 고급 관측성이 필수인 경우
  • 최신 eBPF 기능을 적극 활용하려는 경우

Windows 워크로드, L7 정책 필요 여부, BGP 필수 여부, 관측성 우선순위를 차례로 물어 CNI를 선택하는 트리로, 대부분의 경로가 Calico로 모이고 오픈소스 L7 정책이나 Hubble 관측성이 꼭 필요할 때만 Cilium으로 향함을 보여준다.

참고 자료

공식 문서

레퍼런스

학습 자료


퀴즈

이 섹션에서 배운 내용을 테스트하려면 Calico 소개 퀴즈를 풀어보세요.