Kubernetes(K8s)는 클라우드 환경에서 애플리케이션을 배포하고 관리하는 강력한 도구입니다. 하지만 클라우드 인프라를 사용하기 전에 로컬 환경에서 Kubernetes를 테스트하고 싶을 때가 있습니다. 로컬에서 테스트하면 비용 절감과 빠른 개발을 할 수 있는 장점이 있습니다. 오늘은 Minikube와 Kind를 이용하여 로컬 환경에서 Kubernetes 클러스터를 구성하고 테스트하는 방법을 단계별로 알아보겠습니다.
1. Minikube를 사용한 로컬 Kubernetes 클러스터 설정
Minikube는 Kubernetes 클러스터를 로컬 환경에서 간편하게 실행할 수 있게 해주는 도구입니다. Minikube는 개발과 테스트 목적으로 적합하며, Docker나 VirtualBox와 같은 가상 머신 내에서 클러스터를 생성합니다.
1.1 Minikube 설치
먼저 Minikube와 kubectl을 설치해야 합니다. 여기서는 Ubuntu를 기준으로 설명하겠습니다.
- kubectl 설치:
- sudo apt-get update sudo apt-get install -y apt-transport-https ca-certificates curl sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list sudo apt-get update sudo apt-get install -y kubectl
- Minikube 설치:
- curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 sudo install minikube-linux-amd64 /usr/local/bin/minikube
1.2 Minikube 클러스터 실행
Minikube 설치 후, 다음 명령어로 로컬 Kubernetes 클러스터를 실행할 수 있습니다.
minikube start
1.3 kubectl 설정 및 클러스터 확인
Minikube가 정상적으로 실행되면 kubectl 명령어를 사용하여 클러스터 상태를 확인할 수 있습니다.
kubectl get nodes
이 명령어를 실행하면 현재 실행 중인 Kubernetes 노드 정보를 확인할 수 있습니다.
2. Kind를 사용한 로컬 Kubernetes 클러스터 설정
Kind는 Kubernetes in Docker의 약자로, Docker 컨테이너 내에서 Kubernetes 클러스터를 실행하는 도구입니다. CI/CD 파이프라인 테스트나 가벼운 개발 환경에서 Kubernetes 클러스터를 설정할 때 유용합니다.
2.1 Kind 설치
Docker가 설치된 환경에서 Kind를 설치하려면 아래 명령어를 실행합니다.
curl -Lo ./kind https://kind.sigs.k8s.io/dl/latest/kind-linux-amd64
chmod +x ./kind
sudo mv ./kind /usr/local/bin/kind
2.2 Kind 클러스터 생성
Kind를 설치한 후, 다음 명령어로 간단하게 Kubernetes 클러스터를 실행할 수 있습니다.
kind create cluster
2.3 클러스터 확인
Kind 클러스터가 정상적으로 실행되었는지 확인하려면 kubectl 명령어로 클러스터 상태를 확인합니다.
kubectl get nodes
3. 로컬 Kubernetes 클러스터에서 애플리케이션 배포
이제 로컬 Kubernetes 클러스터를 성공적으로 구성했으니, 간단한 애플리케이션을 배포해보겠습니다.
3.1 Nginx 배포
Nginx 웹 서버를 배포하는 YAML 파일을 작성한 후, 이를 Kubernetes에 배포합니다.
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
이 파일을 저장한 후, 다음 명령어로 배포합니다.
kubectl apply -f nginx-deployment.yaml
3.2 배포 상태 확인
배포된 애플리케이션의 상태를 확인하려면 다음 명령어를 실행합니다.
kubectl get pods
배포된 Nginx 웹 서버가 정상적으로 실행되는지 확인할 수 있습니다.
4. 로컬 환경에서 Kubernetes를 사용하는 이유
(1) 비용 절감
로컬 환경에서 Kubernetes를 테스트하면 클라우드 서비스 비용을 절약할 수 있습니다. 로컬에서 개발, 테스트한 후 실제 클라우드에 배포하는 방식으로 운영하면 효율적입니다.
(2) 빠른 개발 사이클
로컬 Kubernetes는 클러스터 시작과 애플리케이션 배포 속도가 빠르기 때문에 개발 및 디버깅이 쉽고, 빠른 피드백을 받을 수 있습니다.
(3) 테스트 자동화
로컬 환경에서 CI/CD 파이프라인을 테스트하거나, Kubernetes 리소스 정의 및 동작을 실험해볼 수 있어 효율적인 개발 프로세스를 구축할 수 있습니다.
결론: 로컬 환경에서 Kubernetes 테스트는 필수적이다
로컬 환경에서 Minikube나 Kind를 사용하면 간편하게 Kubernetes를 설정하고 테스트할 수 있습니다. 이러한 로컬 환경은 Kubernetes 클러스터의 기본적인 동작을 학습하고 애플리케이션을 손쉽게 테스트하는 데 유용하며, 이후 실제 클라우드 인프라에 배포하기 전의 필수 단계로 고려됩니다.
로컬 Kubernetes 테스트를 통해 애플리케이션 배포, 확장, 복구와 같은 중요한 기능을 실습해 보세요. 클라우드 환경으로 전환하기 전, 로컬에서 다양한 시나리오를 테스트하는 것이 효율적인 Kubernetes 운영의 첫걸음입니다!