본문 바로가기
클라우드/쿠버네티스

kubectl의 든든한 조력자, Krew를 소개합니다! 🚀

by gasbugs 2025. 8. 30.

쿠버네티스를 다루는 분들이라면 kubectl 명령어를 하루에도 수십, 수백 번씩 입력하실 겁니다. kubectl은 쿠버네티스 클러스터를 관리하는 아주 강력한 도구지만, 때로는 반복적인 작업을 줄이거나 더 복잡한 정보를 한눈에 보고 싶다는 생각이 들 때가 있죠.

이럴 때 우리의 kubectl을 슈퍼히어로로 만들어 줄 수 있는 멋진 도구가 있습니다. 바로 Krew입니다! 🦸‍♂️

 

 

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

 


Krew가 뭔가요? 🤔

Krew는 한마디로 kubectl의 플러그인 매니저(Plugin Manager)입니다.

맥(macOS)에서 brew를 사용해 패키지를 설치하거나, 우분투(Ubuntu)에서 apt를, 파이썬(Python)에서 pip를 사용하는 것을 떠올리면 쉽습니다. Krew는 kubectl의 기능을 확장해 주는 다양한 플러그인들을 쉽게 검색하고, 설치하고, 관리할 수 있게 해주는 도구입니다.

kubectl의 기본 기능만으로는 부족했던 2%를 채워주는 수많은 유용한 플러그인들이 Krew의 생태계에 등록되어 있으며, 우리는 Krew를 통해 이 모든 것을 명령어 한 줄로 이용할 수 있게 됩니다.


왜 Krew를 사용해야 할까요? ✨

  1. 생산성 폭발 📈: 클러스터 컨텍스트(Context)나 네임스페이스(Namespace)를 빠르게 전환하고, 리소스 사용량을 시각적으로 확인하거나, YAML 파일에서 불필요한 메타데이터를 제거하는 등, kubectl만으로는 여러 단계를 거쳐야 했던 작업들을 플러그인으로 단숨에 처리할 수 있습니다.
  2. 쉬운 관리 🔧: Krew가 없다면, 유용한 플러그인을 찾았을 때 직접 소스 코드를 다운로드하고, 빌드해서, 내 컴퓨터의 PATH에 추가하는 번거로운 과정을 거쳐야 합니다. 하지만 Krew를 사용하면 kubectl krew install <플러그인_이름> 명령어 하나로 모든 것이 끝납니다. 업데이트나 삭제도 마찬가지로 간편하죠.
  3. 풍부한 생태계 🌍: Krew에는 전 세계 수많은 개발자가 만들어 공유하는 200개 이상의 플러그인이 있습니다. 내가 필요로 하는 기능은 이미 누군가가 만들어 공유했을 가능성이 높습니다. 새로운 플러그인을 발견하고 사용하는 재미도 쏠쏠합니다.
  4. 신뢰성과 일관성 ✅: 쿠버네티스 SIG(Special Interest Group) 중 하나인 SIG-CLI에서 공식적으로 관리하는 프로젝트이기 때문에 믿고 사용할 수 있습니다. 여러 운영체제(macOS, Linux, Windows)에서 동일한 방식으로 플러그인을 관리할 수 있다는 장점도 있습니다.

Krew 설치 및 사용법 🛠️

Krew를 사용하는 것은 매우 간단합니다. 먼저 Krew 자체를 설치하고, 그 다음부터는 kubectl krew 명령어를 통해 플러그인을 관리하면 됩니다.

1. Krew 설치하기

Krew는 git이 설치되어 있어야 합니다. 설치는 사용 중인 운영체제와 쉘 환경에 따라 조금씩 다르지만, 공식 문서에 나온 스크립트를 실행하는 것으로 간단하게 끝납니다.

 

macOS / Linux (bash/zsh)

(
  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
)

 

설치가 끝나면, ~/.krew/bin 디렉토리를 PATH경 변수에 추가해줘야 합니다. ~/.bashrc 또는 ~/.zshrc 파일에 아래 라인을 추가하고 터미널을 다시 시작해주세요.

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

2. Krew 기본 명령어

설치가 완료되었다면, 이제 kubectl krew 명령어를 사용할 수 있습니다.

  • 플러그인 목록 업데이트: 최신 플러그인 정보를 가져옵니다.
    kubectl krew update
    
  • 플러그인 검색: 원하는 플러그인이 있는지 찾아봅니다.예를 들어, view와 관련된 플러그인을 찾고 싶다면 kubectl krew search view를 실행하면 됩니다.
    kubectl krew search <검색어>
    
  • 플러그인 설치: 마음에 드는 플러그인을 설치합니다.
    kubectl krew install <플러그인_이름>
    
  • 설치된 플러그인 목록 확인: 내 컴퓨터에 설치된 플러그인들을 봅니다.
    kubectl krew list
    
  • 플러그인 업그레이드: 설치된 플러그인들을 최신 버전으로 업데이트합니다.
    kubectl krew upgrade
    
  • 플러그인 삭제: 더 이상 사용하지 않는 플러그인을 제거합니다.
    kubectl krew uninstall <플러그인_이름>
    

추천 플러그인 Best 5 ⭐

수많은 플러그인 중에서 어떤 것부터 써봐야 할지 막막한 분들을 위해, 생산성을 수직 상승시켜 줄 인기 플러그인 몇 가지를 추천합니다.

  1. ctx: kubectl config use-context 명령어를 짧고 직관적인 kubectl ctx로 만들어 줍니다. 여러 클러스터를 오가며 작업할 때 필수입니다.
  2. ns: kubectl config set-context --current --namespace 명령어를 kubectl ns로 줄여줍니다. 네임스페이스를 바꿀 때 정말 편리합니다.
  3. tree: 쿠버네티스 오브젝트들의 소유 관계를 나무 구조로 예쁘게 보여줍니다. 디플로이먼트가 어떤 서비스와 파드를 소유하고 있는지 한눈에 파악하기 좋습니다.
  4. neat: kubectl get <리소스> -o yaml 출력 결과에서 시스템이 자동으로 추가하는 불필요한 정보들(managedFields, uid 등)을 깔끔하게 제거해줍니다. YAML을 확인할 때 눈이 편안해집니다.
  5. view-allocations: 각 노드(Node)와 파드(Pod)의 리소스 요청(requests) 및 제한(limits) 현황을 시각적으로 보여줘 클러스터의 리소스 할당 상태를 쉽게 파악할 수 있게 돕습니다.

이 플러그인들을 kubectl krew install ctx ns tree neat view-allocations 명령어로 한 번에 설치하고 쿠버네티스 관리의 신세계를 경험해보세요!


마치며 🏁

Krew는 단순히 kubectl에 몇 가지 기능을 추가하는 것을 넘어, 쿠버네티스 관리 경험 전체를 한 단계 끌어올려 주는 강력한 도구입니다. 반복적인 작업을 자동화하고, 복잡한 정보를 쉽게 파악하게 도와주어 우리가 더 중요하고 창의적인 일에 집중할 수 있도록 해줍니다.

 

지금 바로 Krew를 설치하고, 여러분의 kubectl을 더욱 강력하게 만들어 보세요! 💪