클라우드 시스템 최종 프로젝트 CodeSphere 애플리케이션 아키텍처를 위한 쿠버네티스 yaml파일들과 Docker Compose 설정을 포함하고 있습니다.
├── ingress.yaml # Ingress 설정 ├── docker-compose.yaml ├── nginx.conf # Nginx 설정 파일 ├── frontend/ │ ├── fe-deploy.yaml # 프론트엔드 배포 설정 │ └── fe-service.yaml # 프론트엔드 서비스 설정 ├── backend/ │ ├── be-deploy.yaml # 백엔드 배포 설정 │ └── be-service.yaml # 백엔드 서비스 설정 ├── postgres/ │ ├── db-deploy.yaml # 데이터베이스 배포 설정 │ ├── db-service.yaml # 데이터베이스 서비스 설정 │ ├── db-pv.yaml # 영구 볼륨 설정 │ └── db-pvc.yaml # 영구 볼륨 클레임 설정 ├── sa.yaml # 서비스 계정 설정 ├── cluster_role.yaml # 클러스터 롤 설정 (네임스페이스/파드 관리 권한) └── cluster_rb.yaml # 클러스터 롤 바인딩 설정
ingress.yaml 파일은 외부 트래픽을 클러스터 내부 서비스로 라우팅하는 설정을 포함합니다:
/api 경로의 요청을 백엔드 서비스(포트 8000)로 전달 루트 경로(/)의 요청을 프론트엔드 서비스(포트 3000)로 전달 kubelabx 네임스페이스에서 동작
루트 디렉토리의 docker-compose.yaml 파일은 로컬에서 연결을 테스트하기 위해 사용한 파일입니다.
nginx.conf 파일은 Nginx 웹 서버의 설정을 포함하며, 프론트엔드와 백엔드 서비스로의 트래픽을 적절히 라우팅합니다.
프론트엔드 디렉토리는 프론트엔드 애플리케이션을 위한 쿠버네티스 매니페스트를 포함합니다:
fe-deploy.yaml: 프론트엔드 파드의 배포 설정을 정의fe-service.yaml: 프론트엔드 배포를 다른 서비스나 외부 접근에 노출
백엔드 디렉토리는 백엔드 애플리케이션을 위한 쿠버네티스 매니페스트를 포함합니다:
be-deploy.yaml: 백엔드 파드의 배포 설정을 정의be-service.yaml: 백엔드 배포를 다른 서비스에 노출
postgres 디렉토리는 데이터베이스 설정을 포함합니다:
db-deploy.yaml: PostgreSQL 배포 설정을 정의db-service.yaml: PostgreSQL 서비스를 노출db-pv.yaml: 데이터베이스 저장소를 위한 영구 볼륨 구성db-pvc.yaml: 데이터베이스 사용을 위한 영구 볼륨 클레임
쿠버네티스 API 연동을 위한 RBAC 설정 파일들:
sa.yaml: ServiceAccount 설정cluster_role.yaml: 네임스페이스와 파드 관리를 위한 ClusterRole 설정cluster_rb.yaml: ServiceAccount와 ClusterRole을 연결하는 ClusterRoleBinding 설정
이 RBAC 설정들은 백엔드에서 쿠버네티스 API를 사용하여 네임스페이스와 파드를 관리하기 위해 필요합니다. 참고: 이러한 RBAC 설정을 사용한 쿠버네티스 API 연동은 현재 작동하지 않습니다.
로컬에서 애플리케이션을 실행하려면:
docker-compose up
쿠버네티스에 구성 요소를 배포하려면:
- PostgreSQL 배포:
kubectl apply -f postgres/
- 백엔드 배포:
kubectl apply -f backend/
- 프론트엔드 배포:
kubectl apply -f frontend/
- RBAC 설정 적용:
kubectl apply -f sa.yaml kubectl apply -f cluster_role.yaml kubectl apply -f cluster_rb.yaml