이번 포스팅에서는 Linkerd 2.12.4 -> 2.13.1로 업그레이드하는 절차를 기록하려 한다.
버전이 올라가면서 Linkerd에서 사용하는 resource의 이름이나 스펙이 바뀌거나 한다면 이에 맞게 Helm values.yaml 파일을 다시 작성해야 할 수도 있고, Linkerd와 EKS 등 버전 호환성 문제를 고려해야 하는 상황이 필요할 수도 있다.
이 모든 내용은 release node를 통해 확인할 수 있기 때문에 먼저 release notes를 꼼꼼히 확인해야 한다.
아래는 공식 홈페이지에서 제공하는 업그레이드 시 주의사항이다.
다행히 2.12 -> 2.13 업그레이드 시 특별한 추가 Step은 없다는 걸 확인할 수 있다.
업그레이드 관련 공식 홈페이지 참조: https://linkerd.io/2.13/tasks/upgrade/#upgrade-notice-stable-2-12-0
업그레이드 진행에 앞서 현재 버전을 체크하자.
Helm chart로 설치되어 있는 Linkerd chart의 현재 버전을 확인한다.
$ helm list -n linkerd
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
linkerd-control-plane linkerd 1 2023-04-17 08:48:57.775290261 +0000 UTC deployed linkerd-control-plane-1.9.6 stable-2.12.4
linkerd-crds linkerd 1 2023-04-17 08:48:30.051507704 +0000 UTC deployed linkerd-crds-1.4.0
$ helm list -n linkerd-viz
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
linkerd-viz linkerd-viz 1 2023-04-18 14:24:58.735620143 +0000 UTC deployed linkerd-viz-30.3.6 stable-2.12.4
Helm chart를 update 하여 최신 chart 버전을 가져온다.
$ helm repo update
Hang tight while we grab the latest from your chart repositories...
Update Complete. ⎈Happy Helming!⎈
linkerd-control-plane, linkerd-crds, linkerd-viz가 현재 설치되어 있는 버전보다 최신 버전이 있는 걸 확인할 수 있다.
$ helm search repo linkerd
NAME CHART VERSION APP VERSION DESCRIPTION
l5d-smi/linkerd-smi 0.2.0 v0.2.0 The Linkerd-SMI extension adds SMI adaptor to t...
linkerd/linkerd-control-plane 1.12.1 stable-2.13.1 Linkerd gives you observability, reliability, a...
linkerd/linkerd-crds 1.6.0 Linkerd gives you observability, reliability, a...
linkerd/linkerd-failover 0.1.0 0.1.0
linkerd/linkerd-jaeger 30.8.1 stable-2.13.1 The Linkerd-Jaeger extension adds distributed t...
linkerd/linkerd-multicluster 30.7.1 stable-2.13.1 The Linkerd-Multicluster extension contains res...
linkerd/linkerd-viz 30.8.1 stable-2.13.1 The Linkerd-Viz extension contains observabilit...
linkerd/linkerd2 2.11.5 stable-2.11.5 DEPRECATED: Use linkerd-crds and linkerd-contro...
linkerd/linkerd2-cni 30.8.1 stable-2.13.1 Linkerd is a *service mesh*, designed to give p...
linkerd/linkerd2-multicluster 2.9.6 stable-2.9.5 DEPRECATED: Use linkerd-multicluster instead - ...
linkerd/linkerd2-multicluster-link 2.9.7 stable-2.9.5 A helm chart containing the resources to enable...
Helm 차트로 업그레이드를 진행하자.
$ helm upgrade linkerd-crds linkerd/linkerd-crds -n linkerd
Release "linkerd-crds" has been upgraded. Happy Helming!
$ helm upgrade linkerd-control-plane linkerd/linkerd-control-plane -n linkerd -f values.yaml --atomic
Release "linkerd-control-plane" has been upgraded. Happy Helming!
$ helm upgrade linkerd-viz linkerd/linkerd-viz -n linkerd-viz
Release "linkerd-viz" has been upgraded. Happy Helming!
linkerd-control-plane, linkerd-viz는 2.13.1 linkerd-crds는 1.6.0으로 업그레이드된 것을 확인할 수 있다.
$ helm list -n linkerd
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
linkerd-control-plane linkerd 2 2023-04-19 09:51:36.446474192 +0000 UTC deployed linkerd-control-plane-1.12.1 stable-2.13.1
linkerd-crds linkerd 2 2023-04-19 09:41:09.03176964 +0000 UTC deployed linkerd-crds-1.6.0
$ helm list -n linkerd-viz
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
linkerd-viz linkerd-viz 2 2023-04-19 09:59:36.159723203 +0000 UTC deployed linkerd-viz-30.8.1 stable-2.13.1
실제 배포된 Deployment의 이미지가 정상으로 올라갔는지 확인해 보자.
$ kubectl get deploy -n linkerd -o=json | jq -r '.items[].spec.template.spec.containers[].image'
cr.l5d.io/linkerd/proxy:stable-2.13.1
cr.l5d.io/linkerd/controller:stable-2.13.1
cr.l5d.io/linkerd/controller:stable-2.13.1
cr.l5d.io/linkerd/policy-controller:stable-2.13.1
cr.l5d.io/linkerd/controller:stable-2.13.1
cr.l5d.io/linkerd/proxy:stable-2.13.1
cr.l5d.io/linkerd/proxy:stable-2.13.1
cr.l5d.io/linkerd/controller:stable-2.13.1
$ kubectl get deploy -n linkerd-viz -o=json | jq -r '.items[].spec.template.spec.containers[].image'
cr.l5d.io/linkerd/metrics-api:stable-2.13.1
prom/prometheus:v2.30.3
cr.l5d.io/linkerd/tap:stable-2.13.1
cr.l5d.io/linkerd/tap:stable-2.13.1
cr.l5d.io/linkerd/web:stable-2.13.1
linkerd-viz가 업그레이드되면 Web Ui 대시보드에서도 버전이 올라간 것을 확인할 수 있다.
Meshed 상태 확인하고, 실제로 트래픽이 잘 흐르는지 체크한다.
마치며
이번 포스팅을 통해 Linkerd의 Upgrade를 진행해 보았다.
Linkerd뿐만 아니라 모든 Upgrade 작업은 매우 중요하며 실수할 경우 큰 문제를 일으킬 수 있다. 따라서 신중하게 계획을 세우고 release node를 통해 주요 업데이트 내용을 파악하여 현재 환경과의 연관성을 생각하고 충분한 테스트를 하여 진행해야 한다.
추가로 2.13 버전부터 Linkerd에서 기능적으로 아쉬웠던 서킷 브레이킹(Circuit Breaking) 기능을 지원하게 되었다고 한다. 다음 포스팅에서는 서킷 브레이킹을 기능에 대한 개념과 실습을 다뤄보겠다.
'Service Mesh > Linkerd' 카테고리의 다른 글
Linkerd 멀티클러스터 통신 구성 (0) | 2023.04.28 |
---|---|
Linkerd 서킷 브레이킹 (Circuit Breaking) (1) | 2023.04.19 |
Linkerd 트래픽 Retry, Timeout (0) | 2023.04.19 |
Linkerd 권한 부여 정책 (0) | 2023.04.05 |
Linkerd mTLS 통신 검증 (0) | 2023.04.05 |
댓글