본문 바로가기
WIKI 기술 지식 베이스

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 -

더 알아보기 (Learn more)