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

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

IBM Kubernetes Cluster에 SpringBoot Application 구동 실습하기 - 2. deploy

inspirit941 2020. 11. 10. 03:04
반응형

[IBM Clouders - Indigo Blue 포스트]

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

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

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

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


DockerFile을 생성한 경로에 Kubernetes에 Deploy하기 위한 yaml파일 Deployment.yaml을 생성한다.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: app-h2db
  labels:
    app : app-h2db
spec:
  replicas: 1
  selector:
    matchLabels:
      app: app-h2db
  template:
    metadata:
      labels:
        app: app-h2db
    spec:
      containers:
        - name: app-h2db
          image: dockerhub아이디/app-h2db
          ports:
            - name: spring-server
              containerPort: 8080 # 스프링 프로젝트에서 사용하는 포트가 8080이었다.

파일까지 생성이 완료되었으면, ibm cloud cli로 로그인한다.

  1. ibmcloud login -a cloud.ibm.com -r us-south -g Default 로 로그인. 내 경우는 cluster를 us-south region에 생성했기 때문에 us-south로 로그인했다.
  2. ibmcloud ks cluster config --cluster 클러스터ID. Kubernetes context를 이 터미널 세션의 사용자 클러스터로 설정한다.
  3. kubectl config current-context. 클러스터에 연결 가능한지 확인한다.
  4. ibmcloud cr login으로 container registry에 로그인한다. dockerhub에서 내가 생성한 이미지를 불러오기 위해 필요하다.

 

클러스터 ID는 cloud.ibm.com에서 kubernetes service가 생성되면, 대시보드에서 클러스터를 선택하면 상세페이지로 볼 수 있다.

상세페이지는 아래와 같이 생겼다.

 


이전 포스트에서 DockerFile, Deployment.yaml 파일을 생성한 경로로 이동한 뒤

  • kubectl apply -f deployment.yaml 로 deployment 설정을 kubernetes에 등록한다.
  • kubectl get deployment 로 deployment가 제대로 완료되었는지 확인한다.

  • kubectl describe deployments app-h2db 로 세부내역을 확인한다.

     

  • kubectl expose deployment app-h2db --type=NodePort.

    생성한 deployment가 외부와 통신할 수 있는 포트번호를 할당한다.

 

  • kubectl describe service 로 생성한 service의 세부내역을 확인한다.

 

  • kubectl get service app-h2db . 8080:랜덤한 포트번호/TCP 형태가 있으면 정상이다.
  • ibmcloud ks workers --cluster 클러스터ID. 로 worker node를 확인한다.

확인된 Public IP와 service에서 볼 수 있는 랜덤 포트번호 (위 예시에서는 32393)로 deployment 서비스에 접근할 수 있다.

 

 


참고자료

 

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

반응형