[DevOps] 클라우드 네이티브 앱 배포

illilili·2025년 6월 17일

DevOps

목록 보기
4/12
post-thumbnail

✅ 프로젝트 환경 설정

  • 각 마이크로서비스 폴더: order, inventory, delivery, gateway
cd order
mvn package -B -Dmaven.test.skip=true
ls target/
java -jar target/order-0.0.1-SNAPSHOT.jar
  • ctrl + C로 실행 중단

✅ 도커라이징(Docker Build & Push)

  • 각 서비스 루트 폴더에 Dockerfile 존재 여부 확인
docker login

docker build -t [dockerhub ID]/order:[오늘날짜] .
docker image ls
docker push [dockerhub ID]/order:[오늘날짜]
  • Docker Hub에서 이미지 등록 확인

✅ Kafka 설치 (클러스터 내부 Event Store)

🔹 Helm 설치 (최초 1회)

curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 > get_helm.sh
chmod 700 get_helm.sh
./get_helm.sh

💡 Helm이란?

  • Helm은 Kubernetes 애플리케이션을 위한 패키지 매니저
  • 복잡한 리소스를 간단한 명령어로 배포할 수 있게 해주는 도구
  • Kafka와 같은 복합 서비스 설치에 매우 유용하며, Helm Chart라는 템플릿 묶음을 사용

🔹 Kafka 설치

helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update
helm install my-kafka bitnami/kafka --version 23.0.5

설치 확인:

kubectl get all


✅ 주문 서비스 배포 (Order)

🔹 배포 전 설정

  • order/kubernetes/deployment.yaml 파일 열기
  • image: 부분을 아래와 같이 수정:
image: [dockerhub ID]/order:[오늘날짜]

🔹 YAML 배포

kubectl apply -f kubernetes/deployment.yaml
kubectl apply -f kubernetes/service.yaml
  • 나머지 서비스도 동일하게 배포 (Delivery, Gateway, Inventory 등)

✅ 서비스 및 이벤트 테스트

🔹 Gateway IP 확인

kubectl get svc

🔹 Pod 생성 확인

kubectl get po

🔹 서비스 테스트

http [gateway IP]:8080/inventories id=1 stock=100
http [gateway IP]:8080/orders
http [gateway IP]:8080/orders productId=1 productName="TV" qty=3


✅ Kafka 메시지 확인 (Kafka 클라이언트)

🔹 Kafka Client Pod 생성

kubectl run my-kafka-client --restart='Never' \
  --image docker.io/bitnami/kafka:3.5.0-debian-11-r21 \
  --namespace default --command -- sleep infinity

🔹 Kafka Consumer 실행

kubectl exec --tty -i my-kafka-client --namespace default -- bash

kafka-console-consumer.sh \
  --bootstrap-server my-kafka.default.svc.cluster.local:9092 \
  --topic modelforops --from-beginning


✅ 프론트엔드 배포

🔹 프론트엔드 빌드

# frontend 디렉토리에서 실행
npm install
npm run build
  • dist/ 디렉토리에 정적 파일이 생성

🔹 Docker 이미지 빌드 및 푸시

# Docker 이미지 빌드
docker build -t [dockerhub ID]/frontend:[오늘날짜] .

# Docker Hub에 푸시
docker push [dockerhub ID]/frontend:[오늘날짜]

🔹 Kubernetes Deployment 및 Service 배포

🔸 deployment.yaml

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: frontend
  labels:
    app: frontend
spec:
  replicas: 1
  selector:
    matchLabels:
      app: frontend
  template:
    metadata:
      labels:
        app: frontend
    spec:
      containers:
        - name: frontend
          image: [dockerhub ID]/frontend:[오늘날짜]
          ports:
            - containerPort: 8080

🔸 적용 명령어

kubectl apply -f kubernetes/deployment.yaml
kubectl apply -f kubernetes/service.yaml

🔹 접속 확인


profile
코코딩딩

0개의 댓글