[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로 로그인한다.
ibmcloud login -a cloud.ibm.com -r us-south -g Default
로 로그인. 내 경우는 cluster를 us-south region에 생성했기 때문에 us-south로 로그인했다.ibmcloud ks cluster config --cluster 클러스터ID
. Kubernetes context를 이 터미널 세션의 사용자 클러스터로 설정한다.kubectl config current-context
. 클러스터에 연결 가능한지 확인한다.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/guestbook/blob/master/v1/guestbook-service.yaml
'프로그래밍 > 이것저것_개발일지' 카테고리의 다른 글
화상 모의면접 연습 플랫폼 개발 프로젝트 (1) - 채팅 DB 아키텍처 고민하기 (0) | 2021.02.20 |
---|---|
Java WebSocket과 Stomp로 간단한 채팅프로그램 만들기 (0) | 2021.02.04 |
IBM Kubernetes Cluster에 SpringBoot Application 구동 실습하기 - 1. dockerizing and 환경설정 (0) | 2020.11.09 |
Ubuntu 인스턴스에 MySQL 올리기 (0) | 2020.11.04 |
Tomcat 서버 구동시 Creation of SecureRandom instance for session ID generation Warning 해결 (0) | 2020.11.03 |