linkerd install 부터 remove 까지

해찌·2022년 5월 12일

linkerd

목록 보기
2/4

istio를 파다가 우연히 지인의 소개로 linkerd 라는 oss를 알게 되었습니다.
한줄 소감은 istio보다 가벼우며 있을 건 다 있다, 하지만 서킷 브레이커와 같이 큰 한방 기능은 부족하다 입니다. 이 때문에 다시 istio를 파야하나 고민중입니다만, 우선 설치를 진행해보도록 합니다.
공식 도큐먼트가 매우 잘 되어 있는 편이며 데모까지 무리 없이 따라 설치할 수 있습니다.

링커드의 아키텍처입니다.
어디나 그렇듯 컨트롤 플레인은 관리, 데이터 플레인은 프록시 입니다.

https://linkerd.io/2.11/overview/
현재 22년 5월자로 2.11버전입니다.


https://linkerd.io/2.11/getting-started/

CLI 설치 (MAC환경에서 brew를 사용하였습니다)

brew install linkerd
linkerd version
linkerd check --pre
linkerd install | kubectl apply -f -
linkerd check

CLI 설치 및 K8S로의 컨트롤플레인 설치가 완료되었습니다.

비주얼리제이션 확장 설치

linkerd viz install | kubectl apply -f -
linkerd check
linkerd viz dashboard &

linkerd의 대시보드를 볼 수 있게 되었습니다.


linkerd inject 자동 주입 (네임스페이스 기준)

https://linkerd.io/2.11/tasks/adding-your-service/#meshing-a-service-with-annotations
https://linkerd.io/2.11/reference/cli/inject/
linkerd는 pod에 sidecar를 주입하여 mesh를 습득하는데,
이는 네임스페이스 단위로 자동 주석 처리가 가능하여 편리했습니다.

kubectl get -n NAMESPACE deploy -o yaml | linkerd inject - | kubectl apply -f -
kubectl -n NAMESPACE get po -o jsonpath='{.items[0].spec.containers[*].name}'
출력결과 : `linkerd-proxy CONTAINER`

제거

https://linkerd.io/2.11/tasks/uninstall/

kubectl get deploy -o yaml | linkerd uninject - | kubectl apply -f -
linkerd viz uninstall | kubectl delete -f -
linkerd uninstall | kubectl delete -f -

문서에는 나와있지않지만(못찾은건가?) 제거를 위해서는 uninject - 옵션을 이용해 enable된 주석을 정리해준 후 사이드카를 다 빼주는 편이 깔끔합니다. 이후에 지우면 요로코롬 지워집니다.


삽질

automountServiceAccountToken set to \"false\"
serviceaccount가 없는 파드는 linkerd inject가 붙고 있는 파드는 주입이 안 됐습니다. 물어물어 알아 본 결과 아래의 링크를 첨부합니다.
https://linkerd.io/2.11/tasks/validating-your-traffic/
https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/

자동 토큰 옵션을 true로 변경한다는 것이 향후 보안 이슈가 될 수 있을 지도 모르겠습니다만 그건 추후에 생각하기로 합니다.

profile
안녕하세요 :)

0개의 댓글