Files
site11/docker-compose.kubernetes.yml
jungwoo choi 0da9922bc6 feat: Use external MongoDB and Redis for KIND cluster
KIND 클러스터 내부의 MongoDB/Redis를 제거하고 외부(docker-compose) MongoDB/Redis를 사용하도록 변경했습니다.

Changes:
- docker-compose.kubernetes.yml: MongoDB/Redis 정의 제거
  - 기존 docker-compose.yml의 MongoDB/Redis 재사용
  - Kind 네트워크를 통해 직접 연결

- k8s/kind/console-backend.yaml: 데이터베이스 연결 설정 변경
  - MONGODB_URL: mongodb://site11-mongodb:27017
  - REDIS_URL: redis://site11-redis:6379
  - Kind 네트워크 내에서 컨테이너 이름으로 직접 접근

- Deleted from cluster:
  - mongodb deployment and service
  - redis deployment and service

Benefits:
- 데이터 영속성: 클러스터 재생성 시에도 데이터 유지
- 중앙 관리: docker-compose.yml에서 통합 관리
- 리소스 절약: 중복 데이터베이스 인스턴스 제거
- 네트워크 공유: Kind 네트워크를 통한 효율적 통신

Architecture:
- MongoDB: site11-mongodb (port 27017)
- Redis: site11-redis (port 6379)
- Network: kind (shared network)
- Console Backend → site11-mongodb/redis via container names

Verified:
- All 2 pods running (console-backend, console-frontend)
- Frontend accessible at http://localhost:3000
- MongoDB/Redis connection working properly

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-28 18:48:13 +09:00

141 lines
5.9 KiB
YAML

version: '3.8'
# Site11 KIND Kubernetes 개발 환경
#
# 빠른 시작:
# docker-compose -f docker-compose.kubernetes.yml up -d
#
# 관리 명령어:
# docker-compose -f docker-compose.kubernetes.yml exec kind-cli /scripts/kind-setup.sh setup
# docker-compose -f docker-compose.kubernetes.yml exec kind-cli /scripts/kind-setup.sh status
# docker-compose -f docker-compose.kubernetes.yml logs -f monitor
services:
# KIND CLI 관리 서비스 (kind, kubectl, docker 모두 포함)
# Note: MongoDB와 Redis는 기존 docker-compose.yml에서 관리됩니다
kind-cli:
image: alpine:latest
container_name: site11-kind-cli
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ~/.kube:/root/.kube
- ./k8s:/k8s
- ./scripts:/scripts
networks:
- kind
working_dir: /scripts
entrypoint: /bin/sh
command: |
-c "
# Install required tools
apk add --no-cache docker-cli curl bash
# Install kubectl
curl -LO https://dl.k8s.io/release/$$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl
chmod +x kubectl && mv kubectl /usr/local/bin/
# Install kind
curl -Lo ./kind https://kind.sigs.k8s.io/dl/latest/kind-linux-amd64
chmod +x kind && mv kind /usr/local/bin/
echo '';
echo '╔═══════════════════════════════════════╗';
echo '║ Site11 KIND Cluster Manager ║';
echo '╚═══════════════════════════════════════╝';
echo '';
echo '사용 가능한 명령어:';
echo '';
echo ' 전체 설정 (클러스터 생성 + 배포):';
echo ' docker-compose -f docker-compose.kubernetes.yml exec kind-cli /scripts/kind-setup.sh setup';
echo '';
echo ' 개별 명령어:';
echo ' docker-compose -f docker-compose.kubernetes.yml exec kind-cli /scripts/kind-setup.sh create';
echo ' docker-compose -f docker-compose.kubernetes.yml exec kind-cli /scripts/kind-setup.sh status';
echo ' docker-compose -f docker-compose.kubernetes.yml exec kind-cli /scripts/kind-setup.sh delete';
echo '';
echo ' kubectl 직접 사용:';
echo ' docker-compose -f docker-compose.kubernetes.yml exec kind-cli kubectl get pods -A';
echo '';
echo ' Shell 접속:';
echo ' docker-compose -f docker-compose.kubernetes.yml exec kind-cli bash';
echo '';
echo 'KIND CLI 준비 완료!';
tail -f /dev/null
"
restart: unless-stopped
# 클러스터 실시간 모니터링
monitor:
image: bitnami/kubectl:latest
container_name: site11-kind-monitor
volumes:
- ~/.kube:/root/.kube:ro
networks:
- kind
entrypoint: /bin/bash
command: |
-c "
while true; do
clear;
echo '╔═══════════════════════════════════════════════════╗';
echo '║ Site11 KIND Cluster Monitor ║';
echo '║ Updated: $$(date +"%Y-%m-%d %H:%M:%S") ║';
echo '╚═══════════════════════════════════════════════════╝';
echo '';
if kubectl cluster-info --context kind-site11-dev &>/dev/null; then
echo '✅ Cluster Status: Running';
echo '━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━';
echo '';
echo '📦 Nodes:';
kubectl get nodes --context kind-site11-dev 2>/dev/null | sed '1s/.*/ &/' | sed '1!s/.*/ &/' || echo ' No nodes';
echo '';
echo '🔧 Console Namespace (site11-console):';
kubectl get pods -n site11-console --context kind-site11-dev 2>/dev/null | sed '1s/.*/ &/' | sed '1!s/.*/ &/' || echo ' No pods';
echo '';
echo '📊 Services:';
kubectl get svc -n site11-console --context kind-site11-dev 2>/dev/null | sed '1s/.*/ &/' | sed '1!s/.*/ &/' || echo ' No services';
echo '';
echo '━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━';
echo '🌐 Access URLs:';
echo ' Frontend: http://localhost:3000';
echo ' Backend: http://localhost:8000';
else
echo '❌ Cluster Status: Not Running';
echo '━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━';
echo '';
echo '시작 방법:';
echo ' docker-compose -f docker-compose.kubernetes.yml exec kind-cli /scripts/kind-setup.sh setup';
fi;
echo '';
echo 'Next update in 30 seconds... (Press Ctrl+C to stop)';
sleep 30;
done
"
restart: unless-stopped
networks:
kind:
name: kind
external: true
# 참고:
# 1. KIND 클러스터 자체는 docker-compose로 직접 제어되지 않습니다
# 2. 이 파일은 KIND 클러스터 관리를 위한 헬퍼 컨테이너들을 제공합니다
# 3. 실제 클러스터 생성/삭제는 kind CLI를 사용해야 합니다
#
# KIND 클러스터 라이프사이클:
# 생성: kind create cluster --config k8s/kind-dev-cluster.yaml
# 삭제: kind delete cluster --name site11-dev
# 목록: kind get clusters
#
# docker-compose 명령어:
# 헬퍼 시작: docker-compose -f docker-compose.kubernetes.yml up -d
# 헬퍼 중지: docker-compose -f docker-compose.kubernetes.yml down
# 로그 확인: docker-compose -f docker-compose.kubernetes.yml logs -f kind-monitor