티스토리 뷰

728x90
 

[Docker] 윈도우 Spring Boot + React 풀스택 프로젝트 실행하기

2024.11.05 - [Docker] - [Docker] Windows 11 도커 설치하기 시스템 정보 > Windows 버전 확인Windows Home Edition 사용중임을 확인.Home Edition일 경우 WSL2 기반 Docker Engine만 사용 가능하므로, WSL을 설치해보자.Windows H

korea-potato.tistory.com

도커 설정 참조

 

 

minikube start

minikube is local Kubernetes, focusing on making it easy to learn and develop for Kubernetes. All you need is Docker (or similarly compatible) container or a Virtual Machine environment, and Kubernetes is a single command away: minikube start What you’ll

minikube.sigs.k8s.io

minikube 설치

 

 

오늘은 이전에 설정한 풀스택 도커 환경을 로컬 쿠버네티스에 배포해보자.

minikube란, 쿠버네티스 클러스터를 로컬 환경에서 사용할 수 있게 해주는 가벼운 구현체이며 macOS, Linux 및 Windows에서 빠르게 세팅할 수 있다.

 

 

1. Docker Hub에 이미지 Push 하기

1️⃣ 로그인 docker login
2️⃣ 태그 docker tag localname yourdockerid/name
3️⃣ 푸시 docker push yourdockerid/name
4️⃣ 확인 Docker Hub 접속

 

docker images 명령어로 실제 로컬 이미지 이름 확인 ex) test-frontend, test-backend

> docker images
REPOSITORY                    TAG       IMAGE ID       CREATED         SIZE
test-frontend
test-backend

 

로컬에서 빌드한 상태인 백엔드/프론트엔드 이미지를 Docker Hub에 올릴 수 있게 태그 붙이기

> docker tag test-backend [your-Docker-Id]/backend-app
> docker tag test-frontend [your-Docker-Id]/frontend-app

 

Docker Hub 로그인 & 이미지 푸시

docker login
# 자동 로그인 또는 아이디/비밀번호 입력

docker push yourdockerid/backend-app
docker push yourdockerid/frontend-app

 

Docker Hub 웹사이트 내 Repositories 또는 Docker Desktop 에서 푸시된 이미지 확인

 

 

2. deployment.yml (배포) , service.yml (내부/외부 연결) 쿠버네티스 리소스 정의

📁 디렉토리 구조 미리보기

k8s/
├── backend-deployment.yaml
├── backend-service.yaml
├── frontend-deployment.yaml
└── frontend-service.yaml

 

📄 backend-deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: backend-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      app: backend
  template:
    metadata:
      labels:
        app: backend
    spec:
      containers:
        - name: backend
          image: yourdockerid/backend-app
          ports:
            - containerPort: 8080

 

📄 backend-service.yaml

apiVersion: v1
kind: Service
metadata:
  name: backend-service
spec:
  selector:
    app: backend
  ports:
    - port: 8080
      targetPort: 8080

 

📄 frontend-deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: frontend-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      app: frontend
  template:
    metadata:
      labels:
        app: frontend
    spec:
      containers:
        - name: frontend
          image: yourdockerid/frontend-app
          ports:
            - containerPort: 80

 

📄 frontend-service.yaml

apiVersion: v1
kind: Service
metadata:
  name: frontend-service
spec:
  type: NodePort
  selector:
    app: frontend
  ports:
    - port: 80
      targetPort: 80
      nodePort: 30080  # 브라우저에서 접근할 포트

 

 

3. minikube 실행 후 배포하기

> minikube start

 

 

배포하기

> kubectl apply -f ./k8s

 

정상적으로 배포되면 다음 명령어로 상태 확인:

> kubectl get pods # Running이면 정상, 오류 시 kubectl logs [pod-name] 명령어로 로그 확인
> kubectl get services # 여기서 frontend의 PORT(S)가 80:30080/TCP 로 되어 있어야 정상!

 

🎯 frontend-service.yaml 에서 설정한 포트로 접속해보기 (localhost:30080)

 

 

⚠️ 위에서 접속 오류 시 포트포워딩 방식으로 테스트하기

NodePort 대신 minikube service 명령어로 접근

minikube service frontend-service

명령어는 브라우저를 열고 프론트엔드 서비스로 바로 연결해준다.

 

 

접속 후 프론트엔드 화면이 나오고, 백엔드와의 통신까지 확인하면 성공! 

 

 

📌 주의

정상 통신 아닐 시, nginx.conf 파일에서 proxy_pass 서비스 이름 매칭 확인하기

location /api/ {
    proxy_pass http://backend-service:8080; # backend-service라는 Kubernetes 서비스 이름과 매칭 되어야함
    proxy_http_version 1.1;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
}

 

 

📌 점검

1. 파드 상태 확인

kubectl get pods

모든 파드의 STATUS가 Running 상태인지 확인.

2. 서비스 상태 확인

kubectl get services

frontend-service와 backend-service가 잘 뜨는지, EXTERNAL-IP 또는 PORT(S)가 적절한지 확인.

3. 프론트엔드 서비스 접속 테스트

minikube service frontend-service

열리는 브라우저 창 또는 표시되는 URL이 정상적으로 프론트 화면을 보여주는지 확인.

4. 프론트 → 백엔드 API 연동 확인

프론트 화면에 “Hello from Backend” 같은 메시지가 보이면 백엔드와 연결이 성공한 것!

💡 만약 문제가 있으면:

kubectl logs <frontend-pod-name>
kubectl logs <backend-pod-name>

각 파드의 로그를 확인하면 원인을 더 정확히 알 수 있다.

 


모든 것이 잘 작동하면 쿠버네티스 배포 성공! 🎉

 

 

 

728x90
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크