linkerd-patterns은(는) 무엇을 하나요?
Linkerd 서비스 메시 패턴을 구현하여 경량화되고 보안에 중점을 둔 서비스 메시 배포를 지원합니다. Linkerd 설정, 트래픽 정책 구성, 최소 오버헤드로 제로 트러스트 네트워킹 구현 시 사용하세요.
개요
이 스킬은 Linkerd 서비스 메시의 일반적인 패턴을 모아놓은 것으로, Kubernetes 환경에서 안전하고 효율적인 서비스 간 통신을 설정하는 데 도움을 줍니다. Linkerd는 CNCF(Cloud Native Computing Foundation)의 인큐베이팅 프로젝트로, 최소한의 성능 오버헤드로 서비스 메시 기능을 제공합니다.
주요 패턴
1. 트래픽 분할 (Traffic Split)
트래픽 분할을 통해 카나리 배포, A/B 테스트 등을 수행할 수 있습니다.
apiVersion: split.smi-spec.io/v1alpha2
kind: TrafficSplit
metadata:
name: my-service-split
spec:
service: my-service
backends:
- service: my-service-v1
weight: 90
- service: my-service-v2
weight: 10
2. 재시도 및 타임아웃 (Retries and Timeouts)
일시적인 장애를 처리하기 위한 재시도와 응답 시간 제한을 설정합니다.
apiVersion: policy.linkerd.io/v1beta1
kind: Retry
metadata:
name: my-retry
spec:
routes:
- name: my-route
retry:
budget:
minRetriesPerSecond: 10
percent: 0.2
retryFor: |
statusCode == 503
timeout: 300ms
3. mTLS 및 인증 (mTLS and Authentication)
Linkerd는 기본적으로 mTLS를 활성화하여 서비스 간 통신을 암호화합니다.
apiVersion: policy.linkerd.io/v1beta1
kind: Server
metadata:
name: my-server
namespace: my-namespace
spec:
podSelector:
matchLabels:
app: my-app
port: 8080
proxyProtocol: HTTP/1
4. 접근 제어 정책 (Access Control Policies)
메시 내 서비스 간 접근을 세밀하게 제어합니다.
apiVersion: policy.linkerd.io/v1beta1
kind: AuthorizationPolicy
metadata:
name: my-policy
spec:
targetRef:
group: policy.linkerd.io
kind: Server
name: my-server
requiredAuthenticationRef:
group: policy.linkerd.io
kind: MeshTLSAuthentication
name: my-auth
사용 방법
- Linkerd가 설치된 Kubernetes 클러스터가 필요합니다.
- 원하는 패턴의 YAML 매니페스트를 적용합니다.
linkerd check명령어로 설정을 검증합니다.
# Linkerd 설치 확인
linkerd check --pre
# 메시에 네임스페이스 추가
kubectl annotate namespace my-namespace linkerd.io/inject=enabled
# 패턴 적용
kubectl apply -f my-pattern.yaml
참고 자료
라이선스
이 스킬은 MIT 라이선스 하에 배포됩니다.