아키텍처

지원 버전: Linkerd 2.16+ 마지막 업데이트: 2026년 2월 22일

개요

Linkerd는 컨트롤 플레인과 데이터 플레인으로 구성된 서비스 메시 아키텍처를 따릅니다. 이 문서에서는 각 컴포넌트의 역할과 상호작용, 인증서 체계, 프록시 라이프사이클 등을 상세히 설명합니다.

전체 아키텍처

spinner

컨트롤 플레인

컨트롤 플레인은 linkerd 네임스페이스에 배포되며, 데이터 플레인 프록시를 구성하고 관리하는 컴포넌트들로 구성됩니다.

Destination Controller

Destination 컨트롤러는 서비스 디스커버리와 정책 배포를 담당하는 핵심 컴포넌트입니다.

spinner

주요 기능:

기능
설명

서비스 디스커버리

Kubernetes 서비스와 엔드포인트 모니터링, 프록시에 실시간 업데이트

정책 배포

ServiceProfile, TrafficSplit 등 정책을 프록시에 전달

로드 밸런싱 정보

EWMA 기반 로드 밸런싱을 위한 엔드포인트 가중치 정보

서비스 프로파일

라우트별 재시도, 타임아웃, 메트릭 설정

Destination API 동작:

Identity Controller

Identity 컨트롤러는 mTLS를 위한 인증서 발급과 관리를 담당합니다.

spinner

인증서 발급 프로세스:

  1. 프록시 시작 시 CSR(Certificate Signing Request) 생성

  2. Identity 컨트롤러가 Pod의 ServiceAccount 검증

  3. Trust Anchor(Root CA)로 인증서 서명

  4. 워크로드 인증서를 프록시에 전달

  5. 기본 24시간 유효, 자동 갱신

Identity 설정:

Proxy Injector

Proxy Injector는 Kubernetes Admission Webhook으로 동작하여 Pod에 사이드카를 자동 주입합니다.

spinner

주입 조건:

주입되는 컴포넌트:

컴포넌트
역할

linkerd-init

Init 컨테이너, iptables 규칙 설정

linkerd-proxy

사이드카 컨테이너, 트래픽 프록시

볼륨

Identity 토큰, 설정

환경변수

프록시 설정, 대상 주소

Policy Controller

Policy Controller는 Linkerd의 인가 정책을 관리합니다.

데이터 플레인

데이터 플레인은 애플리케이션 Pod에 주입된 linkerd-proxy 사이드카로 구성됩니다.

linkerd2-proxy

Linkerd의 데이터 플레인 프록시는 Rust로 작성된 초경량 마이크로 프록시입니다.

spinner

프록시 특성:

특성

언어

Rust

메모리 사용량

~10MB

CPU 오버헤드

최소

지연 시간 추가

<1ms p99

프로토콜

HTTP/1.1, HTTP/2, gRPC, TCP

TLS

TLS 1.3 (rustls)

Istio Envoy와 비교:

특성
linkerd2-proxy
Envoy (Istio)

언어

Rust

C++

메모리

~10MB

~50-100MB

바이너리 크기

~10MB

~60MB

지연 시간

<1ms p99

2-5ms p99

설정 복잡도

낮음 (자동)

높음 (xDS)

확장성

제한적

Wasm, Lua

프로토콜 지원

HTTP, gRPC, TCP

매우 광범위

프록시 트래픽 흐름

spinner

linkerd-init (Init Container)

linkerd-init은 iptables 규칙을 설정하여 트래픽을 프록시로 리다이렉트합니다.

주입된 Pod 구조:

인증서 체계

Linkerd는 계층적 PKI(Public Key Infrastructure)를 사용하여 mTLS를 구현합니다.

인증서 계층 구조

spinner

Trust Anchor (Root CA)

Trust Anchor는 PKI의 루트로, 모든 인증서 체인의 신뢰 기반입니다.

Trust Anchor 저장:

Identity Issuer (Intermediate CA)

Identity Issuer는 워크로드 인증서를 발급하는 중간 CA입니다.

Identity Issuer Secret:

워크로드 인증서

각 프록시는 고유한 워크로드 인증서를 받습니다.

spinner

SPIFFE ID 형식:

인증서 로테이션

Trust Anchor 로테이션:

사이드카 주입 상세

주입 워크플로우

spinner

주입 어노테이션

프록시 Readiness/Liveness

컴포넌트 간 통신

spinner

포트 정리:

컴포넌트
포트
프로토콜
용도

Destination

8086

gRPC

서비스 디스커버리 API

Identity

8080

gRPC

인증서 발급 API

Policy

8090

gRPC

정책 API

Proxy Injector

8443

HTTPS

Admission Webhook

Proxy (Inbound)

4143

HTTP/gRPC

인바운드 트래픽

Proxy (Outbound)

4140

HTTP/gRPC

아웃바운드 트래픽

Proxy (Admin)

4191

HTTP

메트릭, 상태 확인

Istio 아키텍처와 비교

컨트롤 플레인 비교

spinner
특성
Linkerd
Istio

컨트롤 플레인

분산 (3개 컴포넌트)

통합 (istiod)

프록시

linkerd2-proxy (Rust)

Envoy (C++)

설정 프로토콜

커스텀 gRPC

xDS (복잡함)

CRD 수

~10개

~50개+

학습 곡선

완만

가파름

리소스 사용량

낮음

높음

확장성

제한적

Wasm, Lua

프록시 비교

다음 단계

참고 자료

마지막 업데이트