Kubernetes를 사용한 Fast Cloud 인프라 배포 설정 파일 모음입니다.
fast-cloud-k8s/
├── public/ # GitHub에 공개 가능한 템플릿 파일들
│ ├── databases.yaml # MySQL 데이터베이스 설정 (IAAS, CAAS)
│ └── k8s/ # Kubernetes 배포 설정
│ ├── caas.yaml # CaaS (Container as a Service) 배포 설정
│ ├── iaas.yaml # IaaS (Infrastructure as a Service) 배포 설정
│ └── server-ingress.yaml # API Gateway Ingress 설정
└── private/ # 실제 민감 정보가 포함된 파일들 (Git 제외)
├── databases.yaml
└── k8s/
├── caas.yaml
├── iaas.yaml
└── server-ingress.yaml
private/폴더는.gitignore에 의해 Git에서 제외됩니다.public/폴더의 파일들은 민감 정보가 제거된 템플릿 버전입니다.- 실제 배포 시에는
private/폴더의 파일을 사용하거나,public/폴더의 파일에 실제 자격증명을 입력해야 합니다.
public/ 폴더의 파일들을 복사하여 실제 환경에 맞게 수정하세요:
YOUR_USERNAME: MySQL 사용자명으로 변경YOUR_PASSWORD: MySQL 비밀번호로 변경YOUR_ROOT_PASSWORD: MySQL root 비밀번호로 변경
kubectl apply -f databases.yaml이 명령어로 다음 리소스들이 생성됩니다:
server네임스페이스- MySQL IAAS 데이터베이스 (StatefulSet, Service, ConfigMap)
- MySQL CAAS 데이터베이스 (StatefulSet, Service, ConfigMap)
# CaaS 배포
kubectl apply -f k8s/caas.yaml
# IaaS 배포
kubectl apply -f k8s/iaas.yaml
# API Gateway Ingress 배포
kubectl apply -f k8s/server-ingress.yaml-
MySQL IAAS: IaaS 서비스를 위한 데이터베이스
- 포트: 30006 (NodePort)
- 데이터베이스명:
iaas
-
MySQL CAAS: CaaS 서비스를 위한 데이터베이스
- 포트: 30007 (NodePort)
- 데이터베이스명:
caas
- 서비스: Container as a Service 관리 서버
- 이미지:
mr8356/fast-cloud-caas:1.5 - 포트: 8080
- 도메인:
caas.fast-cloud.kro.kr - RBAC: Kubernetes 리소스 관리 권한 포함
- 서비스: Infrastructure as a Service 관리 서버
- 이미지:
mr8356/iaas-control-server:1.6 - 포트: 8080
- 도메인:
iaas.fast-cloud.kro.kr
- 경로:
/caas/*→ CaaS 서비스로 라우팅/iaas/*→ IaaS 서비스로 라우팅
- CORS: 모든 origin 허용 설정 포함
각 애플리케이션은 다음 환경 변수를 통해 데이터베이스에 연결합니다:
SPRING_DATASOURCE_URL: JDBC 연결 URLSPRING_DATASOURCE_USERNAME: 데이터베이스 사용자명SPRING_DATASOURCE_PASSWORD: 데이터베이스 비밀번호
KUBERNETES_INGRESS_BASE_DOMAIN: Ingress 기본 도메인 (fast-cloud.kro.kr)SPRING_PROFILES_ACTIVE: Spring 프로파일 (prod)
- 모든 서비스는
server네임스페이스에 배포됩니다. - Nginx Ingress Controller가 설치되어 있어야 합니다.
- MySQL 데이터는 PersistentVolume을 통해 영구 저장됩니다.
- Health check는 Spring Actuator를 통해 수행됩니다.
# 네임스페이스 확인
kubectl get namespaces
# Pod 상태 확인
kubectl get pods -n server
# 서비스 확인
kubectl get svc -n server
# Ingress 확인
kubectl get ingress -n server
# 로그 확인
kubectl logs -n server <pod-name>이 프로젝트는 개인/교육 목적으로 사용됩니다.