쿠버네티스

macOS (apple silicon) 에 kubectl 설치하기

알쓸개잡 2023. 8. 24.

kubectl 은 kubernetes API 를 사용하여 kubernetes 클러스터의 control plane 과 통신을 지원하기 위한 CLI (명령줄도구) 입니다. kubernetes 를 사용하기 위해서는 kubectl 명령어 사용법을 익히는 것도 중요한 부분입니다. 이번 포스팅에서는 macOS 에 kubectl 을 설치하는 방법에 대해서 기술합니다.

참고로 포스팅을 작성하는 시점 kubernetes 최신 버전은 1.28.0 입니다.

 

kubectl 버전

kubectl 은 kubernetes API 를 통해서 상호 작용하기 때문에 kubernetes 의 버전과 연관이 있습니다. 기본적으로 kubernetes cluster 의 마이너 버전 차이가 1 이내에 kubectl 버전을 사용해야 합니다. 예를 들어 v1.28 을 사용하는 kubectl 은 v1.27, v1.28, v1.29 버전을 사용하는 kubernetes cluster 와 상호작용 할 수 있습니다.

 

kubectl binary 설치

kubectl 바이너리를 직접 다운로드 하여 설치하는 방법입니다.

 

kubectl 다운로드

$>curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/arm64/kubectl"

$(curl -L -s https://dl.k8s.io/release/stable.txt) 부분은 현재 kubernetes 의 stable 버전 정보를 출력합니다.

설치하고자 하는 kubectl 버전이 있다면 설치하고자 하는 버전을 직접 명시합니다.

$>curl -LO "https://dl.k8s.io/release/v1.28.0/bin/darwin/arm64/kubectl"

 

kubectl 검증

kubectl.sha256 파일을 다운로드 받은 후 kubectl.sha256 파일 내에 있는 해시 정보와 다운로드 받은 kubectl 파일의 해시 정보를 비교하여 검증합니다.

$>curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/arm64/kubectl.sha256"
혹은
$>curl -LO "https://dl.k8s.io/release/<설치하고자 하는 kubectl 버전>/bin/darwin/arm64/kubectl.sha256"

===================================================================================

검증1
$>shasum -a 256 kubectl
<sha256 hash>

$>cat kubectl.sha256
<sha256 hash>
위 두개의 출력값이 맞는지 비교

검증2
$>echo "$(cat kubectl.sha256) kubectl" | shasum -a 256 --check
kubectl: OK
$>shasum -a 256 kubectl
5d74042f5972b342a02636cf5969d4d73234f2d3afe84fe5ddaaa4baff79cdd8  kubectl
$>cat kubectl.sha256
5d74042f5972b342a02636cf5969d4d73234f2d3afe84fe5ddaaa4baff79cdd8

 

kubectl 권한 변경 및 PATH 등록

$>chmod 755 ./kubectl
$>sudo mv ./kubectl /usr/local/bin/kubectl
$>kubectl version --client
Client Version: v1.28.0
Kustomize Version: v5.0.4-0.20230601165947-6ce0bf390ce3

다운로드 받은 kubectl 파일에 실행권한을 추가 후에 /usr/local/bin 으로 이동합니다. /usr/local/bin 은 환경변수 PATH에 등록된 경로입니다. /usr/local/bin 이 아닌 환경변수 PATH 에 등록된 다른 경로로 이동시켜도 되지만 보통은 /usr/local/bin 에 위치합니다.

 

kubectl brew 설치

$>brew search kubernetes-cli
==> Formulae
kubernetes-cli ✔   kubernetes-cli@1.22

==> Casks
kubernetic

brew search 로 kubernetes-cli, kubernetes-cli@1.22 버전을 찾을 수 있습니다. 현 시점에 아래 링크의

https://github.com/Homebrew/homebrew-core/blob/master/Formula/k/kubernetes-cli.rb 파일을 보면 아래와 같이 기본 kubernetes-cli 는 v1.28.0 버전을 설치함을 알 수 있습니다.

 

아래 명령으로 kubectl 을 설치합니다.

$>brew install kubernetes-cli
$>where kubectl
/opt/homebrew/bin/kubectl
/usr/local/bin/kubectl
$>kubectl version --client
Client Version: v1.28.0
Kustomize Version: v5.0.4-0.20230601165947-6ce0bf390ce3

docker desktop 이 설치된 상태라면 [which kubectl] 명령으로 kubectl 파일 경로 확인시

lrwxr-xr-x  1 root  wheel  55  3 31 11:48 /usr/local/bin/kubectl -> /Applications/Docker.app/Contents/Resources/bin/kubectl

위와 같이 docker desktop 에 내장된 kubectl 을 참조하고 있을 수 있습니다. 이 경우에는 PATH 환경 변수에서 /usr/local/bin 경로 보다 /opt/homebrew/bin 경로를 앞으로 배치 하거나 /usr/local/bin/kubectl 의 심볼릭링크를 제거하는 것도 방법일 수 있을 것 같습니다.

 

 

kubectl auto completion (zsh)

zsh 환경에서 kubectl completion zsh 명령으로 kubectl 자동 완성 스크립트를 사용할 수 있습니다.

$>echo "source <(kubectl completion zsh)" >> ~/.zshrc
$>source ~/.zshrc

자동 완성 스크립트 이후 kubectl 옵션 <tab키> 입력시 사용가능한 옵션들이 자동으로 출력되어 선택할 수 있습니다.

bash 쉘에서 kubectl 자동완성 스크립트 사용하는 방법은 아래 링크를 참고하시기 바랍니다.

https://kubernetes.io/docs/tasks/tools/install-kubectl-macos/#enable-shell-autocompletion

 

이 글을 읽으신 분께 도움이 되었기를 바랍니다.

댓글

💲 추천 글