진행 내용 요약
-
Claude Code로 애플리케이션 생성
- React FE
- FastAPI BE
- PostgreSQL
- Redis 연동 구조
- WebSocket 포함
-
Docker 이미지화
- FE Dockerfile
- BE Dockerfile
- 이미지 빌드
-
쿠버네티스 설계
- Namespace
- Deployment / StatefulSet
- Service
- ConfigMap / Secret
- PV / PVC
- ServiceAccount / RBAC
- Probe
- HPA
- Ingress
-
Helm Chart 패키징
- templates 분리
values.yaml작성- 환경값 관리
Claude Code 프롬프트
나는 Kubernetes 클러스터에 배포할 실시간 웹 게임 서비스를 만들려고 한다.
목표는 Kubernetes 기능을 최대한 활용하는 것이며
React(FE) + FastAPI(BE) + PostgreSQL + Redis 구조의 애플리케이션을 개발하려고 한다.
아래 요구사항을 기반으로 전체 프로젝트 코드를 생성해줘.
---
# 프로젝트 개요
서비스는 간단한 **테트리스 게임**이다.
구성
- Frontend : React
- Backend : FastAPI
- Database : PostgreSQL
- Cache / Ranking : Redis
- 통신 : REST API + WebSocket
---
# 기능 요구사항
## 1. 게임 기능
- 브라우저에서 실행되는 테트리스 게임
- 게임 종료 시 점수 생성
- 점수 서버 전송
---
## 2. 실시간 랭킹
Redis Sorted Set을 이용하여 랭킹 관리
ZADD leaderboard <score> <user_id>
랭킹 조회 API
GET /ranking
상위 20명 반환
---
## 3. 게임 기록 저장
게임 종료 시
PostgreSQL에 기록 저장
INSERT INTO game_logs (user_id, score)
---
## 4. 사용자 최고 기록 조회
API
GET /best-score/{user_id}
SQL
SELECT MAX(score) FROM game_logs WHERE user_id=?
---
# Backend 요구사항
Framework
FastAPI
구현
- REST API
- WebSocket endpoint
- Redis 연결
- PostgreSQL 연결
- BackgroundTasks 사용 (DB 기록 비동기 처리)
API 목록
POST /score
GET /ranking
GET /best-score/{user_id}
WS /ws/ranking
---
# Frontend 요구사항
React 기반 테트리스 UI
구성
- Game Board
- Score 표시
- Ranking Panel
- WebSocket으로 실시간 랭킹 갱신
기능
- 게임 종료 시 API 호출
- 랭킹 API 조회
- WebSocket 연결
---
# 프로젝트 구조
Backend
backend/
app/
main.py
api/
models/
services/
db/
requirements.txt
Dockerfile
Frontend
frontend/
src/
public/
package.json
Dockerfile
---
# Docker 요구사항
각 서비스 Dockerfile 작성
Backend
- Python
- uvicorn 실행
Frontend
- Node build
- nginx serve
---
# 환경 변수
환경 변수로 DB/Redis 연결
Backend ENV
POSTGRES_HOST
POSTGRES_PORT
POSTGRES_USER
POSTGRES_PASSWORD
POSTGRES_DB
REDIS_HOST
REDIS_PORT
---
# Health Check
Kubernetes 배포를 고려하여
Backend에 아래 endpoint 추가
GET /health
응답
{"status":"ok"}
---
# 추가 요구
코드는 다음을 고려하여 작성
- Kubernetes Deployment 배포 가능
- 환경 변수 기반 설정
- Stateless 구조
- Redis / DB 외부 연결
---
전체 프로젝트 코드를 생성해줘.
-
k8s_tetris폴더 생성하고 vs code terminal 에서claude입력하여 실행- 이후 Docker 이미지 빌드나 Kubernetes YAML 파일 검토까지 시키기 위해 CLI 버전 사용
-
생성된 폴더 tree :
tree
C:./k8s_tetris
├─backend
│ └─app
│ ├─api
│ ├─db
│ ├─models
│ └─services
└─frontend
├─public
└─src
├─api
├─components
└─hooks
- Backend Dockerfile
FROM python:3.12-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
EXPOSE 8000
CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"]
- Frontend Dockerfile
# ── Build stage ──────────────────────────────────────────────
FROM node:20-alpine AS build
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
# ── Serve stage ──────────────────────────────────────────────
FROM nginx:1.27-alpine
# nginx 공식 이미지는 /etc/nginx/templates/ 의 *.template 파일을
# envsubst 처리 후 /etc/nginx/conf.d/ 에 자동 배치한다.
COPY --from=build /app/build /usr/share/nginx/html
COPY nginx.conf.template /etc/nginx/templates/default.conf.template
ENV API_HOST=backend
ENV API_PORT=8000
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
이후 ./k8s_tetris/ 위치에서
docker build -t tetris-backend ./backend
docker build -t tetris-frontend ./frontend

Docker Image
- 이미지 태그 설정
docker tag tetris-backend username/tetris-backend:1.0
docker tag tetris-frontend username/tetris-frontend:1.0
-
docker 로그인 :
docker login -
push
docker push username/tetris-backend:1.0
docker push username/tetris-frontend:1.0


→ 이제 Kubernetes 에서 : image: hj2346/tetris-backend:1.0 으로 사용 가능
- worker 노드가 자동으로 pull 할거임
수행 내용
Claude Code를 활용하여 게임 서비스 코드 생성
Frontend
- React 기반 테트리스 UI
- WebSocket 기반 랭킹 조회
- nginx 기반 정적 서빙
구조
frontend
├ public
├ src
│ ├ api
│ ├ components
│ └ hooks
└ Dockerfile
Backend
- FastAPI
- WebSocket 랭킹 API
- Redis + PostgreSQL 연동
구조
backend
├ app
│ ├ api
│ ├ db
│ ├ models
│ └ services
└ Dockerfile
Docker Image 생성
Container Registry 업로드 → Docker Hub 사용
VM 클러스터 구축
kubeadm 클러스터
CNI (Calico)
Metrics Server
앱 코드 생성
Docker 이미지 생성
Docker Registry Push
완료