지난 글에서 많은 버그들이 있었지만 네트워크 연결에 성공 했습니다. 그리고 이번에는 만들고있는 서비스를 배포해 보겠습니다.
1. Foundry
Foundry는 "내 코드를 올리면 알아서 배포해 주는 플랫폼"을 목표로 하는 개인 프로젝트 입니다. Vercel이나 Heroku 같은 PaaS(Platform as a Service)를 아주 작게 축소해서 내 클러스터 위에서 돌리는 것이 목표입니다.
- Frontend: React + Vite (사용자 대시보드)
- Backend: Go (배포 로직 및 컨테이너 관리)
- Infrastructure: Kubernetes (On-premise Home Lab)
Docker Hub 에 이미지는 미리 빌드해서 푸시해 놨습니다.
2. 배포 명세서 작성
Ingress 라우팅 전략
우리는 도메인 하나(foundry.heejunp.com)로 프론트와 백엔드를 모두 처리할 것입니다.
- foundry.heejunp.com/ → Frontend (React)
- foundry.heejunp.com/api → Backend (Go)
# foundry.yaml
# --- 1. Backend Deployment & Service ---
apiVersion: apps/v1
kind: Deployment
metadata:
name: foundry-backend
labels:
app: foundry-backend
spec:
replicas: 2 # 고가용성을 위해 2개 띄운다
selector:
matchLabels:
app: foundry-backend
template:
metadata:
labels:
app: foundry-backend
spec:
containers:
- name: backend
image: parkheejun/foundry-backend:v1
ports:
- containerPort: 8080 # Go 서버 포트
---
apiVersion: v1
kind: Service
metadata:
name: foundry-backend-svc
spec:
selector:
app: foundry-backend
ports:
- port: 80
targetPort: 8080
# --- 2. Frontend Deployment & Service ---
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: foundry-frontend
labels:
app: foundry-frontend
spec:
replicas: 2
selector:
matchLabels:
app: foundry-frontend
template:
metadata:
labels:
app: foundry-frontend
spec:
containers:
- name: frontend
image: parkheejun/foundry-frontend:v1
ports:
- containerPort: 80 # Nginx(React) 포트
---
apiVersion: v1
kind: Service
metadata:
name: foundry-frontend-svc
spec:
selector:
app: foundry-frontend
ports:
- port: 80
targetPort: 80
# --- 3. Ingress (The Gateway) ---
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: foundry-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /$2
spec:
ingressClassName: nginx
rules:
- host: foundry.heejunp.com
http:
paths:
- path: /api(/|$)(.*)
pathType: ImplementationSpecific
backend:
service:
name: foundry-backend-svc
port:
number: 80
- path: /()(.*)
pathType: ImplementationSpecific
backend:
service:
name: foundry-frontend-svc
port:
number: 80
배포 실행
kubectl apply -f foundry.yaml
하지만 역시나 바로 실행되진 않았습니다.

이미지를 불러오는데 실패했는데
kubectl describe pod [파드이름]

이벤트 로그를 보면 'no match for platform in manifest' 플랫폼이 맞지 않습니다. 왜냐하면 맥북에서 도커 이미지를 만들어서 arm64 로 기본으로 만들어지지만, 미니pc 는 amd64 를 사용합니다. '--platform linux/amd64' 이 옵션을 추가해서 새로 도커 이미지를 만들었습니다.


접속 성공!
'project > 본투비엔지니어' 카테고리의 다른 글
| [본투비엔지니어] 나에게 베어본만 주어진다면?? (11) (0) | 2026.02.03 |
|---|---|
| [본투비엔지니어] 나에게 베어본만 주어진다면?? (10) (0) | 2026.02.01 |
| [본투비엔지니어] 나에게 베어본만 주어진다면?? (8) (0) | 2026.01.29 |
| [본투비엔지니어] 나에게 베어본만 주어진다면?? (7) (0) | 2026.01.29 |
| [본투비엔지니어] 나에게 베어본만 주어진다면?? (6) (0) | 2026.01.29 |