์ด ๊ฒ์๋ฌผ์ ์ฐ๋ฆฌ ์ง์์ด Kubernetes์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ๊ณ OpenShift์์ ๊ทธ๋ฌํ ๊ฐ๋ฐ์ ์ธ๋ถ ์ฌํญ์ ๋ํด ๊ณ ๊ฐ๊ณผ ๊ฝค ๋ง์ ๋ํ๋ฅผ ๋๋์๊ธฐ ๋๋ฌธ์ ์์ฑ๋์์ต๋๋ค.
์ฐ๋ฆฌ๋ ์ผ๋ฐ์ ์ผ๋ก Kubernetes๋ Kubernetes์ผ ๋ฟ์ด๋ฉฐ OpenShift๋ ์ด๋ฏธ Microsoft AKS ๋๋ Amazon EKS์ ๊ฐ์ Kubernetes ํ๋ซํผ์ด๋ผ๋ ํ
์ ๋ถํฐ ์์ํฉ๋๋ค. ์ด๋ฌํ ๊ฐ ํ๋ซํผ์๋ ํน์ ๋์ ๊ณ ๊ฐ์ ์ด์ ์ ๋ง์ถ ๊ณ ์ ํ ์ฅ์ ์ด ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ ์ดํ ๋ํ๋ ์ด๋ฏธ ํน์ ํ๋ซํผ์ ๊ฐ์ ๊ณผ ์ฝ์ ์ ๋น๊ตํ๋ ๊ฒ์ผ๋ก ํ๋ฌ๊ฐ๋๋ค.
์ผ๋ฐ์ ์ผ๋ก ์ฐ๋ฆฌ๋ "๋ค์ด๋ด, OpenShift ๋๋ AKS, EKS, ์ผ๋ถ ์ฌ์ฉ์ ์ ์ Kubernetes, ์ ๋ชจ๋ Kubernetes์์ ์ฝ๋๋ฅผ ์คํํ๋ ๊ฒ์ ์ค์ํ์ง ์์ต๋๋ค. (์ค์ฌ์ KUK๋ผ๊ณ ๋ถ๋ฅด์) "๊ฑฐ๊ธฐ๋ ์ ๊ธฐ๋ ์ ๋ง ๊ฐ๋จํฉ๋๋ค."
๊ทธ๋ฐ ๋ค์ ๊ฐ์ฅ ๋จ์ํ "Hello World"๋ฅผ ์ฌ์ฉํ์ฌ CMC์ Red Hat OpenShift Container Platform(์ดํ OCP ๋๋ ๋จ์ํ OpenShift) ๊ฐ์ ๊ณตํต์ ๊ณผ ์ฐจ์ด์ ์ ๋ณด์ฌ์ฃผ๊ธฐ๋ก ๊ณํํ์ต๋๋ค.
๊ทธ๋ฌ๋ ์ด ๊ฒ์๋ฌผ์ ์์ฑํ๋ ๊ณผ์ ์์ ์ฐ๋ฆฌ๋ OpenShift ์ฌ์ฉ์ ๋๋ฌด ์ต์ํด์ ธ์ OpenShift๊ฐ ์ด๋ป๊ฒ ์ฑ์ฅํ์ฌ ๋จ์ํ Kubernetes ๋ฐฐํฌ๋ฅผ ํจ์ฌ ๋ฐ์ด๋๋ ๋๋ผ์ด ํ๋ซํผ์ผ๋ก ๋ณ๋ชจํ๋์ง ๊นจ๋ซ์ง ๋ชปํ๊ณ ์์์ ๊นจ๋ฌ์์ต๋๋ค. ์ฐ๋ฆฌ๋ OpenShift์ ์ฅ์ํจ์ ๊ฐ๊ณผํ๋ฉด์ OpenShift์ ์ฑ์ํจ๊ณผ ๋จ์ํจ์ ๋น์ฐํ๊ฒ ์ฌ๊ธฐ๋ ๊ฒฝํฅ์ด ์์ต๋๋ค.
์ผ๋ฐ์ ์ผ๋ก ์ ๊ทน์ ์ธ ํ๊ฐ์ ์๊ฐ์ด ์์ผ๋ฉฐ ์ด์ ์ฐ๋ฆฌ๋ KUK์ OpenShift์์ "Hello World"์ ์ปค๋ฏธ์
๋์ ๋จ๊ณ๋ณ๋ก ๋น๊ตํ๊ณ ๊ฐ๋ฅํ ํ ๊ฐ๊ด์ ์ผ๋ก ์ํํ ๊ฒ์
๋๋ค. ์ฃผ์ ์ ๋ํ ํ๋). ์ด ๋ฌธ์ ์ ๋ํ ์์ ํ ์ฃผ๊ด์ ์ธ ์๊ฒฌ์ ๊ด์ฌ์ด ์๋ค๋ฉด ์ฝ์ ์ ์์ต๋๋ค.
ํด๋ฌ์คํฐ
๋ฐ๋ผ์ "Hello World"์๋ ํด๋ฌ์คํฐ๊ฐ ํ์ํฉ๋๋ค. ์๋ฒ, ๋ ์ง์คํธ๋ฆฌ, ๋คํธ์ํฌ, ๋ฐ์ดํฐ ์ ์ก ๋ฑ์ ๋ํ ๋น์ฉ์ ์ง๋ถํ์ง ์์ผ๋ ค๋ฉด ํผ๋ธ๋ฆญ ํด๋ผ์ฐ๋์ "์๋์ค"๋ผ๊ณ ๋งํฉ์๋ค. ๋ฐ๋ผ์ ๊ฐ๋จํ ๋จ์ผ ๋
ธ๋ ํด๋ฌ์คํฐ๋ฅผ ์ ํํฉ๋๋ค.
KUK-e์์ ์กฐ๋ฆฝ
์, ๊ฐ์.
1๋จ๊ณ - ์ปจํ ์ด๋ ์ด๋ฏธ์ง ๊ตฌ์ถ
Minikube์ "Hello World"๋ฅผ ๋ฐฐํฌํ๋ ๊ฒ์ผ๋ก ์์ํ๊ฒ ์ต๋๋ค. ์ด๋ฅผ ์ํด์๋ ๋ค์์ด ํ์ํฉ๋๋ค.
- 1. ๋์ปค๋ฅผ ์ค์นํ์ต๋๋ค.
- 2. ํ๋ด ์ค์น.
- 3. Maven ์ค์น(์ค์ ๋ก ์ด ํ๋ก์ ํธ๋ mvnw ๋ฐ์ด๋๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ฏ๋ก Maven ์์ด๋ ๊ฐ๋ฅํฉ๋๋ค.)
- 4. ์ค์ ๋ก ์์ค ์์ฒด, ์ฆ ๋ฆฌํฌ์งํ ๋ฆฌ ๋ณต์
github.com/gcolman/quarkus-hello-world.git
์ฒซ ๋ฒ์งธ ๋จ๊ณ๋ Quarkus ํ๋ก์ ํธ๋ฅผ ๋ง๋๋ ๊ฒ์ ๋๋ค. Quarkus.io๋ฅผ ์ฌ์ฉํด ๋ณธ ์ ์ด ์๋๋ผ๋ ๋๋ ค์ํ์ง ๋ง์ญ์์ค. ์ฝ์ต๋๋ค. ํ๋ก์ ํธ์์ ์ฌ์ฉํ๋ ค๋ ๊ตฌ์ฑ ์์(RestEasy, Hibernate, Amazon SQS, Camel ๋ฑ)๋ฅผ ์ ํํ ๋ค์ Quarkus ์์ฒด๊ฐ ์ฌ์ฉ์์ ์ฐธ์ฌ ์์ด maven ์ํ์ ์ค์ ํ๊ณ ๋ชจ๋ ๊ฒ์ github์ ๋ฃ์ต๋๋ค. ์ฆ, ๋ฌธ์ ๊ทธ๋๋ก ๋ง์ฐ์ค๋ฅผ ํ ๋ฒ๋ง ํด๋ฆญํ๋ฉด ์๋ฃ๋ฉ๋๋ค. ์ด๊ฒ์ด ์ฐ๋ฆฌ๊ฐ Quarkus๋ฅผ ์ฌ๋ํ๋ ์ด์ ์ ๋๋ค.
"Hello World"๋ฅผ ์ปจํ ์ด๋ํ๋ ์ด๋ฏธ์ง๋ก ๋น๋ํ๋ ๊ฐ์ฅ ์ฌ์ด ๋ฐฉ๋ฒ์ ํ์ํ ๋ชจ๋ ์์ ์ ์ํํ๋ Docker์ฉ quarkus-maven ํ์ฅ์ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค. Quarkus์ ๋ฑ์ฅ์ผ๋ก ์ด ์์ ์ ์ ๋ง ์ฝ๊ณ ๊ฐ๋จํด์ก์ต๋๋ค. container-image-docker ํ์ฅ์ ์ถ๊ฐํ๋ฉด maven ๋ช ๋ น์ผ๋ก ์ด๋ฏธ์ง๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
./mvnw quarkus:add-extension -Dextensions=โcontainer-image-dockerโ
๋ง์ง๋ง์ผ๋ก Maven์ ์ฌ์ฉํ์ฌ ์ด๋ฏธ์ง๋ฅผ ๋น๋ํฉ๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก ์ฐ๋ฆฌ์ ์์ค ์ฝ๋๋ ์ปจํ ์ด๋ ๋ฐํ์์์ ์ด๋ฏธ ์คํ๋ ์ ์๋ ๋ฏธ๋ฆฌ ๋ง๋ค์ด์ง ์ปจํ ์ด๋ ์ด๋ฏธ์ง๋ก ๋ฐ๋๋๋ค.
./mvnw -X clean package -Dquarkus.container-image.build=true
์ฌ์ค ๊ทธ๊ฒ ์ ๋ถ์ ๋๋ค. ์ด์ ์ก์ธ์คํ ์ ์๋๋ก ์๋น์ค๋ฅผ ํฌํธ 8080์ ๋งคํํ์ฌ docker run ๋ช ๋ น์ผ๋ก ์ปจํ ์ด๋๋ฅผ ์คํํ ์ ์์ต๋๋ค.
docker run -i โ rm -p 8080:8080 gcolman/quarkus-hello-world
์ปจํ ์ด๋ ์ธ์คํด์ค๊ฐ ์์๋ ํ ๋จ์ ๊ฒ์ curl ๋ช ๋ น์ผ๋ก ์๋น์ค๊ฐ ์คํ ์ค์ธ์ง ํ์ธํ๋ ๊ฒ์ ๋๋ค.
๊ทธ๋์ ๋ชจ๋ ๊ฒ์ด ์๋ํ๊ณ ์ ๋ง ์ฝ๊ณ ๊ฐ๋จํ์ต๋๋ค.
2๋จ๊ณ - ์ปจํ ์ด๋๋ฅผ ์ปจํ ์ด๋ ์ด๋ฏธ์ง ๋ฆฌํฌ์งํ ๋ฆฌ์ ์ ์ถ
์ง๊ธ์ ์์ฑํ ์ด๋ฏธ์ง๊ฐ ๋ก์ปฌ ์ปจํ ์ด๋ ์คํ ๋ฆฌ์ง์ ๋ก์ปฌ๋ก ์ ์ฅ๋ฉ๋๋ค. KUK ํ๊ฒฝ์์ ์ด ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ๋ค๋ฅธ ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ฃ์ด์ผ ํฉ๋๋ค. Kubernetes์๋ ์ด๋ฌํ ๊ธฐ๋ฅ์ด ์์ผ๋ฏ๋ก dockerhub๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ฒซ ๋ฒ์งธ๋ ๋ฌด๋ฃ์ด๊ณ ๋ ๋ฒ์งธ๋ (๊ฑฐ์) ๋ชจ๋ ์ฌ๋์ด ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
์ด๊ฒ์ ๋ํ ๋งค์ฐ ๊ฐ๋จํ๋ฉฐ ์ฌ๊ธฐ์๋ dockerhub ๊ณ์ ๋ง ํ์ํฉ๋๋ค.
๋ฐ๋ผ์ dockerhub๋ฅผ ์ค์นํ๊ณ ๊ฑฐ๊ธฐ์ ์ด๋ฏธ์ง๋ฅผ ๋ณด๋ ๋๋ค.
3๋จ๊ณ - Kubernetes ์์
"Hello World"๋ฅผ ์คํํ๊ธฐ ์ํด kubernetes ๊ตฌ์ฑ์ ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ์๋ ์ฌ๋ฌ ๊ฐ์ง๊ฐ ์์ง๋ง ๊ฐ์ฅ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๊ฒ ์ต๋๋ค.
๋จผ์ minikube ํด๋ฌ์คํฐ๋ฅผ ์์ํฉ๋๋ค.
minikube start
4๋จ๊ณ - ์ปจํ ์ด๋ ์ด๋ฏธ์ง ๋ฐฐํฌ
์ด์ ์ฝ๋์ ์ปจํ ์ด๋ ์ด๋ฏธ์ง๋ฅผ kubernetes ๊ตฌ์ฑ์ผ๋ก ๋ณํํด์ผ ํฉ๋๋ค. ์ฆ, dockerhub์ ์ปจํ ์ด๋ ์ด๋ฏธ์ง๋ฅผ ๊ฐ๋ฆฌํค๋ ํฌ๋์ ๋ฐฐํฌ ์ ์๊ฐ ํ์ํฉ๋๋ค. ์ด๋ฅผ ์ํํ๋ ๊ฐ์ฅ ์ฌ์ด ๋ฐฉ๋ฒ ์ค ํ๋๋ ์ด๋ฏธ์ง๋ฅผ ๊ฐ๋ฆฌํค๋ ๋ฐฐํฌ ์์ฑ ๋ช ๋ น์ ์คํํ๋ ๊ฒ์ ๋๋ค.
kubectl create deployment hello-quarkus โ image =gcolman/quarkus-hello-world:1.0.0-SNAPSHOT
์ด ๋ช ๋ น์ ์ฌ์ฉํ์ฌ ์ปจํ ์ด๋ ์ด๋ฏธ์ง์ ๋ํ ํฌ๋ ์ฌ์์ ํฌํจํด์ผ ํ๋ ๋ฐฐํฌ ๊ตฌ์ฑ์ ์์ฑํ๋๋ก COOK์ ์ง์ํ์ต๋๋ค. ์ด ๋ช ๋ น์ ๋ํ ์ด ๊ตฌ์ฑ์ Minikube ํด๋ฌ์คํฐ์ ์ ์ฉํ๊ณ ์ปจํ ์ด๋ ์ด๋ฏธ์ง๋ฅผ ๋ค์ด๋ก๋ํ๊ณ ํด๋ฌ์คํฐ์์ ํฌ๋๋ฅผ ์คํํ๋ ๋ฐฐํฌ๋ฅผ ์์ฑํฉ๋๋ค.
5๋จ๊ณ - ์๋น์ค์ ๋ํ ์ก์ธ์ค ์ด๊ธฐ
์ปจํ ์ด๋ ์ด๋ฏธ์ง๊ฐ ๋ฐฐํฌ๋์์ผ๋ฏ๋ก ์ด์ ์ด Restful ์๋น์ค์ ๋ํ ์ธ๋ถ ์ก์ธ์ค๋ฅผ ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์๊ฐํ ์๊ฐ์ ๋๋ค. ์ค์ ๋ก ์ด ์๋น์ค๋ ์ฝ๋์ ํ๋ก๊ทธ๋๋ฐ๋์ด ์์ต๋๋ค.
์ฌ๊ธฐ์๋ ์ฌ๋ฌ ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๋ ธ์ถ ๋ช ๋ น์ ์ฌ์ฉํ์ฌ ์๋น์ค ๋ฐ ์๋ํฌ์ธํธ์ ๊ฐ์ ์ ์ ํ Kubernetes ๊ตฌ์ฑ ์์๋ฅผ ์๋์ผ๋ก ์์ฑํ ์ ์์ต๋๋ค. ์ค์ ๋ก ์ด๊ฒ์ ๋ฐฐํฌ ๊ฐ์ฒด์ ๋ํ ๋ ธ์ถ ๋ช ๋ น์ ์คํํ์ฌ ์ํํ ์์ ์ ๋๋ค.
kubectl expose deployment hello-quarkus โ type=NodePort โ port=8080
์ ์ ๋ ธ์ถ ๋ช ๋ น์ "-type" ์ต์ ์ ๋ํด ์ดํด๋ณด๊ฒ ์ต๋๋ค.
์๋น์ค๋ฅผ ์คํํ๋ ๋ฐ ํ์ํ ๊ตฌ์ฑ ์์๋ฅผ ๋ ธ์ถํ๊ณ ์์ฑํ ๋ ๋ฌด์๋ณด๋ค๋ ์ํํธ์จ์ด ์ ์ ๋คํธ์ํฌ ๋ด๋ถ์ ์๋ hello-quarkus ์๋น์ค์ ์ธ๋ถ์์ ์ฐ๊ฒฐํ ์ ์์ด์ผ ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋งค๊ฐ๋ณ์ ์ ํ ๋ก๋ ๋ฐธ๋ฐ์์ ๊ฐ์ ๊ฒ์ ์์ฑํ๊ณ ์ฐ๊ฒฐํ์ฌ ํธ๋ํฝ์ ํด๋น ๋คํธ์ํฌ๋ก ๋ผ์ฐํ ํ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด, ์ฐ๊ธฐ ์ ํ=๋ก๋๋ฐธ๋ฐ์, Kubernetes ํด๋ฌ์คํฐ์ ์ฐ๊ฒฐํ๊ธฐ ์ํด ํผ๋ธ๋ฆญ ํด๋ผ์ฐ๋ ๋ก๋ ๋ฐธ๋ฐ์๋ฅผ ์๋์ผ๋ก ์ด๊ธฐํํฉ๋๋ค. ๋ฌผ๋ก ์ด๊ฒ์ ํ๋ฅญํ์ง๋ง ์ด๋ฌํ ๊ตฌ์ฑ์ด ํน์ ํผ๋ธ๋ฆญ ํด๋ผ์ฐ๋์ ๋ฐ์ ํ๊ฒ ์ฐ๊ฒฐ๋์ด ์๊ณ ๋ค๋ฅธ ํ๊ฒฝ์ Kubernetes ์ธ์คํด์ค ๊ฐ์ ์ ์กํ๊ธฐ๊ฐ ๋ ์ด๋ ต๋ค๋ ์ ์ ์ดํดํด์ผ ํฉ๋๋ค.
์ฐ๋ฆฌ์ ์์์ ์ ํ=๋ ธ๋ํฌํธ์ฆ, ์ฐ๋ฆฌ ์๋น์ค์ ๋ํ ํธ์ถ์ ๋ ธ๋์ IP ์ฃผ์์ ํฌํธ ๋ฒํธ๋ฅผ ํตํด ์ด๋ฃจ์ด์ง๋๋ค. ์ด ์ต์ ์ ์ฌ์ฉํ๋ฉด ํผ๋ธ๋ฆญ ํด๋ผ์ฐ๋๋ฅผ ์ฌ์ฉํ ์ ์์ง๋ง ๋ช ๊ฐ์ง ์ถ๊ฐ ๋จ๊ณ๊ฐ ํ์ํฉ๋๋ค. ๋จผ์ ์์ฒด ๋ก๋ ๋ฐธ๋ฐ์๊ฐ ํ์ํ๋ฏ๋ก ํด๋ฌ์คํฐ์ NGINX ๋ก๋ ๋ฐธ๋ฐ์๋ฅผ ๋ฐฐํฌํฉ๋๋ค.
6๋จ๊ณ - ๋ก๋ ๋ฐธ๋ฐ์ ์ค์
minikube์๋ ์ธ๊ทธ๋ ์ค ์ปจํธ๋กค๋ฌ์ ๊ฐ์ ์ธ๋ถ ์ก์ธ์ค์ ํ์ํ ๊ตฌ์ฑ ์์๋ฅผ ์ฝ๊ฒ ์์ฑํ ์ ์๋ ์ฌ๋ฌ ํ๋ซํผ ๊ธฐ๋ฅ์ด ์์ต๋๋ค. Minikube๋ Nginx ์์ ์ปจํธ๋กค๋ฌ์ ํจ๊ป ๋ฒ๋ค๋ก ์ ๊ณต๋๋ฉฐ ์ด๋ฅผ ํ์ฑํํ๊ณ ๊ตฌ์ฑํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.
minikube addons enable ingress
์ด์ ๋จ ํ๋์ ๋ช ๋ น์ผ๋ก Minikube ํด๋ฌ์คํฐ ๋ด์์ ์๋ํ Nginx ์์ ์ปจํธ๋กค๋ฌ๋ฅผ ์์ฑํฉ๋๋ค.
ingress-nginx-controller-69ccf5d9d8-j5gs9 1/1 Running 1 33m
7๋จ๊ณ - ์ธ๊ทธ๋ ์ค ์ค์
์ด์ hello-quarkus ์์ฒญ์ ์๋ฝํ๋๋ก Nginx ์์ ์ปจํธ๋กค๋ฌ๋ฅผ ๊ตฌ์ฑํด์ผ ํฉ๋๋ค.
๋ง์ง๋ง์ผ๋ก ์ด ๊ตฌ์ฑ์ ์ ์ฉํด์ผ ํฉ๋๋ค.
kubectl apply -f ingress.yml
์ฐ๋ฆฌ๋ ์ด ๋ชจ๋ ์์ ์ ์์ฒด ์์คํ ์์ ์ํํ๊ณ ์์ผ๋ฏ๋ก ๋ ธ๋์ IP ์ฃผ์๋ฅผ /etc/hosts ํ์ผ์ ์ถ๊ฐํ์ฌ minikube์ ๋ํ http ์์ฒญ์ NGINX ๋ก๋ ๋ฐธ๋ฐ์์ ์ ๋ฌํฉ๋๋ค.
192.168.99.100 hello-quarkus.info
์ด์ Nginx ์ธ๊ทธ๋ ์ค ์ปจํธ๋กค๋ฌ๋ฅผ ํตํด ์ธ๋ถ์์ minikube ์๋น์ค๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๊ธ์์, ์ฌ์ ์ฃ ? ์๋๋ฉด ๋ณ๋ก?
OpenShift์์ ์คํ(์ฝ๋ ์ค๋น ์ปจํ ์ด๋)
์ด์ ์ด ๋ชจ๋ ๊ฒ์ด Red Hat OpenShift Container Platform(OCP)์์ ์ด๋ป๊ฒ ์ํ๋๋์ง ์ดํด๋ณด๊ฒ ์ต๋๋ค.
Minikube์ ๊ฒฝ์ฐ์ ๋ง์ฐฌ๊ฐ์ง๋ก CRC(Code Ready Containers) ํํ์ ๋จ์ผ ๋ ธ๋ OpenShift ํด๋ฌ์คํฐ๊ฐ ํฌํจ๋ ์ฒด๊ณ๋ฅผ ์ ํํฉ๋๋ค. ์ด์ ์๋ minishift๋ผ๊ณ ๋ถ๋ ธ๊ณ OpenShift Origin ํ๋ก์ ํธ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ์ง๋ง ์ง๊ธ์ CRC์ด๋ฉฐ Red Hat์ OpenShift Container Platform์ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค.
์ฃ์กํฉ๋๋ค. "OpenShift๋ ํ๋ฅญํฉ๋๋ค!"๋ผ๊ณ ๋งํ์ง ์์ ์ ์์ต๋๋ค.
์ฒ์์ ์ฐ๋ฆฌ๋ OpenShift์์์ ๊ฐ๋ฐ์ด Kubernetes์์์ ๊ฐ๋ฐ๊ณผ ๋ค๋ฅด์ง ์๋ค๊ณ ์๊ฐํ์ต๋๋ค. ์ฌ์ค, ๊ทธ๊ฒ์ด ๋ฐ๋ก ๊ทธ ๋ฐฉ์์ ๋๋ค. ๊ทธ๋ฌ๋์ด ๊ฒ์๋ฌผ์ ์์ฑํ๋ ๊ณผ์ ์์ ์ฐ๋ฆฌ๋ OpenShift๊ฐ ์์ ๋ ์ผ๋ง๋ ๋ง์ ๋ถํ์ํ ์์ง์์ ๋ง๋ค์ด์ผํ๋์ง ๊ธฐ์ตํ๊ธฐ ๋๋ฌธ์ ๋ค์ ํ ๋ฒ ์๋ฆ๋ต์ต๋๋ค. ์ฐ๋ฆฌ๋ ์ผ์ด ์ฌ์ด ๊ฒ์ ์ข์ํ๋ฉฐ Minikube์ ๋น๊ตํ์ฌ OpenShift์์ ์์ ๋ฅผ ๋ฐฐํฌํ๊ณ ์คํํ๋ ๊ฒ์ด ์ผ๋ง๋ ์ฌ์ด์ง ์ด ๊ฒ์๋ฌผ์ ์์ฑํ๊ฒ ๋ ๋๊ธฐ๋ฅผ ๋ถ์ฌํ์ต๋๋ค.
ํ๋ก์ธ์ค๋ฅผ ์คํํ๊ณ ์ํํด์ผ ํ ์์ ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
๋ฐ๋ผ์ minikube ์์ ์์ ์ฐ๋ฆฌ๋ Docker๋ก ์์ํ์ต๋๋คโฆ ์ ๊น, ๋ ์ด์ ๋จธ์ ์ Docker๋ฅผ ์ค์นํ ํ์๊ฐ ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ๋ก์ปฌ ์์์ด ํ์ํ์ง ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ Maven์ ํ์ํ์ง ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ปจํ
์ด๋ ์ด๋ฏธ์ง๋ฅผ ์ง์ ๋ง๋ค ํ์๊ฐ ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ปจํ
์ด๋ ์ด๋ฏธ์ง์ ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ์ฐพ์ ํ์๊ฐ ์์ต๋๋ค.
์์ ์ปจํธ๋กค๋ฌ๋ฅผ ์ค์นํ ํ์๊ฐ ์์ต๋๋ค.
์์ ๋ ๊ตฌ์ฑํ ํ์๊ฐ ์์ต๋๋ค.
์ดํดํ๋์? OpenShift์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐฐํฌํ๊ณ ์คํํ๋ ค๋ฉด ์์ ์ด๋ ๊ฒ๋ ํ์ํ์ง ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ํ๋ก์ธ์ค ์์ฒด๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
1๋จ๊ณ โ OpenShift ํด๋ฌ์คํฐ ์์ํ๊ธฐ
Red Hat์ Code Ready Containers๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ด๋ ๋ณธ์ง์ ์ผ๋ก Minikube์ ๋์ผํ์ง๋ง ์์ ํ ๋จ์ผ ๋ ธ๋ Openshift ํด๋ฌ์คํฐ๋ง ํฌํจํฉ๋๋ค.
crc start
2๋จ๊ณ - OpenShift ํด๋ฌ์คํฐ์ ์ ํ๋ฆฌ์ผ์ด์ ๊ตฌ์ถ ๋ฐ ๋ฐฐํฌ
๋ฐ๋ก ์ด ๋จ๊ณ์์ OpenShift์ ๋จ์์ฑ๊ณผ ํธ๋ฆฌํจ์ด ๊ทธ ๋ชจ๋ ์๊ด์ ๋๋ฌ๋ ๋๋ค. ๋ชจ๋ Kubernetes ๋ฐฐํฌํ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ํด๋ฌ์คํฐ์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ๋ ๋ฐฉ๋ฒ์ ๋ง์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ KUK์ ๊ฒฝ์ฐ์ ๋ง์ฐฌ๊ฐ์ง๋ก ๊ฐ์ฅ ๊ฐ๋จํ ๊ฒ์ ๊ตฌ์ฒด์ ์ผ๋ก ์ ํํฉ๋๋ค.
OpenShift๋ ํญ์ ์ปจํ ์ด๋ํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๊ณ ์คํํ๊ธฐ ์ํ ํ๋ซํผ์ผ๋ก ๊ตฌ์ถ๋์์ต๋๋ค. ์ปจํ ์ด๋ ๊ตฌ์ถ์ ํญ์ ์ด ํ๋ซํผ์ ํ์์ ์ธ ๋ถ๋ถ์ด๋ฏ๋ก ํด๋น ์์ ์ ์ํ ์ถ๊ฐ Kubernetes ๋ฆฌ์์ค๊ฐ ๋ง์ด ์์ต๋๋ค.
OpenShift์ ์์ค 2 ์ด๋ฏธ์ง(S2I) ํ๋ก์ธ์ค๋ฅผ ์ฌ์ฉํ ๊ฒ์ ๋๋ค. ์ด ํ๋ก์ธ์ค์๋ ์์ค(์ฝ๋ ๋๋ ๋ฐ์ด๋๋ฆฌ)๋ฅผ ๊ฐ์ ธ์ OpenShift ํด๋ฌ์คํฐ์์ ์คํ๋๋ ์ปจํ ์ด๋ํ๋ ์ด๋ฏธ์ง๋ก ๋ณํํ๋ ์ฌ๋ฌ ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
์ด๋ฅผ ์ํด์๋ ๋ ๊ฐ์ง๊ฐ ํ์ํฉ๋๋ค.
- git ์ ์ฅ์์ ์์ค ์ฝ๋
- ์กฐ๋ฆฝ์ด ์ํ๋๋ ๋น๋ ์ด๋ฏธ์ง.
Red Hat๊ณผ ์ปค๋ฎค๋ํฐ์์ ์ ์ง ๊ด๋ฆฌํ๋ ์ด๋ฌํ ์ด๋ฏธ์ง๊ฐ ๋ง์ด ์์ผ๋ฉฐ Java ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๊ณ ์์ผ๋ฏ๋ก OpenJDK ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ ๊ฒ์ ๋๋ค.
OpenShift Developer ๊ทธ๋ํฝ ์ฝ์๊ณผ ๋ช ๋ น์ค ๋ชจ๋์์ S2I ๋น๋๋ฅผ ์คํํ ์ ์์ต๋๋ค. new-app ๋ช ๋ น์ ์ฌ์ฉํ์ฌ ๋น๋ ์ด๋ฏธ์ง์ ์์ค ์ฝ๋๋ฅผ ๊ฐ์ ธ์ฌ ์์น๋ฅผ ์๋ ค์ค๋๋ค.
oc new-app registry.access.redhat.com/ubi8/openjdk-11:latest~https://github.com/gcolman/quarkus-hello-world.git
์ด์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์์ฑ๋์์ต๋๋ค. ์ด๋ฅผ ํตํด S2I ํ๋ก์ธ์ค๋ ๋ค์ ์์ ์ ์ํํ์ต๋๋ค.
- ์ ํ๋ฆฌ์ผ์ด์ ๋น๋์ ๊ด๋ จ๋ ๋ชจ๋ ์ข ๋ฅ์ ์๋น์ค ๋น๋ ํฌ๋๋ฅผ ๋ง๋ค์์ต๋๋ค.
- OpenShift ๋น๋ ๊ตฌ์ฑ์ ์์ฑํ์ต๋๋ค.
- ๋น๋ ์ด๋ฏธ์ง๋ฅผ ๋ด๋ถ OpenShift ๋์ปค ๋ ์ง์คํธ๋ฆฌ์ ๋ค์ด๋ก๋ํ์ต๋๋ค.
- "Hello World"๋ฅผ ๋ก์ปฌ ์ ์ฅ์์ ๋ณต์ ํ์ต๋๋ค.
- ๊ฑฐ๊ธฐ์ maven pom์ด ์๋ ๊ฒ์ ๋ณด๊ณ maven์ผ๋ก ์ฑ์ ์ปดํ์ผํ์ต๋๋ค.
- ์ปดํ์ผ๋ Java ์ ํ๋ฆฌ์ผ์ด์ ์ ํฌํจํ๋ ์ ์ปจํ ์ด๋ ์ด๋ฏธ์ง๋ฅผ ์์ฑํ๊ณ ์ด ์ด๋ฏธ์ง๋ฅผ ๋ด๋ถ ์ปจํ ์ด๋ ๋ ์ง์คํธ๋ฆฌ์ ๋ฃ์ต๋๋ค.
- ํฌ๋, ์๋น์ค ๋ฑ์ ๋ํ ์ฌ์์ผ๋ก Kubernetes ๋ฐฐํฌ๋ฅผ ์์ฑํ์ต๋๋ค.
- ๋ฐฐํฌ ์ปจํ ์ด๋ ์ด๋ฏธ์ง๋ฅผ ์์ํ์ต๋๋ค.
- ์๋น์ค ๋น๋ ํฌ๋๋ฅผ ์ ๊ฑฐํ์ต๋๋ค.
์ด ๋ชฉ๋ก์๋ ๋ง์ ํญ๋ชฉ์ด ์์ง๋ง ์ค์ํ ์ ์ ์ ์ฒด ๋น๋๊ฐ OpenShift ๋ด๋ถ์์๋ง ๋ฐ์ํ๊ณ ๋ด๋ถ Docker ๋ ์ง์คํธ๋ฆฌ๊ฐ OpenShift ๋ด๋ถ์ ์์ผ๋ฉฐ ๋น๋ ํ๋ก์ธ์ค๊ฐ ๋ชจ๋ Kubernetes ๊ตฌ์ฑ ์์๋ฅผ ์์ฑํ๊ณ ํด๋ฌ์คํฐ์์ ์คํํ๋ค๋ ๊ฒ์ ๋๋ค.
์ฝ์์์ S2I ์คํ์ ์๊ฐ์ ์ผ๋ก ๋ชจ๋ํฐ๋งํ๋ฉด ๋น๋ ์ค์ ๋น๋ ํฌ๋๊ฐ ์ด๋ป๊ฒ ์คํ๋๋์ง ํ์ธํ ์ ์์ต๋๋ค.
์ด์ ๋น๋ ํฌ๋์ ๋ก๊ทธ๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ๋จผ์ maven์ด ์์ ์ ์ํํ๊ณ ์ข ์์ฑ์ ๋ค์ด๋ก๋ํ์ฌ Java ์ ํ๋ฆฌ์ผ์ด์ ์ ๋น๋ํ๋ ๋ฐฉ๋ฒ์ ๋ณผ ์ ์์ต๋๋ค.
Maven ๋น๋๊ฐ ์๋ฃ๋๋ฉด ์ปจํ ์ด๋ ์ด๋ฏธ์ง์ ๋น๋๊ฐ ์์๋๊ณ ์ด ๋น๋๋ ์ด๋ฏธ์ง๊ฐ ๋ด๋ถ ์ ์ฅ์๋ก ์ ์ก๋ฉ๋๋ค.
๋ชจ๋ ๊ฒ, ์กฐ๋ฆฝ ๊ณผ์ ์ด ์๋ฃ๋์์ต๋๋ค. ์ด์ ์ ํ๋ฆฌ์ผ์ด์ ์ ํฌ๋์ ์๋น์ค๊ฐ ํด๋ฌ์คํฐ์์ ์์๋์๋์ง ํ์ธํ๊ฒ ์ต๋๋ค.
oc get service
๊ทธ๊ฒ ๋ค์ผ. ๊ทธ๋ฆฌ๊ณ ํ ํ๋ง ์์ต๋๋ค. ์ฐ๋ฆฌ๊ฐ ํด์ผ ํ ์ผ์ ์ธ๋ถ ์ก์ธ์ค๋ฅผ ์ํด ์ด ์๋น์ค๋ฅผ ๋ ธ์ถํ๋ ๊ฒ์ ๋๋ค.
3๋จ๊ณ - ์ธ๋ถ์์ ์ก์ธ์คํ ์ ์๋๋ก ์๋น์ค๋ฅผ ๋ ธ์ถํฉ๋๋ค.
KUK์ ๊ฒฝ์ฐ์ ๋ง์ฐฌ๊ฐ์ง๋ก OpenShift ํ๋ซํผ์์ "Hello World"๋ ์ธ๋ถ ํธ๋ํฝ์ ํด๋ฌ์คํฐ ๋ด๋ถ์ ์๋น์ค๋ก ์๋ดํ๊ธฐ ์ํ ๋ผ์ฐํฐ๊ฐ ํ์ํฉ๋๋ค. OpenShift์์๋ ์ด๊ฒ์ด ๋งค์ฐ ์ฝ์ต๋๋ค. ๋จผ์ ๊ธฐ๋ณธ์ ์ผ๋ก HAProxy ๋ผ์ฐํ ๊ตฌ์ฑ ์์๊ฐ ํด๋ฌ์คํฐ์ ์ค์น๋ฉ๋๋ค(๋์ผํ NGINX๋ก ๋ณ๊ฒฝ ๊ฐ๋ฅ). ๋์งธ, Routes๋ผ๋ ํน๋ณํ๊ณ ๊ณ ๋๋ก ๊ตฌ์ฑ ๊ฐ๋ฅํ ๋ฆฌ์์ค๊ฐ ์๋๋ฐ, ์ด๋ ์ค๋๋ Kubernetes์ Ingress ๊ฐ์ฒด๋ฅผ ์ฐ์์ํต๋๋ค(์ฌ์ค OpenShift์ Routes๋ Ingress ๊ฐ์ฒด์ ์ค๊ณ์ ํฐ ์ํฅ์ ๋ฏธ์ณค์ผ๋ฉฐ ์ด์ OpenShift์์ ์ฌ์ฉํ ์ ์์ต๋๋ค). World" ๋ฐ ๊ธฐํ ๊ฑฐ์ ๋ชจ๋ ๊ฒฝ์ฐ์ ์ถ๊ฐ ๊ตฌ์ฑ ์์ด ํ์ค ๊ฒฝ๋ก๋ก ์ถฉ๋ถํฉ๋๋ค.
"Hello World"์ ๋ํ ๋ผ์ฐํ ๊ฐ๋ฅํ FQDN์ ์์ฑํ๋ ค๋ฉด(์, OpenShift์๋ ์๋น์ค ์ด๋ฆ๋ณ ๋ผ์ฐํ ์ ์ํ ์์ฒด DNS๊ฐ ์์) ์๋น์ค๋ฅผ ๋ ธ์ถํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.
oc expose service quarkus-hello-world
์๋ก ์์ฑ๋ ๊ฒฝ๋ก๋ฅผ ๋ณด๋ฉด FQDN ๋ฐ ๊ธฐํ ๋ผ์ฐํ ์ ๋ณด๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค.
oc get route
๋ง์ง๋ง์ผ๋ก ๋ธ๋ผ์ฐ์ ์์ ์๋น์ค์ ์ก์ธ์คํฉ๋๋ค.
ํ์ง๋ง ์ง๊ธ์ ์ ๋ง ์ฌ์ ์ต๋๋ค!
์ฐ๋ฆฌ๋ ์ฟ ๋ฒ๋คํฐ์ค์ ์ด ๊ธฐ์ ๋ก ํ ์ ์๋ ๋ชจ๋ ๊ฒ์ ์ข์ํ๋ฉฐ ๋จ์์ฑ๊ณผ ๊ฐ๋ฒผ์๋ ์ข์ํฉ๋๋ค. Kubernetes๋ ๋ถ์ฐ๋๊ณ ํ์ฅ ๊ฐ๋ฅํ ์ปจํ ์ด๋๋ฅผ ๋งค์ฐ ์ฝ๊ฒ ์๋ํ๋๋ก ์ค๊ณ๋์์ง๋ง ๊ทธ ๋จ์์ฑ์ ๋ ์ด์ ์ ํ๋ฆฌ์ผ์ด์ ์ ํ๋ก๋์ ์ผ๋ก ๊ฐ์ ธ์ค๊ธฐ์ ์ถฉ๋ถํ์ง ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฐ๋ก ์ฌ๊ธฐ์์ OpenShift๊ฐ ๋ฑ์ฅํฉ๋๋ค. OpenShift๋ ์๋์ ๋ฐ๋ง์ถ๊ณ ์ฃผ๋ก ๊ฐ๋ฐ์์๊ฒ ์ด์ ์ ๋ง์ถ Kubernetes๋ฅผ ์ ๊ณตํฉ๋๋ค. S2I, ODI, ๊ฐ๋ฐ์ ํฌํธ, OpenShift ์ด์์ ํ๋ ์์ํฌ, IDE ํตํฉ, ๊ฐ๋ฐ์ ์นดํ๋ก๊ทธ, Helm ํตํฉ, ๋ชจ๋ํฐ๋ง ๋ฑ์ ๋๊ตฌ ์์ฑ์ ํฌํจํ์ฌ ํนํ ๊ฐ๋ฐ์๋ฅผ ์ํด OpenShift ํ๋ซํผ์ ๋ง์ถคํํ๊ธฐ ์ํด ๋ง์ ๋ ธ๋ ฅ์ ๊ธฐ์ธ์์ต๋๋ค.
์ด ๊ธฐ์ฌ๊ฐ ๊ทํ์๊ฒ ํฅ๋ฏธ๋กญ๊ณ ์ ์ฉํ๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ๋ํ ํฌํธ์ OpenShift ํ๋ซํผ์์ ๊ฐ๋ฐํ๋ ๋ฐ ์ ์ฉํ ์ถ๊ฐ ๋ฆฌ์์ค, ์๋ฃ ๋ฐ ๊ธฐํ ํญ๋ชฉ์ ์ฐพ์ ์ ์์ต๋๋ค.
์ถ์ฒ : habr.com