본문 바로가기
Kubernetes

asdf (switch kubectl version)

by SecuOf 2022. 6. 9.

kubectl Command를 사용하는 경우 k8s의 버전에 따라서 kubectl version 도 변경해 줘야 하는 경우가 발생한다. 이때 유용하게 사용할수 있는 tool를 소개 하고자 한다.

 

asdf command 이며, 이 command는 kubectl 뿐만 아니라 node, java, python 등의 다른 command 또는 language 버전 변경이 가능한다. 여기서는 kubectl 버전 변경 및 간단한 설치 방식에 대해서만 기술 한다.

공식 홈페이지

https://asdf-vm.com/

Github Repository

 

MacOS에서 asdf 설치

# Brew를 이용한 asdf 설치
brew install asdf

# asdf를 사용한 kubectl Command 설치
asdf install kubectl <version>

asdf 자동 완성

brew를 이용해서 asdf를 설치 하게 되면 auto completions가 정상적으로 동작 하지 않는다. 공식 문서에서 아래와 같은 구문을 ~/.zshrc 에 입력 하라고 나온다.

echo -e "\n. $(brew --prefix asdf)/libexec/asdf.sh" >> ${ZDOTDIR:-~}/.zshrc

위의 구문을 shell에서 실행하여 ~/.zshrc 파일에 입력 하여도 asdf 명령어는 자동완성 기능이 동작 하지 않는다. 그래서 좀더 확인해 보니 아래와 같은 구문이 적혀 있다.

OR use a ZSH Framework plugin like asdf for oh-my-zsh which will source this script and setup completions.

Completions are configured by either a ZSH Framework asdf or will need to be configured as per Homebrew's instructions. If you are using a ZSH Framework the associated plugin for asdf may need to be updated to use the new ZSH completions properly via fpath. The Oh-My-ZSH asdf plugin is yet to be updated, see ohmyzsh/ohmyzsh#8837.

간단히 이야기 하면, 위의 구문을 실행 하거나 zsh framework pulugin을 사용해서 zsh shell에 source script를 설정 하라는 이야기 이다. 그래서 관련한 plugin git에 가서 확인해 보니 source를 추가로 받은 후 ~/.zshrc에 추가로 설정해 줘야 하는 내용이 포함 되어 있다. (이럴거면 소스를 다운로드 받아서 하는게 좋을지도…. 왜 brew install 시 auto completions를 포함 안해놨는지 모르겠다…)

자세한 내용은 oh-my-zsh의 asdf plugin 페이지에서 확인 할수 있다.

 

간단히 기술하면, ~/.zshrc에 아래의 내용을 추가 한 다음, asdf-vm source를 clone 한후 shell을 다시 실행 하면 된다.

plugins=(asdf)
git clone https://github.com/asdf-vm/asdf.git ~/.asdf

위와 같이 하면 될줄 알았다…. 하지만… 여전히 auto completions가 동작하지 않았다. 그래서 직접 아래와 같이 source 명령어를 통해서 직접 추가 해주니 동작 하였다.

# in ~/.zshrc
source $HOME/.asdf/asdf.sh
source $HOME/.asdf/completions/asdf.bash

 

간단한 사용 방법

우리는 kubectl을 사용할거기 때문에 asdf 에 plugin을 추가 해준 후 kubectl 명령어를 asdf 명령어 통해서 설치해 주면 된다.

# asdf 명령어에 kubectl plugin 추가
asdf plugin-add kubectl
# asdf 명령어에 kubectl version 추가
asdf plugin-add kubectl <version>
# asdf를 통해 kubectl command 실행
asdf local kubectl get pods
# asdf를 통해 kubectl 명령어 global 설정 적용
asdf global kubectl <version>

 

 

정리

brew & zsh사용자의 경우 아래와 같이 설치 및 auto completions를 적용 하면 된다.

brew install asdf
git clone https://github.com/asdf-vm/asdf.git ~/.asdf
echo "source $HOME/.asdf/asdf.sh" >> ~/.zshrc
echo "source $HOME/.asdf/completions/asdf.bash" >> ~/.zshrc

'Kubernetes' 카테고리의 다른 글

kubectx, kubens (k8s 유용한 툴)  (0) 2022.06.02
Kubernetes Basic (MSA에서 Kubernetes)  (0) 2020.08.06
쿠버네티스 기본 용어(Terms)  (0) 2020.06.25