์ฐธ๊ณ
์ฟ ๋ฒ๋คํฐ์ค ์๋ด์
Microsoft Store์์ ubuntu 20.04๋ก ์คํํ๋ค. WSL2๋ฅผ ์คํํ๊ธฐ ์ํ ์ธํ ์ ์ด๋ฏธ ์งํ๋์๋ค๋ ๊ฐ์ ํ๊ฒ ์งํํ๊ฒ ๋ค!
๊ทธ๋ฆฌ๊ณ ์ด๋ฏธ ์๋์ฐ์ ์ค์น๋์ด ์๋ Docker Desktop์์ ๋ค์๊ณผ ๊ฐ์ด ์ค์ ์ ํด์ค๋ค.
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
๊ณต์ ํํ์ด์ง์์ ์ ๊ณตํด์ฃผ๋ ๋ฐฉ๋ฒ์ ๊ทธ๋๋ก ๋ฐ๋ผํ๋ฉด ์ฝ๊ฒ ์ค์น๊ฐ ๊ฐ๋ฅํ๋ค.
ํ์ง๋ง k8s ์ต์ ์๊ตฌ์ฌํญ์ด ram 2g ์ด์, cpu 2 core ์ด์์ด๋ฏ๋ก ์ฌ์์ ์ ํฉํ ์ปดํจํฐ๊ฐ ์๋๋ฉด ์งํ์ด ์ด๋ ต๋ค.
์ค์น ์ดํ์
minikube start
๋ค์ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ๋ฉด
์ด์ k8s๋ฅผ ์ฌ์ฉํ ์ ์๋ ํ๊ฒฝ์ด ๋์๋ค.
git clone https://github.com/juno-choi/k8s-practice.git
๋ช ๋ น์ด๋ฅผ ํตํด ์์ฑํด๋์ spring ์์ ํ์ผ์ ๋ฐ์์จ๋ค.
java ์ค์น๊ฐ ๋์ด์์ง ์์ java๋ฅผ ์ฐ์ ์ค์นํ๋ค.
sudo apt install openjdk-17-jdk
์ด์ ๋ gradle์ ์ฌ์ฉํ์ฌ build๋ฅผ ์งํํด์ผํ๊ธฐ ๋๋ฌธ์ด๋ค.
./gradlew clean build
๋ฅผ ํตํด jar ํ์ผ์ ๋ง๋ ๋ค.
#Dockerfile
FROM openjdk:17.0.2-slim
ADD build/libs/sticker-0.1.jar sticker.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","sticker.jar"]
docker build -t ililil9482/test:1.0 .
ํด๋น Dockerfile์ ๋ค์ ๋ช ๋ น์ด๋ฅผ ํตํด ์ด๋ฏธ์ง๋ก ์์ฑํด๋ธ๋ค.
๊ทธ ์ดํ์ ๋ก๊ทธ์ธ์ ์งํํด์ผ ํ๋๋ฐ ๊ธฐ๋ณธ ๋ฆฌ๋ ์ค์๋ค๋ฉด
docker login -u [user id]
๋ฅผ ์ ๋ ฅํ์ฌ ๋ก๊ทธ์ธ ํ๊ฒ ์ง๋ง ์ฐ๋ฆฌ๋ WSL2๋ก Docker Desktop์ ์ฌ์ฉํ๊ณ ์๊ธฐ ๋๋ฌธ์
๋ค์๊ณผ ๊ฐ์ด Docker Desktop์์ ๋ก๊ทธ์ธ์ ์งํํด์ฃผ์ด์ผ ํ๋ค.
Docker hub์ ๋ค์๊ณผ ๊ฐ์ด repository๋ฅผ ์์ฑํด์ฃผ๊ณ
docker push ililil9482/test:1.0
๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ์ฌ ์ด๋ฏธ์ง๋ฅผ push ํด์ค๋ค.
test-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: test
labels:
app: test
spec:
replicas: 1
selector:
matchLabels:
app: test
template:
metadata:
labels:
app: test
spec:
containers:
- name: test
image: ililil9482/test:1.0
imagePullPolicy: Always
ports:
- containerPort: 8080
test-service.yaml
apiVersion: v1
kind: Service
metadata:
name: test
namespace: default
labels:
app: test
spec:
selector:
app: test
ports:
- protocol: TCP
port: 8080
nodePort: 30000
type: NodePort
๋๊ฐ์ ํ์ผ์ ์ฌ์ฉํ์ฌ ์๋ฒ๋ฅผ ์คํํ๋ ค๊ณ ํ๋ค.
kubectl apply -f test-deployment.yaml
kubectl apply -f test-service.yaml
deployment
๋ pod, replicaSet, deployment๋ฅผ ๋ชจ๋ ์ ์ํ์ฌ ์๋์ผ๋ก ์์ฑํด์ค๋ค.
service
๋ ์์์ ์์ฑ๋ pod์ port์ ํ์
๊ณผ port ๋ฒํธ๋ฅผ ์ค์ ํด์ค๋ค.
kubectl get svc
๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ๋ฉด
์๋น์ค๊ฐ ์คํ๋๊ณ ์๋ ๊ฒ์ ํ์ธํ ์ ์๊ณ
minikube service test
๋ค์ ๋ช ๋ น์ด๋ฅผ ํตํด service๋ฅผ ์คํ์์ผ์ค ์ ์๋ค.
๊ทธ๋ฆฌ๊ณ ํด๋น url๋ก ์ฐ๊ฒฐํ๋ฉด
๋ค์๊ณผ ๊ฐ์ด test๋ก ๋ค์ด๊ฐ์ ๋ ๋ด๊ฐ ์์ฑํ ์ฝ๋์ ๋ฐํ์ ํ์ธํ ์ ์๋ค.