오늘은 minikube 를 통해서 Springboot 프로젝트를 실행하고 접근되는지가지 진행해보도록 하겠습니다.
바로전시간 챕터4에서는 쿠버네티스 minikube 를 설치하는부분까지 진행하였습니다.
https://angryfullstack.tistory.com/98
minikube 에서 Springboot 프로젝트 실행하기
1.Docker 실행
open /Applications/Docker.app
2.Dockerfile 생성
# 베이스 이미지 설정
FROM openjdk:11-jre-slim
# 저자 정보
LABEL maintainer="lswteen@gmail.com"
# 프로젝트의 실행 파일 이름 설정
ARG JAR_FILE=build/libs/*.jar
# 실행 파일을 컨테이너에 추가
COPY ${JAR_FILE} app.jar
# 컨테이너의 실행 명령 정의
ENTRYPOINT ["java","-jar","/app.jar"]
3.Docker 이미지 빌드합니다.
docker build -t my-spring-boot-app:latest .
4.로컬 Docker 레지스트리에 이미지가 있어야합니다.
그러나 Minikube는 자체 Docker데몬을 사용하므로 minikube Docker데몬을 사용하도록 터미널 환경을 설정해야 합니다.
eval $(minikube docker-env)
해당 명령어로 로컬 터미널 세션의 Docker CLI를 Minikube Docker데몬에 연결합니다.
5.minikube 의 Docker 데몬을 사용하여 이미지를 다시 빌드합니다.
docker build -t my-spring-boot-app:latest .
6. 쿠버네티스에 적용할 springboot-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: springboot-deployment
spec:
selector:
matchLabels:
app: my-springboot-app
replicas: 1
template:
metadata:
labels:
app: my-springboot-app
spec:
containers:
- name: springboot-container
image: my-spring-boot-app:latest
imagePullPolicy: IfNotPresent
ports:
- containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:
name: my-springboot-app
spec:
selector:
app: my-springboot-app
ports:
- protocol: TCP
port: 8080
targetPort: 8080
type: LoadBalancer
imagePullPolicy 를 추가하지 않으면 Remote에 있는 정보를 찾으려하기때문에 로컬에 있는 Docker를 연결하려면 필수로 넣어야한다.
해당 내용을 넣지않는다면
쿠버네티스 Dashboard에서 아래와같은 내용을 확인하게됩니다.
Failed to pull image "my-spring-boot-app:latest": rpc error: code = Unknown desc = Error response from daemon: pull access denied for my-spring-boot-app, repository does not exist or may require 'docker login': denied: requested access to the resource is denied
kubectl apply -f springboot-deployment.yaml
kubectl get pods
아래 명령어 입력시 dashboard창으로 확인가능합니다.
minikube dashboard
7. 쿠버네티스 서비스 URL 접근방법
minikube service my-springboot-app --url
이래와같이 진행되면 성공입니다.
(base) renzo@renzoui-MacBookPro tax % minikube service my-springboot-app --url
http://127.0.0.1:53960
❗ Because you are using a Docker driver on darwin, the terminal needs to be open to run it.
터미널 세션이 살아있어야만 접근된다는거라서 닫으면 끊어집니다.
관련 포트 계속 변경됩니다. (이게 원래이런건지 설정을 추가적으로 해야되는건지 확인해볼필요가 있습니다.)
이렇게 쿠버네티스를 로컬에서 설치하고 설정파일을 Springboot 프로젝트에 추가하고 실행해서 접근하는부분까지
가볍게(?) 삽질하면서 정리해보겠습니다.
'Backend 개발자 > Springboot' 카테고리의 다른 글
Spring Cloud Gateway 언제쓰는거지?! (1) | 2024.06.03 |
---|---|
Springboot 3.x.x 프레임워크 Java17 Intellij 설정하기 (0) | 2023.06.07 |
쿠버네티스 환경 맛보기 미니멀라이즘 minikube 설치 및 설정 springboot 프로젝트 실행하기 챕터4 (0) | 2023.04.13 |
Intellij springboot 사전과제 Dockerfile 만들고 실행하기 챕터3 (0) | 2023.04.12 |
Intellij Springboot build.gradle 설정 및 Application.yml H2 DB 구성하기 , 사전과제 시작하기 챕터2 (0) | 2023.03.29 |