공부하고 기록하는, 경제학과 출신 개발자의 노트

프로그래밍/이것저것_개발일지

IBM Kubernetes Cluster에 SpringBoot Application 구동 실습하기 - 1. dockerizing and 환경설정

inspirit941 2020. 11. 9. 01:44
반응형

[IBM Clouders - Indigo Blue 포스트]

IBM Cloud에서는 신용카드를 등록한 Pay-go 계정이 있으면 무료 Kubernetes Cluster를 생성할 수 있다.

한 개의 클러스터를 생성할 수 있고, 30일이 지나면 자동으로 삭제되기 때문에 과금 염려도 없다.

Kubernetes 환경을 가볍게 실습할 수 있는 조건이다.

SpringBoot로 생성한 자바 웹 어플리케이션을 Kubernetes Cluster에 구동하는 실습을 해 보았다.


생성한 스프링부트 프로젝트는

www.edwith.org/boostcourse-web/joinLectures/12943

 

[부스트코스] 웹 프로그래밍 강좌소개 : edwith

- 부스트코스

www.edwith.org

에서 확인할 수 있는 실습 예제를 직접 구현했다.

 

SpringBoot + JPA + Hibernate를 활용해 실습 예제에서 제공한 명세 / DB Schema를 생성했고, 내부 로직도 전부 구현했다.

강의 실습예제의 명세는 아래 url로 확인할 수 있다.

 

 

http://49.236.147.192:9090/swagger-ui.html

 

나의 개발결과물. localhost:8080에서 실행했을 때의 모습이다.

이 SpringBoot 프로젝트를 IBM Cloud의 Kubernetes에서 구동하는 것이 목표.

 

cf. 명세에는 DB로 mysql을 사용했는데, 디플로이 편의를 위해 springBoot 프로젝트의 DB는 h2 DB를 사용했다.

 


프로젝트를 Kubernetes에서 구동하기 위해서는 먼저 프로젝트의 dockerizing 작업을 해야 한다.

프로젝트 디렉토리에 DockerFile을 생성하고, 아래와 같이 입력했다.

 

# 자바 버전 8
FROM openjdk:8-jdk-alpine 
# 포트 공개
EXPOSE 8080
# 해당 경로에 컨테이너에 필요한 데이터 저장.
VOLUME [ "/project" ]
# 어플리케이션의 실행파일을 연결
ARG JAR_FILE=target/reservation_project-0.0.1-SNAPSHOT.jar
# 해당 jar파일에 이름 붙이기
add ${JAR_FILE} app.jar

# 이전 포스트에서 언급한 'Tomcat 난수생성 문제' 해결을 위해 -Djava 세팅을 추가했다.
ENTRYPOINT [ "java", "-Djava.security.egd=file:/dev/./urandom","-jar", "/app.jar"]

 

DockerFile 설정을 마치면, docker image를 생성해야 한다.

 

 

나는

docker build -t dockerhub아이디/app-h2db

형태로 docker image를 빌드했다.

  • dockerhub아이디/app-h2db 형태로 태그를 붙인 이유는
    이 이미지를 dockerhub에 올린 뒤, ibmcloud cli를 활용해 hub에서 다운받아 실행하도록 하기 위해서다.

이미지 빌드를 마치고

  • docker login
  • docker push dockerhub아이디/app-h2db 명령어로 dockerhub에 image를 등록한다.

여기까지 작업을 끝냈으면, cloud.ibm.com -> 카탈로그 -> Kubernetes 검색 후 Kubernetes Service를 선택한다.

 

Pay-go 계정이라면, Kubernetes 클러스터에서 '무료'를 선택해 클러스터를 생성할 수 있다.

 

 

 

설치를 마쳤다면, ibm cloud를 teminal에서 실행할 수 있게 ibm cloud cli를 설치한다.

아래의 링크를 참고하면 쉽게 설치할 수 있다.

 

https://cloud.ibm.com/docs/cli?topic=cli-getting-started

 

 

 

Deployment.yaml 파일을 생성하고 클러스터에 배포하는 과정은 바로 다음 포스트에서 확인할 수 있다.

 


참고자료

 

kubernetes.io/docs/tasks/access-application-cluster/service-access-application-cluster/

developer.ibm.com/openlabs/cloudlabs/containers-and-kubernetes-essentials

cloud.ibm.com/docs/containers?topic=containers-getting-started#deploy-app

kubernetes.io/docs/concepts/workloads/controllers/deployment/

kubernetes.io/ko/docs/tasks/manage-kubernetes-objects/declarative-config/

kubernetes.io/ko/docs/concepts/services-networking/connect-applications-service/

cloud.ibm.com/docs/containers?topic=containers-images

kubernetes.io/ko/docs/concepts/overview/working-with-objects/kubernetes-objects/

kubernetes.io/ko/docs/concepts/workloads/controllers/deployment/

github.com/IBM/spring-boot-microservices-on-kubernetes/blob/master/README-ko.md?cm_sp=IBMCode-_-deploy-spring-boot-microservices-on-kubernetes-_-Get-the-Code#11-%EC%BB%A8%ED%85%8C%EC%9D%B4%EB%84%88%EC%97%90%EC%84%9C-mysql-%EC%82%AC%EC%9A%A9

github.com/IBM/guestbook/blob/master/v1/guestbook-service.yaml

반응형