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

Cilium 2.0 — Service Mesh + Network Policy + Cluster Mesh 통합

YS
김영삼
조회 2
Cilium 2.0 — Service Mesh + Network Policy + Cluster Mesh 통합

핵심 요약

Cilium은 단순 CNI에서 시작해 2.0 시점에 eBPF로 모든 네트워크·보안·관측성을 통합한 플랫폼이 됐다. Calico·Istio·Hubble 각각 하던 일을 단일 도구로.

  • Cilium 2.0 (2026-03)
  • L3-L7 Network Policy
  • Service Mesh (sidecar 없음)
  • Cluster Mesh (다중 클러스터)
  • Hubble (관측성)

1. eBPF가 게임 체인저인 이유

전통 Service Mesh는 sidecar(envoy proxy)를 Pod마다. 트래픽이 application → sidecar → kernel → network로 흐름. Cilium은 eBPF로 kernel 안에서 바로 처리.

지표Sidecar (Istio)Cilium (eBPF)
p50 지연 추가+1.2ms+0.1ms
p99 지연 추가+5.8ms+0.6ms
메모리 (Pod당)50~80MB0 (커널)
CPU 오버헤드~5%<1%

2. 설치

# Helm으로 (가장 흔함)
helm install cilium cilium/cilium \
  --version 2.0 \
  --namespace kube-system \
  --set kubeProxyReplacement=true \
  --set hubble.enabled=true \
  --set hubble.relay.enabled=true \
  --set hubble.ui.enabled=true \
  --set serviceMesh.enabled=true

3. Network Policy — L3-L7

apiVersion: cilium.io/v2
kind: CiliumNetworkPolicy
metadata:
  name: api-policy
spec:
  endpointSelector:
    matchLabels:
      app: api
  ingress:
  - fromEndpoints:
    - matchLabels:
        app: frontend
    toPorts:
    - ports:
      - port: "8080"
      rules:
        http:
        - method: "GET"
          path: "/api/v1/.*"
        - method: "POST"
          path: "/api/v1/users"

HTTP method·path까지 정책으로. Calico·Cilium 1.x 모두 못 했던 L7.

4. Service Mesh — 사이드카 없이

apiVersion: cilium.io/v2
kind: CiliumEnvoyConfig
metadata:
  name: api-mesh
spec:
  services:
    - name: api
      namespace: production
  resources:
    - "@type": type.googleapis.com/envoy.config.listener.v3.Listener
      # mTLS, retries, circuit breaker 등 envoy spec 그대로

Envoy 기능 그대로 + sidecar 안 띄움. waypoint도 선택적.

5. mTLS

apiVersion: cilium.io/v2
kind: CiliumNetworkPolicy
metadata:
  name: mtls-policy
spec:
  endpointSelector:
    matchLabels:
      app: api
  ingress:
  - fromEndpoints:
    - matchLabels:
        app: frontend
    authentication:
      mode: required

모든 통신 자동 mTLS 암호화·인증.

6. Cluster Mesh — 다중 클러스터

# 클러스터 1, 2를 mesh로 연결
cilium clustermesh enable --context cluster1
cilium clustermesh enable --context cluster2
cilium clustermesh connect --context cluster1 --destination-context cluster2

# Service를 클러스터 간 자동 동기화
kubectl annotate service api io.cilium/global-service="true"

다른 클러스터의 서비스가 로컬 서비스처럼 보임. 자동 failover·load balancing.

7. Hubble — 관측성

# 실시간 트래픽 관찰
hubble observe --pod api-server --since 1m

# Service Map
hubble observe --output json | hubble ui

# 정책 위반 추적
hubble observe --verdict DROPPED

Wireshark급 패킷 분석을 클러스터 단위로. Service Map 자동 생성.

8. eBPF 기반 부하 분산

# kube-proxy 대체
kubeProxyReplacement: true

# 결과:
# - kube-proxy iptables 사라짐
# - eBPF가 service traffic 직접 라우팅
# - 1만+ Service에서도 iptables처럼 느려지지 않음

9. 실측 — 대규모 클러스터

지표Calico + IstioCilium 2.0
NetworkPolicy 적용 시간15초0.5초
Service 변경 반영2초50ms
p99 지연+5.8ms+0.6ms
대시보드 추적성Kiali 별도Hubble 통합

10. 마이그레이션 — Calico → Cilium

  1. 스테이징에 Cilium 설치, kube-proxy mode 유지
  2. NetworkPolicy 패턴 변환 (Calico → CiliumNetworkPolicy)
  3. kubeProxyReplacement 활성화 — kube-proxy 제거
  4. Hubble 활성화로 관측성 검증
  5. 운영 클러스터 단계적 적용 (드라이 런 모드 활용)

11. 한계

  • 커널 5.10+ 필수
  • 일부 클라우드 (AKS Windows 노드) 제약
  • L7 정책 표현력은 Istio보다 약간 낮음 (특수 케이스)
  • 네트워크 디버깅 학습 곡선 가파름 (eBPF 이해 필요)

도입 결정 매트릭스

케이스권장
새 클러스터 + 큰 규모Cilium 2.0 (CNI부터)
이미 Calico 운영 중Cilium 마이그레이션 검토 (큰 효과)
Istio Sidecar 운영Cilium 또는 Istio Ambient 둘 중 선택
단순 단일 클러스터Cilium 또는 Linkerd

자주 묻는 질문

Cilium 도입 부담?새 클러스터는 매우 간단. 기존 Calico 마이그레이션은 1~2주 (정책 변환).

Istio Ambient vs Cilium?Cilium이 성능 우위, Istio가 표현력 우위. 대부분은 Cilium이 충분.

Windows 노드?제한적. Cilium 2.0이 Windows 지원 확대했지만 Linux만큼은 아님.

댓글 0

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