[테스트] 스프링부트 웹소스 파드화
springboot 샘플 웹페이지 작성
springboot기반 localhost:8080 접속시 helloworld 뿌려주는, 간단한 웹 프로그램을 작성해본다.
maven 빌드 및 jar파일 생성
maven build를 이용하여, jar 파일을 빌드, 생성한다.
mvn clean
mvn package
dockerfile 빌드 및 실행, push
cat > dockerfile
FROM openjdk:8-jdk-alpine
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} webdemo.jar
ENTRYPOINT ["java","-jar","/webdemo.jar"]
#빌드
docker build -t bluedove97/webdemo-test:v0.0.1 .
#도커 실행
docker run -d -p 8080:8080 --name webdemo bluedove97/webdemo-test:v0.0.1
#확인
curl localhost:8080
#도커 중지
docker rm -f webdemo
#도커 푸시
docker push bluedove97/webdemo-test:v0.0.1
Deployment로 pod화
cat > deploy-webdemo.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: webdemo
spec:
replicas: 3
selector:
matchLabels:
app: webdemo
template:
metadata:
name: webdemo-test
labels:
app: webdemo
spec:
containers:
- name: webdemo-container
image: bluedove97/webdemo-test:v0.0.1
ports:
- containerPort: 8080
resources:
requests:
cpu: 200m
NodePort Service 붙이기
cat > svc-webdemo.yaml
apiVersion: v1
kind: Service
metadata:
name: svc-webdemo
spec:
type: NodePort
clusterIP: 10.100.100.200
selector:
app: webdemo
ports:
- protocol: TCP
port: 80
targetPort: 8080
nodePort: 30200
테스트 - 내부 연결 테스트
#테스트1
kubectl get all -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
pod/webdemo-95c66c87-262mr 1/1 Running 0 3m45s 10.44.0.2 node1.example.com <none> <none>
pod/webdemo-95c66c87-c22mw 1/1 Running 0 3m45s 10.44.0.1 node1.example.com <none> <none>
pod/webdemo-95c66c87-nld22 1/1 Running 0 3m45s 10.36.0.2 node2.example.com <none> <none>
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 6d14h <none>
service/svc-webdemo NodePort 10.100.100.200 <none> 80:30200/TCP 3m45s app=webdemo
NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR
deployment.apps/webdemo 3/3 3 3 3m46s webdemo-container bluedove97/webdemo-test:v0.0.1 app=webdemo
NAME DESIRED CURRENT READY AGE CONTAINERS IMAGES SELECTOR
replicaset.apps/webdemo-95c66c87 3 3 3 3m46s webdemo-container bluedove97/webdemo-test:v0.0.1 app=webdemo,pod-template-hash=95c66c87
curl 10.36.0.2:8080 #<--- 성공
curl 10.100.100.200 #<--- 성공
curl 10.100.100.200/test #<--- 성공
테스트 - 외부 연결 테스트
virtualbox의 port forwarding을 node1으로 가는 30100, 30200포트 세팅후
바깥의 웹브라우저에서 http://localhost:30200 실행

성공!