[본투비엔지니어] 나에게 베어본만 주어진다면?? (9)

2026. 1. 31. 22:03·project/본투비엔지니어

지난 글에서 많은 버그들이 있었지만 네트워크 연결에 성공 했습니다. 그리고 이번에는 만들고있는 서비스를 배포해 보겠습니다.

 

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
'project/본투비엔지니어' 카테고리의 다른 글
  • [본투비엔지니어] 나에게 베어본만 주어진다면?? (11)
  • [본투비엔지니어] 나에게 베어본만 주어진다면?? (10)
  • [본투비엔지니어] 나에게 베어본만 주어진다면?? (8)
  • [본투비엔지니어] 나에게 베어본만 주어진다면?? (7)
heejunp
heejunp
희준개발
  • heejunp
    희준개발
    heejunp
  • 전체
    오늘
    어제
    • 분류 전체보기 (60)
      • 회고 (1)
      • project (13)
        • 본투비엔지니어 (12)
        • 페어쉐어 (1)
      • java (16)
      • spring (1)
      • go (1)
      • web (1)
      • cloud (1)
      • cloudflare (1)
      • database (1)
      • algorithm (16)
      • OS (1)
      • ai (1)
      • 기타 (2)
      • 오류 (1)
      • 생각정리 (2)
      • 자격증 (1)
        • RHCSA (1)
      • linux (0)
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.3
    heejunp
    [본투비엔지니어] 나에게 베어본만 주어진다면?? (9)
    상단으로

    티스토리툴바