qorgh529 e575e56859
Some checks failed
Build and Push Images / build-backend (push) Has been cancelled
Update k8s/06-argocd-app.yaml
2026-04-06 12:45:35 +00:00
2026-04-06 21:16:17 +09:00
2026-04-06 21:16:17 +09:00
2026-04-06 21:16:17 +09:00
2026-04-06 12:45:35 +00:00
2026-04-06 21:16:17 +09:00
2026-04-06 21:16:17 +09:00
2026-04-06 21:16:17 +09:00
2026-04-06 21:16:17 +09:00
2026-04-06 21:16:17 +09:00

Web Portal - Kubernetes 배포 가이드

📁 프로젝트 구조

k8s-portal/
├── backend/
│   ├── main.py          # FastAPI 백엔드 (전체 API)
│   ├── requirements.txt
│   └── Dockerfile
├── frontend/
│   ├── index.html       # 싱글 페이지 앱 (SPA)
│   ├── nginx.conf       # Nginx 설정 (API 프록시 포함)
│   └── Dockerfile
├── k8s/
│   ├── 01-namespace.yaml    # web-portal 네임스페이스
│   ├── 02-postgres.yaml     # PostgreSQL + PVC + Service
│   ├── 03-secrets.yaml      # DB 패스워드, JWT 시크릿
│   ├── 04-backend.yaml      # FastAPI Deployment + Service
│   └── 05-frontend.yaml     # Nginx Deployment + NodePort(30080)
├── build-and-deploy.sh  # 원클릭 빌드 & 배포
├── cleanup.sh           # 전체 삭제
└── README.md

🚀 설치 및 실행

전제 조건

  • Docker Desktop 설치 및 실행
  • Docker Desktop > Settings > Kubernetes > Enable Kubernetes

배포 (원클릭)

chmod +x build-and-deploy.sh
./build-and-deploy.sh

접속

브라우저에서: http://localhost:30080

🔑 기본 계정

구분 ID Password
관리자 admin admin1234
일반사용자 user1 user1234

기능 설명

일반 사용자

  • 로그인 후 본인에게 할당된 웹페이지 목록 확인
  • 카드 클릭 시 새 탭에서 해당 URL로 이동

관리자

일반 사용자 기능 + 추가:

  • 페이지 관리: 웹페이지 추가/수정/삭제
  • 사용자 관리: 계정 생성/삭제
  • 권한 설정: 사용자별 접근 가능 페이지 체크박스로 지정

🔧 운영 명령어

# 전체 리소스 상태 확인
kubectl get all -n web-portal

# 백엔드 로그 확인
kubectl logs -n web-portal deployment/backend -f

# 프론트엔드 로그 확인
kubectl logs -n web-portal deployment/frontend -f

# 재시작
kubectl rollout restart deployment/backend -n web-portal
kubectl rollout restart deployment/frontend -n web-portal

# 전체 삭제
./cleanup.sh

🔐 운영 시 보안 설정

k8s/03-secrets.yaml에서 반드시 변경:

stringData:
  db-password: "강력한패스워드로변경"          # PostgreSQL 패스워드
  jwt-secret: "64자이상의랜덤문자열로변경"     # JWT 서명 키

🏗️ 아키텍처

브라우저
  │
  ▼ :30080 (NodePort)
[Nginx Frontend] ─── 정적 HTML/JS 제공
  │ /api/* 프록시
  ▼
[FastAPI Backend] ─── JWT 인증, REST API
  │
  ▼
[PostgreSQL] ─── 사용자, 페이지, 권한 데이터
Description
nginx로 사용한 Web portal
Readme 311 KiB
Languages
HTML 61.3%
Python 36.1%
Shell 2.3%
Dockerfile 0.3%