Skip to content

fast-cloud/fast-cloud-k8s

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 

Repository files navigation

Fast Cloud K8s

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/ 폴더의 파일에 실제 자격증명을 입력해야 합니다.

🚀 사용 방법

1. 민감 정보 설정

public/ 폴더의 파일들을 복사하여 실제 환경에 맞게 수정하세요:

  • YOUR_USERNAME: MySQL 사용자명으로 변경
  • YOUR_PASSWORD: MySQL 비밀번호로 변경
  • YOUR_ROOT_PASSWORD: MySQL root 비밀번호로 변경

2. 데이터베이스 배포

kubectl apply -f databases.yaml

이 명령어로 다음 리소스들이 생성됩니다:

  • server 네임스페이스
  • MySQL IAAS 데이터베이스 (StatefulSet, Service, ConfigMap)
  • MySQL CAAS 데이터베이스 (StatefulSet, Service, ConfigMap)

3. 애플리케이션 배포

# CaaS 배포
kubectl apply -f k8s/caas.yaml

# IaaS 배포
kubectl apply -f k8s/iaas.yaml

# API Gateway Ingress 배포
kubectl apply -f k8s/server-ingress.yaml

📋 주요 구성 요소

데이터베이스 (databases.yaml)

  • MySQL IAAS: IaaS 서비스를 위한 데이터베이스

    • 포트: 30006 (NodePort)
    • 데이터베이스명: iaas
  • MySQL CAAS: CaaS 서비스를 위한 데이터베이스

    • 포트: 30007 (NodePort)
    • 데이터베이스명: caas

CaaS (caas.yaml)

  • 서비스: Container as a Service 관리 서버
  • 이미지: mr8356/fast-cloud-caas:1.5
  • 포트: 8080
  • 도메인: caas.fast-cloud.kro.kr
  • RBAC: Kubernetes 리소스 관리 권한 포함

IaaS (iaas.yaml)

  • 서비스: Infrastructure as a Service 관리 서버
  • 이미지: mr8356/iaas-control-server:1.6
  • 포트: 8080
  • 도메인: iaas.fast-cloud.kro.kr

API Gateway (server-ingress.yaml)

  • 경로:
    • /caas/* → CaaS 서비스로 라우팅
    • /iaas/* → IaaS 서비스로 라우팅
  • CORS: 모든 origin 허용 설정 포함

🔧 환경 변수

데이터베이스 연결

각 애플리케이션은 다음 환경 변수를 통해 데이터베이스에 연결합니다:

  • SPRING_DATASOURCE_URL: JDBC 연결 URL
  • SPRING_DATASOURCE_USERNAME: 데이터베이스 사용자명
  • SPRING_DATASOURCE_PASSWORD: 데이터베이스 비밀번호

Kubernetes 설정

  • 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>

📄 라이선스

이 프로젝트는 개인/교육 목적으로 사용됩니다.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published