Kustomize로 Linkerd 설정 커스터마이징하기
Linkerd 설치·업그레이드 프로세스를 fork하는 대신, Kustomize로 linkerd install의 출력을 일관된 방식으로 패치할 수 있어요. 이렇게 하면 설치에 특화된 기능을 추가하도록 설치를 커스터마이징할 수 있어요.
출처: Linkerd Customizing Linkerd's Configuration with Kustomize
본문
Linkerd 프로덕션 팁
이 페이지에는 오픈 소스 커뮤니티가 제공하는 best-effort 지침이 담겨 있어요. 미션 크리티컬 애플리케이션을 운영하는 프로덕션 사용자는 Linkerd 프로덕션 리소스에 익숙해지고/거나 상용 Linkerd 제공업체와 연락을 취하는 게 좋아요.
시작하려면 linkerd install의 출력을 YAML 파일로 저장하세요. 이 파일이 Kustomize가 패치하고 클러스터에 추가되는 내용을 생성하는 데 쓰는 베이스 리소스가 돼요.
linkerd install > linkerd.yaml
참고
업그레이드할 때는 이 파일을 linkerd upgrade의 내용으로 채워야 해요. 최신 kustomize 릴리스를 쓰면 exec 플러그인으로 이를 자동화하는 것도 가능해요.
다음으로 kustomization.yaml 파일을 만드세요. 이 파일에는 베이스 리소스 목록과 그 리소스에 적용할 변환을 나열하는 Kustomize 지침이 담겨요. 지금은 거의 비어 있는 상태예요:
resources:
- linkerd.yaml
이제 몇 가지 예제 커스터마이징을 해보는 방법을 볼게요.
참고
Kustomize는 원하는 만큼 많은 패치, 변환, 생성기를 허용해요. 이 예제들은 수정을 한 번에 하나씩 보여주지만, 단일 kustomization.yaml 파일에서 필요한 만큼 여러 개를 적용하는 것도 가능해요.
PriorityClass 추가하기
컨트롤 플레인에는 critical PriorityClass와 연결하면 도움이 되는 컴포넌트가 몇 개 있어요. 이 구성은 현재 linkerd install의 플래그로는 지원되지 않지만, Kustomize를 쓰면 쉽게 추가할 수 있어요.
먼저 priority-class.yaml 파일을 만들어 PriorityClass 리소스를 정의해 보세요.
apiVersion: scheduling.k8s.io/v1
description:
Used for critical linkerd pods that must run in the cluster, but can be moved
to another node if necessary.
kind: PriorityClass
metadata:
name: linkerd-critical
value: 1000000000
참고
1000000000은 사용자가 정의할 수 있는 최대 우선순위예요. 상황에 맞게 조정하세요.
다음으로 오버레이를 담을 patch-priority-class.yaml 파일을 만드세요. 이 오버레이는 무엇을 수정해야 하는지 설명해요.
apiVersion: apps/v1
kind: Deployment
metadata:
name: linkerd-identity
namespace: linkerd
spec:
template:
spec:
priorityClassName: linkerd-critical
그런 다음 이것을 전략적 병합 옵션으로 kustomization.yaml에 추가하세요:
resources:
- priority-class.yaml
- linkerd.yaml
patchesStrategicMerge:
- patch-priority-class.yaml
클러스터에 적용하려면 kustomize의 출력을 kubectl apply로 파이프해야 해요. 예를 들어 다음과 같이 실행할 수 있어요:
# install the Linkerd CRDs
linkerd install --crds | kubectl apply -f -
# install the Linkerd control plane manifests using Kustomize
kubectl kustomize . | kubectl apply -f -