Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

Study_note

[kubernetes] 쿠버네티스 플러그인 패키지 관리자 Krew 및 자주 사용하는 플러그인 tree, neat 사용 본문

Kubernetes

[kubernetes] 쿠버네티스 플러그인 패키지 관리자 Krew 및 자주 사용하는 플러그인 tree, neat 사용

Study_note 2022. 12. 1. 20:18

 

쿠버네티스를 사용하면 kubectl 명령어를 통해 api를 호출하고 다양한 리소스에 정보들을 확인한다.

 

하지만 운영을하게 되면 반복적으로 옵션 및 명령어를 사용해야할 때도 있는데 예를들어

특정 namespace에 속한 자원을 관리할 때 사용하는 -n 옵션
멀티 클러스터 구조에서 클러스터 변환시 사용되는 use-context 등 반복되는 작업들이 많이 번거로울 때가 많다.

 

단순히 api를 호출하는 kubectl 명령어 경우 k로 변수로 바꿔 사용하여 불편함을 해소하는데

위에서 설명한 예들은 이런 단순한 방법으로는 해결하지 못한다.

 

이런 불편함을 해소하기 위한게 많은 사람들이 쿠버네티스 플러그인들을 생성하였고 이러한 다양하고 많은 플러그인들을 관리하기 위해 생긴게 플러그인 패키지 관리자가 Krew이다

 

krew란?

centos의 yum, ubuntu의 apt 등과 같은 역할을 하는 패키지 관리자라 생각하면 된다.

 

현재 Krew 에는 208개의 kubectl 플러그인 이 배포되어 있으며 macOS, Linux 및 Windows와 같은 모든 주요 플랫폼에서 작동한다. (6개월 전만해도 130개인데 현재는 208개... 추후 다른 플러그인들도 계속 생성될것 같다.)

 

여러 플랫폼에서 플러그인을 쉽게 패키징하고 배포할 수 있으며 Krew를 사용하여 중앙 집중식 플러그인 저장소를 통해 플러그인을 검색할 수 있습니다.

 

설치 및 사용방법 또한 간편하다

 

설치

1. 우선 git을 설치해준다.

2. 아래 코드를 입력 (필자가 설치 할때 tar 파일이 없다는 에러 발생했는데 공식 홈페이지 가서 코드 가져오면 제대로 작동)

(
  set -x; cd "$(mktemp -d)" &&
  OS="$(uname | tr '[:upper:]' '[:lower:]')" &&
  ARCH="$(uname -m | sed -e 's/x86_64/amd64/' -e 's/\(arm\)\(64\)\?.*/\1\2/' -e 's/aarch64$/arm64/')" &&
  KREW="krew-${OS}_${ARCH}" &&
  curl -fsSLO "https://github.com/kubernetes-sigs/krew/releases/latest/download/${KREW}.tar.gz" &&
  tar zxvf "${KREW}.tar.gz" &&
  ./"${KREW}" install krew
)

 

3. Krew 실행파일의 위치를 환경 변수를 사용해서 PATH에 등록

export PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH"

 

4. path를 재시작

source ~/.bashrc

 

재시작까지 했다면 정상적으로 생성되었다.

아래 처럼 kubectl krew --help 명령어를 통해 설치된것을 확인할 수 있으며 관련 명령어 참고 가능

플러그인들은 아래 참조에서 확인 가능하면 간단한 명령어들은 다음과 같다.

 

# krew 버전 확인
kubectl krew version

# krew에서 사용할 수 있는 명령어 및 옵션들 확인
kubectl krew --help

# krew에 있는 플러그인들 검색
kubectl krew search

# krew에 있는 특정 플러그인 확인
kubectl krew search plugin-name

# Krew에서 특정 플러그인 설치
kubectl krew install plugin-name

# 방금 설치한 플러그인 확인
kubectl krew list

# 설치한 플러그인에 대한 정보 출력
kubectl krew info plugin-name

#설치한 플러그인 업데이트
kubectl krew upgrade

#설치한 특정 플러그인 삭제
kubectl krew uninstall plugin-name

 

아래 참조를 확인 하면 Krew 다운로드 및 설치할 수 있는 플러그인들과 해당 플러그인에 대한 설명을 확인할 수 있다.

 

Tree

tree 플러그인은 kubernetes의 Object 간 소유권 관계를 정리하는 옵션으로 tree 설치 후 아래 처럼 사용 가능 하다

Neat

neat는 kubernetes manifests를 깔끔하게 정돈하여 보여주는 kubectl 옵션이다. 

아래처럼 2개의 명령어를 통하여 비교해보면 neat가 훨씬 간결하고 default 옵션으로 숨겨있던 주요 옵션까지 포함하여 yaml 파일을 추출할 수 있다.

# neat를 사용하지 않고 추출
k get deployments.apps nginx-deployment -o yaml

# neat를 사용해서 추출
k get deployments.apps nginx-deployment -o yaml | kubectl neat

하지만 neat 옵션은 백업 시점의 상태 정보를 제외하고 출력하기 때문에

yaml 파일에 대한 검증이나, 타 환경에 이전 구축하는 용도로 사용하기 좋다

 

그 외 멀티 클러스터 환경에서 자주 사용하는 플러그인은 아래와 같고

  • kubectx, kubens(하나의 쌍으로 context관리, namespace 관리)
  • kube_psl (프롬프트 출력)

유지 보수에서 자주 사용하는 플러그인은 아래와 같다.

  • kail (multi pod log 모니터링)
  • sniff (Pod 내 TCP Dump를 생성하는 명령어로 마 서비스간 네트워크 활동을 캡처하는데 활용하기 용이)
  • kubespy( kubernetes의 오브젝트에 대한 상태변화를 모니터링하는 도구) 등이 있다.

이 밖에 다양한 플러그인들이 있으며 이를 통해 더 쉽고 간편하게 클러스터를 운영할 수 있다.

 

참조

https://github.com/kubernetes-sigs/krew/

https://krew.sigs.k8s.io/

https://krew.sigs.k8s.io/plugins/

https://waspro.tistory.com/765

Comments