Data Engineering/s3 minio

📘 [MinIO & Cilium 기반 오브젝트 스토리지 연동 시리즈 #1] Docker Desktop Kubernetes에서 MinIO 설치 및 S3 버킷 구성하기

ygtoken 2025. 3. 26. 17:29
728x90

목표: 로컬 환경(Docker Desktop Kubernetes)에 MinIO를 Helm으로 설치하고, 기본 버킷을 생성하여
S3 호환 오브젝트 스토리지를 쿠버네티스에서 직접 운영할 수 있는 기반을 마련합니다.


🔎 이번 글에서 수행할 작업 요약

  1. Helm 저장소 추가 및 MinIO 설치
  2. PVC와 서비스 등 MinIO 리소스 확인
  3. 기본 버킷 생성 (mc CLI 사용)
  4. Helm uninstall 테스트로 상태 복원 확인

🧱 1단계: Helm 저장소 추가 및 MinIO 설치

이 단계의 목적: Helm 차트를 사용하여 MinIO를 빠르게 설치하고,
Kubernetes에서 사용하는 리소스(Pod, PVC, Service 등)가 자동으로 생성되는 구조를 이해합니다.

# Bitnami Helm 저장소 추가
helm repo add bitnami https://charts.bitnami.com/bitnami

# 저장소 업데이트
helm repo update

# MinIO 설치 (Namespace 포함)
helm install minio bitnami/minio \
  --namespace minio --create-namespace \
  --set auth.rootUser=minioadmin \                         # 🔐 기본 사용자 설정
  --set auth.rootPassword=minioadmin \                     # 🔐 기본 비밀번호 설정
  --set defaultBuckets=my-bucket1,my-bucket2 \             # 📦 기본 버킷 설정
  --set service.type=LoadBalancer                          # 🌐 외부 접근을 위한 LoadBalancer 서비스

✅ 설치 후 LoadBalancer 타입의 Service가 생성되어, 브라우저에서 UI 접근이 가능해집니다.


🔍 2단계: MinIO 설치 리소스 확인

이 단계의 목적: Helm 설치 이후 생성된 리소스(Pod, PVC, SVC 등)를 확인하여
어떤 구성 요소들이 자동으로 구성되는지를 파악합니다.

# Pod 상태 확인
kubectl get pod -n minio

# PVC 상태 확인
kubectl get pvc -n minio

# 서비스 확인
kubectl get svc -n minio

예시 출력:

NAME    TYPE           CLUSTER-IP     EXTERNAL-IP   PORT(S)          AGE
minio   LoadBalancer   10.96.x.x      127.0.0.1     9000:31234/TCP   1m

🔍 브라우저에서 http://<EXTERNAL-IP>:9000 으로 MinIO UI 접속 가능


📦 3단계: 기본 버킷 구성 확인 및 파일 업로드 테스트

이 단계의 목적: Helm Chart에서 지정한 defaultBuckets 값이 실제로 생성되었는지 확인하고,
S3 호환 CLI인 mc를 사용해 파일을 업로드해 봅니다.

# MinIO Client 설치 (macOS 기준)
brew install minio/stable/mc

# MinIO 서버 연결 설정
mc alias set local http://<EXTERNAL-IP>:9000 minioadmin minioadmin

# 버킷 목록 확인
mc ls local

# 로컬 파일 업로드
mc cp ~/Downloads/test.csv local/my-bucket1/test.csv

# 업로드 파일 확인
mc ls local/my-bucket1

✅ 위 명령으로 실제 S3처럼 객체 업로드 및 확인이 가능합니다.


♻️ 4단계: 설치 복원 테스트 (Uninstall)

이 단계의 목적: Helm으로 설치한 MinIO 리소스를 완전히 제거하고,
필요 시 다시 설치하거나 PVC만 유지할 수 있는지 실험합니다.

# MinIO 삭제
helm uninstall minio -n minio

# 네임스페이스 유지한 채 PVC 확인
kubectl get pvc -n minio

📌 기본적으로 Helm uninstall 시 PVC는 삭제되지 않으므로,
재설치 시 같은 데이터를 사용할 수 있습니다.

 

728x90