쿠버네티스 클러스터를 통해 다양한 시도를 하기 전 직접 로컬에서 테스트해 볼 수 있는 환경이 있어야 한다. 그 과정에서 사람들이 가장 많이 찾는 툴은 minikube라고 하는 툴이다. minikube는 로컬 쿠버네티스 클러스터를 생성하고 관리하기 위한 경량화된 도구로, 로컬에서 쿠버네티스 애플리케이션을 개발, 테스트 학습할 수 있도록 설계되어 있다.
이번 포스팅에서는 미니쿠베의 세팅 방법과 함께, 꿀같은 터미널 세팅에 대해서 다뤄보려고 한다. 이 외에도 vscode 세팅이나 lens 등 로컬에서 직접 쿠버네티스를 테스트하기 좋은 환경을 구축하기 위한 내용들을 포스팅한다.
먼저, 준비물들이 꽤나 있는데 다음과 같다. 이 포스팅의 내용은 macOS에 특화되어 있다.
- homebrew
- docker
- oh-my-zsh
- iterm2
oh-my-zsh나 iterm2에 관한 포스팅을 하게 된다면 여기에 레퍼런스를 달아두도록 하겠다. 설정이 되어있지 않다면, 관련한 설정 레퍼런스가 많으니 뭐든지 참고하여 준비를 하는 것이 좋을 것이다.
참고로 iterm2와 oh-my-zsh는 터미널을 커스터마이징하기 쉽게 만들어주는 툴이다.
homebrew는 macOS의 패키지 매니저로, 다양한 패키지들을 손쉽게 깔 수 있게 도와준다. 이번 포스팅에서 꼭 있어야 하는 툴로써 없다면 반드시 깔고 오자. 한 두 개 정도는 brew 없이 직접 바이너리로 다운로드할 수 있지만, 이번 포스팅에서는 거의 대부분을 brew로 설치하기 때문에 반드시 설치하자. 또한 docker는 미니쿠베를 실행시키기 위해 필요하다. 미니쿠베를 실행시키면 docker의 container로 뜨기 때문에 반드시 있어야 하며 후술하겠지만 다양한 역할을 한다.
본론
minikube 설치
먼저 minikube(이하 미니쿠베)의 설치와 관련된 스크립트는 미니쿠베 공식 홈페이지에 자세히 나와있다. 먼저 미니쿠베를 사용하기 전에 선행되는 조건들이 꽤나 있는데, 아래와 같다.
- [minikube] minikube start : https://minikube.sigs.k8s.io/docs/start/?arch=%2Fmacos%2Farm64%2Fstable%2Fbinary+download
minikube start
minikube is local Kubernetes, focusing on making it easy to learn and develop for Kubernetes. All you need is Docker (or similarly compatible) container or a Virtual Machine environment, and Kubernetes is a single command away: minikube start What you’ll
minikube.sigs.k8s.io
- 2 CPUs or more
- 2GB of free memory
- 20GB of free disk space
- Internet connection
- Container or virtual machine manager
위와 같은 조건이 있으며, mac OS 기준으로는 램이 8기가가 아니라면 꽤나 괜찮게 돌아갈 것이다. 또한 마지막에 쓰여 있는 Container or virtual machine manager는 docker나 podman과 같은 컨테이너를 실행시킬 수 있는 것들을 말한다.
기본적으로는 미니쿠베에서는 docker를 사용하도록 되어있으며, 이러한 컨테이너를 실행시키는 런타임을 CRI(Container Runtime Interface)라고 한다 쿠버네티스에서는 containerd라는 CRI를 쓰지만, 미니쿠베에서는 docker를 사용한다.
해당 사이트에서 바이너리를 통해 설치하는 방법을 살펴볼 수 있다. 본 포스팅에서는 homebrew를 통해서 설치하는 방법에 대해서 간단하게 쓰였다. 아래의 명령어를 입력한다.
brew install minikube
그 후에 아래와 같은 명령어들을 사용할 수 있다.
minikube start
미니쿠베를 실행시킨다. 이때, docker daemon이 켜져있어야 한다. 안 그러면 docker를 실행시키라는 에러 메시지가 나온다.
minikube pause
쿠버네티스 클러스터에서 동작하는 애플리케이션에 충격이 없이 잠깐 중단시킨다.
minikube unpause
중단시킨 클러스터를 다시 작동시킨다
minikube stop
클러스터를 종료한다. 모든 애플리케이션이 종료되고 클러스터가 내려가는데, 이 때 디스크에 저장되어 있는 파일에 대해서는 그대로 남아있다. 따라서 클러스터를 아예 깨끗하게 종료하고 싶다면 아래의 명령어를 사용할 수 있다.
minikube delete --all
클러스터의 모든 것들을 싹 지운다.
나의 경우에는 기존에 미니쿠베를 최초 실행한 후에 다시 실행시키는 것이기 때문에 아래와 같이 뜬다. minikube start를 입력하면 아래와 같이 미니쿠베가 활성화된다.
minikube dashboard
또한 미니쿠베에서는 대시보드 기능을 제공하는데, 아래의 명령어를 입력하여 대시보드를 확인할 수 있다.
minikube dashboard
다음과 같은 대시보드 페이지를 확인할 수 있다.
또한 미니쿠베에서는 이러한 대시보드를 통해 클러스터를 확인할 때 보다 상세한 정보를 확인할 수 있도록 애드온을 제공하는데 다음과 같은 명령어를 통해서 확인할 수 있다.
minikube addons list
마음에 드는 애드온이 있다면 설치하여 해당 대시보드에서 확인할 수 있다. 이러한 대시보드 말고도 서드파티 대시보드가 있는데, 나는 Lens라고 하는 툴을 사용한다.
kubectl 설치
가장 중요한 것을 이제야 설명하는데, 쿠버네티스 클러스터를 다루기 위해서는 kubectl이 필요하다. 바이너리를 직접 설치하는 방법이 있지만 이번에도 homebrew를 사용한다면 손쉽게 설치할 수 있다. 관련하여 설치하는 방법에 대한 레퍼런스는 아래에 나와 있다.
- [kubernetes] install kubectl macos : https://kubernetes.io/docs/tasks/tools/install-kubectl-macos/
Install and Set Up kubectl on macOS
Before you begin You must use a kubectl version that is within one minor version difference of your cluster. For example, a v1.32 client can communicate with v1.31, v1.32, and v1.33 control planes. Using the latest compatible version of kubectl helps avoid
kubernetes.io
위 페이지에 따르면 간단하게 아래의 명령어 중 하나를 입력하여 kubectl을 설치할 수 있다.
brew install kubectl
brew install kubernetes-cli
설치가 끝났다면 보다 괜찮은 대시보드인 Lens에 대해서 살펴보자. 만약 관심이 없다면 다음 챕터는 패스해도 좋다.
lens 설치
Lens는 쿠버네티스 클러스터를 확인할 수 있게 도와주는 툴으로서 유료 플랜으로 다양한 기능을 제공하지만 무료 플랜으로 제한적이지만 사용할 수 있다. 간단하게 로컬 쿠버네티스 클러스터를 테스팅하는 용도라면 꽤나 괜찮기 때문에 Lens 대시보드를 추천한다.
설치는 다음의 공식 웹사이트 다운로드 페이지에서 진행할 수 있다.
- [Lens] download : https://k8slens.dev/download
Download | The Kubernetes IDE
Lens IDE for Kubernetes. The only system you’ll ever need to take control of your Kubernetes clusters. Download it today!
k8slens.dev
설치를 마치고 Lens를 실행시키면 아래와 같은 화면을 볼 수 있다.
그 후에 쿠버네티스 클러스터를 등록하여 대시보드로 확인할 수 있다. 쿠버네티스 클러스터에 대한 정보는 마스터 노드의 ~/.kube/config에서 확인할 수 있는데, 렌즈에서도 쿠버네티스 클러스터를 등록하기 위해서는 해당 설정을 입력해줘야 한다. 나의 경우는 렌즈를 실행하는 순간 알아서 로컬에 있는 미니쿠베 클러스터를 읽어 등록해 주었지만 그렇지 않다면 직접 쿠버네티스 클러스터를 추가해 주면 된다.
또한 외부에 있는 쿠버네티스 클러스터에 접근하려고 하는 순간에도 ~/.kube/config를 확인하는 것을 잊지 말자.
zshrc 세팅
다음으로는 zshrc를 세팅해 보자. 쿠버네티스 클러스터를 사용하게 된다면 터미널을 통해 다양한 작업을 하게 될 텐데, 이미 설정이 다 되어있는 사람이 있겠지만 필수에 가까운 팁이 있다.
그것은 바로 oh-my-zsh에 있는 다양한 플러그인들을 설치할 수 있다는 점인데, 그중에서 유명한 것은 단연 authsuggestion, highlighting이다. 이러한 플러그인 또한 homebrew를 통해서 설치할 수 있다. 각각에 대해서 알아보자.
- [brew] zsh-autosuggestions : https://formulae.brew.sh/formula/zsh-autosuggestions
- [brew] zsh-syntax-highlighting : https://formulae.brew.sh/formula/zsh-syntax-highlighting
각각의 플러그인을 설치하는 명령어는 다음과 같다.
brew install zsh-autosuggestions
brew install zsh-syntax-highlighting
그 후 homebrew에 쓰인 각각의 플러그인에 대한 설정을 해야 하기 때문에 ~/.zshrc 파일을 편집하여 다음과 같이 추가하여 저장한다.
# ... 이상
# costomzie zsh with brew
source $HOMEBREW_PREFIX/share/zsh-autosuggestions/zsh-autosuggestions.zsh
source $HOMEBREW_PREFIX/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
# ... 이하
위와 같이 설정을 마치면 쉘에 입력했던 명령어의 히스토리를 확인할 수 있어 너무나 편리하다. 특히 쿠버네티스를 다루게 된다면 수많은 명령어를 다 직접 하나하나씩 치기 어렵고, 외우고 있기도 어려운데 다음의 명령어를 통해서 손쉽게 실행할 수 있다.
유효한 명령어의 경우 초록색으로 표시되며, 위와 같이 회색으로 이전에 쳤던 기록들이 표시된다, -> 방향키를 누르면 저 히스토리가 자동 완성된다. 복잡한 명령어를 작성하는 경우 실수할 수도 있고, 외우기도 복잡하지만 편리하게 작업할 수 있게 된다.
이렇게 zshrc에 대한 설정이 끝났다면 다음은 리눅스의 텍스트 에디터인 vim에 대한 설정을 진행해 보자. 여기서 vim이 아니라 nano를 쓴다거나 다른 에디터를 사용한다고 하면 다음 챕터 또한 넘어가도 되겠다.
.vimrc 설정
예전에 vim에 대한 이야기를 했었는데, 현대에는 vi과 vim이 통합되어 링크되어 있기 때문에 무엇을 쓰던 vim이 실행된다. 이러한 vim을 설정함으로써 편리하게 쿠버네티스의 매니패스트를 작성할 수 있게 되는데, 다양한 설정이 있겠지만 내가 사용하는 설정을 가져왔다. 이 외에도 찾아보면 찾아볼수록 다양한 설정이 많기 때문에 다양한 것들을 찾아보길 바란다 ( 좋은 것을 발견하면 댓글 제보 부탁드립니다... )
먼저 vim에 대한 설정 파일은 ~/.vimrc에 있다. 이번에도 텍스트 에디터를 통하여 해당 파일을 설정한다.
" syntax highlighting
if has("syntax")
syntax on
endif
" editor setting
set autoindent
set nu
set ruler
" setting for K8s and docker
set expandtab
set tabstop=2
set shiftwidth=2
set softtabstop=2
내 설정은 위와 같다. 쿠버네티스를 사용하는 경우 yaml 매니패스트를 작성하는 도중에 에러가 난다면 몇 번째 줄에서 에러가 났는지 알려준다. 그러한 에러가 어디서 났는 지 손쉽게 확인할 수 있게 nu와 ruler를 통해 행과 열을 표시한다.
나머지는 autoindent(자동 들여 쓰기)와 쿠버네티스 매니패스트를 작성할 때 관습적으로 사용하는 2 space를 지키기 위해서 설정해 주는 것이다. 쿠버네티스 매니패스트에서는 tab을 사용하면 클러스터가 읽지 못하고 에러를 발생하는데, 그러한 부분을 막기 위해서 위와 같이 설정해 준다.
위 설정 말고도 찾아보면 자신에게 딱 맞는 좋은 설정들이 많으니 시간이 된다면 한 번 살펴보도록 하자.
vscode 설정
vscode에서 플러그인을 따로 설정하지 않는다면 yaml 파일을 잘 읽어 들이지 못하는데, 이에 관련한 설정이 있다. vscode의 extension에서 YAML을 다운로드하자.
위 플러그인을 설치했다면 설정을 통해서 yaml 파일에 대한 부가적인 설정을 해줄 수 있다.
위와 같이 톱니바퀴 아이콘을 눌러 설정에 들어간다.
그 후 세 번째 항목에서 setting.json에서 편집을 선택한다. 그 후 다음과 같이 JSON을 추가해 줄 수 있다.
"yaml.schemas": {
"kubernetes": "*.yaml"
},
위 config를 설정해 줌으로써 자동 완성이나 문법 및 형식 검증이 강화되어 보다 편리하게 쿠버네티스 매니패스트를 작성할 수 있게 된다.
마치며
이 외에도 더 다양한 설정들이 있다면 생각날 때마다 짬짬이 추가해두려고 한다. 일단은 생각나는 것들만...
참고
- [heyhyo] vim 설정하기 : https://hyoje420.tistory.com/51
- [마린독] vscode kubernetes YAML 확장 프로그램 설치 및 설정 : https://hgk5722.tistory.com/532
감사합니다.
'DevOps > kubernetes' 카테고리의 다른 글
ETCD Leader Election이란? (1) | 2024.12.18 |
---|---|
Kubernetes의 Ingress와 Service 차이점에 대한 고찰 (0) | 2024.12.17 |
[K8s homeserver 구축 - 3] github actions를 통한 CI (0) | 2023.11.10 |
[K8s homeserver 구축 - 2] 라즈베리파이 K3s 클러스터링 (0) | 2023.11.09 |
[K8s homeserver 구축 - 1] 라즈베리파이4 기본 설정 (1) | 2023.11.08 |