Navisafe/Infrastructure

Kubernetes 환경 구성 (1) - Windows에서 kind로 NaviSafe 클러스터 생성

jjaehyeok 2026. 4. 20. 13:31

1. 문제 배경

NaviSafe 프로젝트는 Docker 기반으로 각 서비스를 컨테이너 단위로 실행하고 있었다.
초기에는 단순한 구조였지만, Kafka, Redis, MySQL, Spark 등 구성 요소가 늘어나면서 다음과 같은 문제가 발생했다.

  • 서비스 간 실행 순서를 직접 맞춰야 함
  • 특정 컨테이너 장애 시 전체 흐름 파악이 어려움
  • 실행 환경이 로컬 상태에 영향을 받음

이 문제를 해결하기 위해 컨테이너를 개별적으로 실행하는 방식에서 벗어나, 서비스를 하나의 구조로 관리할 수 있는 Kubernetes 환경으로 전환을 진행했다.


2. 목표

  • 로컬에서도 클러스터 기반 실행 환경 구성
  • 서비스 실행 구조를 YAML 기준으로 관리
  • 동일한 환경을 반복적으로 재현 가능하도록 구성

3. 환경 구성

  • OS: Windows 11
  • Container Runtime: Docker Desktop
  • Kubernetes: kind
  • CLI: kubectl

Windows 환경에서 별도의 가상머신 없이 Kubernetes를 구성하기 위해
Docker Desktop 기반으로 kind를 사용했다.


4. 접근 기준

로컬 Kubernetes 환경을 구성할 때 다음 기준을 잡았다.

  • 클러스터 생성과 삭제가 빠를 것
  • Docker 환경과 자연스럽게 연동될 것
  • 복잡한 설정 없이 바로 사용할 수 있을 것

이 기준에 따라 minikube 대신 kind를 선택했다.


5. kind 선택 이유

kind는 Docker 컨테이너 기반으로 Kubernetes 클러스터를 구성한다.

  • Docker Desktop 위에서 바로 실행 가능
  • 별도의 VM 설정 불필요
  • 클러스터를 빠르게 생성/삭제 가능

로컬에서 반복적으로 환경을 초기화하며 테스트하기에 적합한 구조다.


6. 클러스터 생성

  • 클러스터 생성
kind create cluster --name navisafe
  • 현재 Kubernetes 컨텍스트 확인
kubectl config current-context
  • 노드 상태 확인
kubectl get nodes

정상적으로 생성된 경우 control-plane 노드가 Ready 상태로 표시된다.


7. Kubernetes 기본 구조 확인

클러스터 생성 이후 Kubernetes의 기본 구성 요소를 확인했다.

  • Control Plane: 클러스터 전체 상태 관리
  • Node: Pod가 실행되는 환경
  • Pod: 실제 애플리케이션 실행 단위

kind 환경에서는 단일 노드 구조로 control-plane이 함께 동작한다.


8. 운영 확인 방식

클러스터 상태는 기본적으로 kubectl 명령어를 통해 확인했지만, 리소스 상태를 한 번에 확인하기 위해 GUI 도구도 함께 사용했다.

  • kubectl: 리소스 조회 및 제어
  • Lens: Pod 상태, 로그, 이벤트를 시각적으로 확인

명령어 기반 확인은 필요한 정보를 단계적으로 조회해야 하는 경우가 많아, 리소스 상태를 빠르게 파악하는 용도로 Lens를 병행했다.

 

Lens

Power Tools for Kubernetes and LLM observability. With over 1 million users, Lens is the new standard for Kubernetes and LLM application developers.

lenshq.io


9. 이후 진행 방향

클러스터 생성 이후에는 단순히 컨테이너를 실행하는 것이 아니라, 서비스를 Kubernetes 리소스로 정의하는 과정이 필요하다.

다음 단계에서는

  • Docker 이미지 빌드 및 배포 방식 정리
  • Kubernetes 리소스 구조 설계 (Deployment, StatefulSet, Service)

를 기준으로 NaviSafe 서비스를 어떻게 나눌지 정리할 예정이다.


10. 정리

이번 단계에서는 서비스 배포가 아니라 Kubernetes 환경을 구성하기 위한 기반을 만드는 것에 집중했다.

  • Windows 환경에서 Docker Desktop 기반 Kubernetes 구성
  • kind를 활용한 클러스터 생성
  • kubectl을 통한 상태 확인

이후 단계에서는 이 환경 위에 실제 서비스들을 배포하는 작업을 진행한다.

 

Kubernetes 환경 구성 (2) - NaviSafe 배포를 위한 사전 준비 (이미지, Helm, 공통 리소스)

1. 문제 배경클러스터를 생성한 이후 바로 서비스를 배포하려 했지만, Kubernetes는 단순히 컨테이너를 실행하는 구조가 아니라 이미지, 설정, 권한, 저장소가 분리된 상태에서 동작한다.이 상태에

jjaehyeok.tistory.com