IT/Kubernetes

[Kubernetes] Kubernetes Plugin Manager - Krew

wookiist 2020. 7. 23. 13:31

쿠버네티스 플러그인 관리자 Krew

쿠버네티스를 사용하다보면 다양한 정보를 확인하기 위해 kubectl 명령어를 잘 활용해야 합니다.
또, 특정 인자를 반복적으로 넘겨주어야 하는 때도 있습니다. 대표적으로 특정 네임스페이스에 속한 자원을 관리할 때 사용하는 -n 인자가 있겠네요.

이렇듯 같은 행동을 진부하게 반복하게 되니 영 불편합니다. 이런 문제는 어떻게 해소할 수 있을까 열심히 구글링을 한 결과, 역시 저 말고도 이런 문제에 불편함을 느끼고 이를 해결하기 위해 이미 플러그인을 개발하신 형님들이 계셨습니다.

예를 들어 방금 전에 소개한 불편함은 프롬프트를 특정 네임스페이스를 가리키도록 설정해놓고 네임스패이스의 변경이 필요할 때만 해당 플러그인을 통해 변경하면 되는 식으로 해결할 수 있더군요.

이처럼 우리가 쿠버네티스를 가지고 작업하면서 발생하는 크고 작은 문제들을 해결한 개발물, 즉 플러그인이 이미 도처에 존재하고 있습니다. 구글링을 해보면 금방 찾을 수 있죠.

다만 이런 플러그인에 감사하는 것도 잠시, 이제는 관리를 위한 플러그인을 다시 관리해야하는 상황이 발생합니다. 과연 이것도 해결할 수 있을까요?

Krew

Krew Logo

Krew는 이런 고민을 타파해주는 쿠버네티스 플러그인 패키지 관리자입니다. macOS의 brew, Ubuntu의 apt 와 비슷한 역할을 수행한다고 보면 됩니다.

Krew를 통해 현재 90가지 이상의 플러그인[각주:1] 을 설치할 수 있으며, 사용법도 매우 단순합니다. 본 포스팅에서는 Krew 설치 방법과 사용법, 그리고 Krew로 설치할 수 있는 대표적인 플러그인들을 다뤄봅니다. 추후 시리즈 형식으로 플러그인들을 소개하는 포스트를 작성하겠습니다.

Installation

Krew 설치 방법은 매우 단순합니다. 다만 본인이 사용하고 있는 OS나 쉘의 종류에 따라 다를 수 있다는 점에 유의하세요. 본 포스트에서는 macOS나 Linux 계열의 OS를 이용하고, Bash 또는 Zsh를 사용한다고 가정하겠습니다.

# macOS & Linux
# 아래 작업을 수행하기 전에 Git이 설치되어 있는지 확인하세요.
# () 부분도 포함하여 붙여 넣습니다.
# Git Repo로부터 파일을 받아오기 때문에, 시간이 소요됩니다. 잠시 커피 한 잔 하며 기다리는 것도 좋겠네요

$ (
  set -x; cd "$(mktemp -d)" &&
  curl -fsSLO "https://github.com/kubernetes-sigs/krew/releases/latest/download/krew.{tar.gz,yaml}" &&
  tar zxvf krew.tar.gz &&
  KREW=./krew-"$(uname | tr '[:upper:]' '[:lower:]')_amd64" &&
  "$KREW" install --manifest=krew.yaml --archive=krew.tar.gz &&
  "$KREW" update
)
# Krew 실행파일의 위치를 PATH에 등록해줍니다.
$ export PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH"
# 업데이트한 PATH를 Shell이 알 수 있도록 Shell을 재시작합니다.
$ source ~/.bashrc # zsh을 사용하는 경우, zshrc를 입력
# 정상적으로 설치되었는지 확인하고 업데이트도 할 겸 아래 명령어를 수행합니다.
$ kubectl krew update

Usage

Krew는 일반적인 패키지 관리자가 수행하는 역할을 대부분 수행할 수 있습니다.

Krew로 설치할 수 있는 플러그인 리스트 검색하기(CLI)

# 전체 리스트 보기
$ kubectl krew search

# 특정 플러그인 검색하기
$ kubectl krew search example-plugin

Krew로 플러그인 설치하기

$ kubectl krew install example-plugin

Krew로 설치한 플러그인 확인하기

$ kubectl krew list

Krew로 설치한 플러그인 업데이트하기

$ kubectl krew upgrade

Krew로 설치한 플러그인 삭제하기

$ kubectl krew uninstall example-plugin

Krew 플러그인 파일로 백업 및 복원하기

# 백업하기
$ kubectl krew list | tee backup.txt

# 복원하기
$ kubectl krew install < backup.txt

Example Plugin

Krew를 이용해 설치할 수 있는 플러그인은 다음의 링크에서 찾아 볼 수 있습니다.

추후 유용한 플러그인을 소개하는 포스트로 찾아뵙겠습니다 :)

주석

반응형