Linkerd
Linkerd
경량 서비스 메시. Rust로 작성, 간단한 설정.
Linkerd
경량 서비스 메시. Rust로 작성, 간단한 설정.
Linkerd는 Buoyant에서 개발한 초경량 서비스 메시로, "서비스 메시"라는 용어를 처음 만든 프로젝트입니다. Rust로 작성된 데이터 플레인(linkerd2-proxy)은 메모리 사용량이 10MB 미만으로, Istio의 Envoy(약 50MB) 대비 훨씬 가볍습니다. CNCF 졸업 프로젝트입니다.
Linkerd의 설계 철학은 "단순함"입니다. 설치는 CLI 두 줄(`linkerd install | kubectl apply`, `linkerd inject`)로 끝나고, 기본 설정만으로 mTLS, 메트릭, 재시도, 타임아웃이 자동 적용됩니다. Istio처럼 복잡한 CRD를 배우지 않아도 바로 효과를 볼 수 있습니다.
핵심 기능으로 automatic mTLS(서비스 간 암호화 통신), golden metrics(성공률, 레이턴시, 요청량) 자동 수집, 재시도 및 타임아웃 자동 적용이 있습니다. Linkerd Dashboard와 Viz 확장으로 서비스 토폴로지와 실시간 메트릭을 시각화할 수 있습니다.
Istio vs Linkerd 선택에서, 복잡한 트래픽 라우팅(A/B 테스트, 트래픽 미러링)이 필요하면 Istio가 적합하고, 빠른 도입과 낮은 운영 부담을 원하면 Linkerd를 추천합니다. 실제로 많은 팀이 Linkerd로 서비스 메시를 시작하고, 요구사항이 복잡해지면 Istio로 마이그레이션합니다.
# Linkerd CLI 설치 (macOS)
brew install linkerd
# 클러스터 사전 검사
linkerd check --pre
# Linkerd Control Plane 설치
linkerd install --crds | kubectl apply -f -
linkerd install | kubectl apply -f -
# 설치 확인
linkerd check
# Viz 확장 (대시보드, 메트릭) 설치
linkerd viz install | kubectl apply -f -
# 기존 Deployment에 사이드카 주입
kubectl get deploy -n my-app -o yaml | linkerd inject - | kubectl apply -f -
# 또는 namespace에 annotation으로 자동 주입 설정
kubectl annotate namespace my-app linkerd.io/inject=enabled
# 대시보드 접속
linkerd viz dashboard &
# 서비스 메트릭 확인
linkerd viz stat deploy -n my-app
# 실시간 요청 확인
linkerd viz tap deploy/api-server -n my-app
# ServiceProfile로 재시도 정책 설정
cat <
인프라 리드: "서비스 메시 도입하자는 얘기 나왔는데, Istio는 팀 규모 대비 학습 곡선이 가파를 것 같아요."
DevOps: "Linkerd는 어떨까요? 설치도 쉽고 기본 기능만으로 mTLS랑 메트릭 바로 쓸 수 있어요."
인프라 리드: "좋아요. 일단 개발 환경에 적용해보고, 운영 복잡도 확인 후 확대하죠."
면접관: "Linkerd가 Istio보다 가볍다고 하셨는데, 구체적으로 어떤 부분에서 차이가 나나요?"
지원자: "가장 큰 차이는 프록시입니다. Linkerd는 Rust로 작성된 전용 프록시를 사용해서 Pod당 10MB 정도인 반면, Istio의 Envoy는 50MB 이상입니다. 기능은 Istio가 더 풍부하지만, 저희처럼 20개 미만 서비스에서는 Linkerd가 적합했습니다."
리뷰어: "linkerd inject로 주입하면 Pod 재시작되니까 롤링 배포 주의하세요."
개발자: "네, namespace annotation으로 설정해서 다음 배포 때 자동 주입되게 할게요."