Knative - ์„œ๋ฒ„๋ฆฌ์Šค ์ง€์›์ด ํฌํ•จ๋œ k8s ๊ธฐ๋ฐ˜ Platform-as-a-Service

Knative - ์„œ๋ฒ„๋ฆฌ์Šค ์ง€์›์ด ํฌํ•จ๋œ k8s ๊ธฐ๋ฐ˜ Platform-as-a-Service

Kubernetes๋Š” ์˜์‹ฌํ•  ์—ฌ์ง€ ์—†์ด ์ปจํ…Œ์ด๋„ˆ ๋ฐฐํฌ๋ฅผ ์œ„ํ•œ ์ฃผ์š” ํ”Œ๋žซํผ์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. API์™€ ์‚ฌ์šฉ์ž ์ง€์ • ๋ฆฌ์†Œ์Šค๋กœ API๋ฅผ ํ™•์žฅํ•˜๋Š” ์‚ฌ์šฉ์ž ์ง€์ • ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฑฐ์˜ ๋ชจ๋“  ๊ฒƒ์„ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์‚ฌ์šฉ์ž๋Š” ์—ฌ์ „ํžˆ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ฐฐํฌ, ๊ตฌ์„ฑ, ๊ด€๋ฆฌ ๋ฐ ํ™•์žฅํ•˜๋Š” ์ •ํ™•ํ•œ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์„ธ๋ถ€์ ์ธ ๊ฒฐ์ •์„ ๋‚ด๋ ค์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ™•์žฅ, ๋ณดํ˜ธ, ํŠธ๋ž˜ํ”ฝ ํ๋ฆ„ ๋ฌธ์ œ๋Š” ์—ฌ์ „ํžˆ ์‚ฌ์šฉ์ž ์žฌ๋Ÿ‰์— ๋‹ฌ๋ ค ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” Kubernetes๋ฅผ Cloud Foundry ๋ฐ Heroku์™€ ๊ฐ™์€ ๊ธฐ์กด PaaS(Platform as a Service)์™€ ์ฐจ๋ณ„ํ™”ํ•ฉ๋‹ˆ๋‹ค.

ํ”Œ๋žซํผ์€ ๋‹จ์ˆœํ™”๋œ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ ๊ฐœ๋ณ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ค์ •์— ๊ฐ€์žฅ ์ž์ฃผ ์ฐธ์—ฌํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์ž๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. ๋ผ์šฐํŒ…, ๋ฐฐํฌ ๋ฐ ๋ฉ”ํŠธ๋ฆญ์€ ๊ธฐ๋ณธ PaaS ์‹œ์Šคํ…œ์„ ํ†ตํ•ด ์‚ฌ์šฉ์ž์—๊ฒŒ ํˆฌ๋ช…ํ•˜๊ฒŒ ๊ด€๋ฆฌ๋ฉ๋‹ˆ๋‹ค.

์†Œ์Šค์—์„œ ๋ฐฐ์†ก๊นŒ์ง€์˜ ์›Œํฌํ”Œ๋กœ์šฐ๋Š” PaaS์—์„œ ์‚ฌ์šฉ์ž ์ง€์ • ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€ ์ƒ์„ฑ, ๋ฐฐํฌ, ์ˆ˜์‹  ํŠธ๋ž˜ํ”ฝ์— ๋Œ€ํ•œ ์ƒˆ ๊ฒฝ๋กœ ๋ฐ DNS ํ•˜์œ„ ๋„๋ฉ”์ธ ์„ค์ •์„ ํ†ตํ•ด ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค. ์ด ๋ชจ๋“  ๊ฒƒ์€ ๋ช…๋ น์— ๋”ฐ๋ผ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค git push.

Kubernetes๋Š” (์˜๋„์ ์œผ๋กœ) ํ•ด๋‹น ํ”Œ๋žซํผ์˜ ํ•ต์‹ฌ ๊ตฌ์„ฑ ์š”์†Œ๋งŒ ์ œ๊ณตํ•˜๋ฏ€๋กœ ์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ ์ž์œ ๋กญ๊ฒŒ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์–ด๋–ป๊ฒŒ ์ผˆ์‹œ ํ•˜์ดํƒ€์›Œ๊ฐ€ ๋งํ–ˆ์Šต๋‹ˆ๋‹ค.:

Kubernetes๋Š” ํ”Œ๋žซํผ ๊ตฌ์ถ•์„ ์œ„ํ•œ ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค. ์‹œ์ž‘ํ•˜๊ธฐ์—๋Š” ๊ฐ€์žฅ ์ข‹์€ ์œ„์น˜์ด์ง€๋งŒ ๋งˆ๋ฌด๋ฆฌํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.

๊ฒฐ๊ณผ์ ์œผ๋กœ ์šฐ๋ฆฌ๋Š” OpenShift ๋ฐ Rancher์™€ ๊ฐ™์ด Kubernetes์šฉ PaaS๋ฅผ ์ƒ์„ฑํ•˜๋ ค๋Š” ํ˜ธ์ŠคํŒ… ํšŒ์‚ฌ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์—ฌ๋Ÿฌ Kubernetes ๋นŒ๋“œ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Kube-PaaS ์‹œ์žฅ์ด ์„ฑ์žฅํ•˜๋Š” ๊ฐ€์šด๋ฐ Google๊ณผ Pivotal์ด 2018๋…„ XNUMX์›” ์„ค๋ฆฝํ•œ Knative๊ฐ€ ๋ง์— ์ง„์ž…ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Knative๋Š” IBM, RedHat ๋ฐ Solo.im๊ณผ ๊ฐ™์€ ๋‹ค๋ฅธ ํšŒ์‚ฌ์˜ ๋„์›€์„ ๋ฐ›์•„ Google๊ณผ Pivotal ๊ฐ„์˜ ๊ณต๋™ ์ž‘์—…์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์„œ๋ฒ„๋ฆฌ์Šค ์ปดํ“จํŒ… ๊ธฐ๋ฐ˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋Œ€ํ•œ ์ตœ๊ณ ์˜ ์ง€์›์„ ํ†ตํ•ด Kubernetes์™€ ์œ ์‚ฌํ•œ PaaS ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. Kubernetes ๋นŒ๋“œ์™€ ๋‹ฌ๋ฆฌ Knative๋Š” ํ˜ธํ™˜๋˜๋Š” Kubernetes ํด๋Ÿฌ์Šคํ„ฐ์— ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์œผ๋กœ ์„ค์น˜๋˜๊ณ  ์‚ฌ์šฉ์ž ๋ฆฌ์†Œ์Šค๋ฅผ ํ†ตํ•ด ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

K๋„ค์ดํ‹ฐ๋ธŒ๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”?

Knative๋Š” "์ตœ์‹  ์„œ๋ฒ„๋ฆฌ์Šค ์ปดํ“จํŒ…์„ ์‚ฌ์šฉํ•˜์—ฌ ์›Œํฌ๋กœ๋“œ๋ฅผ ์ œ๊ณตํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ Kubernetes ๊ธฐ๋ฐ˜ ํ”Œ๋žซํผ"์œผ๋กœ ์„ค๋ช…๋ฉ๋‹ˆ๋‹ค. Knative๋Š” ์ž์ฒด์ ์œผ๋กœ ์ด๋Ÿฌํ•œ ํ”Œ๋žซํผ์„ ์ œ๊ณตํ•˜๋Š” ๋™์‹œ์— ๋™์‹œ HTTP ์š”์ฒญ์— ๋น„๋ก€ํ•˜์—ฌ ์ปจํ…Œ์ด๋„ˆ ํฌ๊ธฐ๋ฅผ ์ ๊ทน์ ์œผ๋กœ ์ž๋™ ์กฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์„œ๋น„์Šค๋Š” ๊ฒฐ๊ตญ 0์œผ๋กœ ์ถ•์†Œ๋˜์–ด ์„œ๋ฒ„๋ฆฌ์Šค ์Šคํƒ€์ผ์˜ ์˜จ๋””๋งจ๋“œ ํ™•์žฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

Knative๋Š” Kubernetes ํด๋Ÿฌ์Šคํ„ฐ์— ์„ค์น˜๋˜๊ณ  ๋‹ค์Œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ์ปจํŠธ๋กค๋Ÿฌ ์„ธํŠธ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

  • ์†Œ์Šค ์ฝ”๋“œ์—์„œ ์ปจํ…Œ์ด๋„ˆํ™”๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ์ถ•(๊ตฌ์„ฑ ์š”์†Œ์—์„œ ์ œ๊ณต) ์ง“๋‹ค),
  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋“ค์–ด์˜ค๋Š” ํŠธ๋ž˜ํ”ฝ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ์ œ๊ณต(๊ตฌ์„ฑ ์š”์†Œ์—์„œ ์ œ๊ณต) ํ”ผ๋ณต์žฌ),
  • ํ•„์š”์— ๋”ฐ๋ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ œ๊ณต ๋ฐ ์ž๋™ ํ™•์žฅ(๊ตฌ์„ฑ์š”์†Œ์—์„œ๋„ ์ œ๊ณต) ํ”ผ๋ณต์žฌ),
  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰์œผ๋กœ ์ด์–ด์ง€๋Š” ์ด๋ฒคํŠธ ์†Œ์Šค ์‹๋ณ„(๊ตฌ์„ฑ์š”์†Œ์—์„œ ์ œ๊ณต) ์ด๋ฒคํŠธ).

ํ•ต์‹ฌ ๊ตฌ์„ฑ ์š”์†Œ๋Š” ๊ด€๋ฆฌํ˜• ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋Œ€ํ•œ ํ”„๋กœ๋น„์ €๋‹, ์ž๋™ ํฌ๊ธฐ ์กฐ์ • ๋ฐ ํŠธ๋ž˜ํ”ฝ ๊ด€๋ฆฌ๋ฅผ ์ œ๊ณตํ•˜๋Š” Serving์ž…๋‹ˆ๋‹ค. Knative๋ฅผ ์„ค์น˜ํ•œ ํ›„์—๋„ Kubernetes API์— ๋Œ€ํ•œ ์ „์ฒด ์•ก์„ธ์Šค ๊ถŒํ•œ์ด ์žˆ์œผ๋ฏ€๋กœ ์‚ฌ์šฉ์ž๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ‰์†Œ์˜ ์ด๋Ÿฌํ•œ ์„œ๋น„์Šค์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•œ API ๊ธฐ๋ณธ ์š”์†Œ(๋ชจ๋“ˆ, ์„œ๋น„์Šค ๋“ฑ)๋กœ ์ž‘์—…ํ•˜์—ฌ Knative ์„œ๋น„์Šค๋ฅผ ๋””๋ฒ„๊น…ํ•˜๋Š” ์—ญํ• ๋„ ํ•ฉ๋‹ˆ๋‹ค.

Serving์˜ ๋„์›€์œผ๋กœ ๋ธ”๋ฃจ-๊ทธ๋ฆฐ ํŠธ๋ž˜ํ”ฝ ๋ผ์šฐํŒ…๋„ ์ž๋™ํ™”๋˜์–ด ์‚ฌ์šฉ์ž๊ฐ€ ์—…๋ฐ์ดํŠธ๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฒ„์ „์„ ์ œ๊ณตํ•  ๋•Œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ƒˆ ๋ฒ„์ „๊ณผ ์ด์ „ ๋ฒ„์ „ ๊ฐ„์˜ ํŠธ๋ž˜ํ”ฝ ๋ถ„๋ฆฌ๊ฐ€ ๋ณด์žฅ๋ฉ๋‹ˆ๋‹ค.

Knative ์ž์ฒด๋Š” ํ˜ธํ™˜๋˜๋Š” ์ˆ˜์‹  ์ปจํŠธ๋กค๋Ÿฌ ์„ค์น˜์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค. ์ด ๊ธ€์„ ์“ฐ๋Š” ์‹œ์ ์—์„œ๋Š” ์ง€์›๋ฉ๋‹ˆ๋‹ค. Gloo API ๊ฒŒ์ดํŠธ์›จ์ด ะธ Istio ์„œ๋น„์Šค ๋ฉ”์‹œ. Knative ๊ด€๋ฆฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์œผ๋กœ ํŠธ๋ž˜ํ”ฝ์„ ๋ผ์šฐํŒ…ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ˆ˜์‹ ์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

Istio Service Mesh๋Š” Knative๊ฐ€ ๊ฒŒ์ดํŠธ์›จ์ด์—๋งŒ ์˜์กดํ•˜๊ธฐ ๋•Œ๋ฌธ์— Istio ์ œ์–ดํŒ์„ ์„ค์น˜ํ•˜์ง€ ์•Š๊ณ  ์‚ฌ์šฉํ•ด ๋ณด๋ ค๋Š” Knative ์‚ฌ์šฉ์ž์—๊ฒŒ ํฐ ์ข…์†์„ฑ์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ์ด์œ ๋กœ ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ์šฉ์ž๋Š” Istio์™€ ์œ ์‚ฌํ•œ ๊ธฐ๋Šฅ ์„ธํŠธ(Knative๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๋ชฉ์ )๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋™์‹œ์— ํ›จ์”ฌ ์ ์€ ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์šด์˜ ๋น„์šฉ์„ ์ ˆ๊ฐํ•˜๋Š” Knative์˜ ๊ฒŒ์ดํŠธ์›จ์ด๋กœ Gloo๋ฅผ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค.

์Šคํƒ ๋“œ์—์„œ Knative๊ฐ€ ์‹ค์ œ๋กœ ์ž‘๋™ํ•˜๋Š”์ง€ ํ…Œ์ŠคํŠธํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. GKE์—์„œ ์‹คํ–‰๋˜๋Š” ์ƒˆ๋กœ ์„ค์น˜๋œ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

kubectl get namespace
NAME          STATUS   AGE
default       Active   21h
kube-public   Active   21h
kube-system   Active   21h

Knative์™€ Gloo ์„ค์น˜๋ฅผ ์‹œ์ž‘ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด ์ž‘์—…์€ ์–ด๋–ค ์ˆœ์„œ๋กœ๋“  ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

# ัั‚ะฐะฒะธะผ Knative-Serving
kubectl apply -f 
 https://github.com/knative/serving/releases/download/v0.8.0/serving-core.yaml
namespace/knative-serving created
# ...
# ัั‚ะฐะฒะธะผ Gloo
kubectl apply -f 
  https://github.com/solo-io/gloo/releases/download/v0.18.22/gloo-knative.yaml
namespace/gloo-system created
# ...

๋ชจ๋“  Pod๊ฐ€ '์‹คํ–‰ ์ค‘' ์ƒํƒœ์ธ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

kubectl get pod -n knative-serving
NAME                              READY   STATUS    RESTARTS   AGE
activator-5dd55958cc-fkp7r        1/1     Running   0          7m32s
autoscaler-fd66459b7-7d5s2        1/1     Running   0          7m31s
autoscaler-hpa-85b5667df4-mdjch   1/1     Running   0          7m32s
controller-85c8bb7ffd-nj9cs       1/1     Running   0          7m29s
webhook-5bd79b5c8b-7czrm          1/1     Running   0          7m29s
kubectl get pod -n gloo-system
NAME                                      READY   STATUS    RESTARTS   AGE
discovery-69548c8475-fvh7q                1/1     Running   0          44s
gloo-5b6954d7c7-7rfk9                     1/1     Running   0          45s
ingress-6c46cdf6f6-jwj7m                  1/1     Running   0          44s
knative-external-proxy-7dd7665869-x9xkg   1/1     Running   0          44s
knative-internal-proxy-7775476875-9xvdg   1/1     Running   0          44s

Gloo๋Š” ๋ผ์šฐํŒ…ํ•  ์ค€๋น„๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ž๋™ ํ™•์žฅ Knative ์„œ๋น„์Šค(kservice๋ผ๊ณ  ํ•จ)๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ํŠธ๋ž˜ํ”ฝ์„ ๋ผ์šฐํŒ…ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

Knative ์„œ๋น„์Šค๋Š” ๊ธฐ์กด ๋ฐฐํฌ+์„œ๋น„์Šค+์ธ๊ทธ๋ ˆ์Šค ๋ชจ๋ธ๋ณด๋‹ค Kubernetes์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ œ๊ณตํ•˜๋Š” ๋” ์‰ฌ์šด ๊ฒฝ๋กœ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋‹ค์Œ ์˜ˆ์ œ๋ฅผ ๋‹ค๋ฃฐ ๊ฒƒ์ž…๋‹ˆ๋‹ค:

apiVersion: serving.knative.dev/v1alpha1
kind: Service
metadata:
 name: helloworld-go
 namespace: default
spec:
 template:
   spec:
     containers:
       - image: gcr.io/knative-samples/helloworld-go
         env:
           - name: TARGET
             Value: Knative user

์ด๊ฒƒ์„ ํŒŒ์ผ์— ๋ณต์‚ฌํ•œ ๋‹ค์Œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด Kubernetes ํด๋Ÿฌ์Šคํ„ฐ์— ์ ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

kubectl apply -f ksvc.yaml -n default

'helloworld-go'๋ฅผ ์ „๋‹ฌํ•œ ํ›„ ํด๋Ÿฌ์Šคํ„ฐ์—์„œ Knative๊ฐ€ ์ƒ์„ฑํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. kservice:

kubectl get pod -n default
NAME                                              READY   STATUS    RESTARTS   AGE
helloworld-go-fjp75-deployment-678b965ccb-sfpn8   2/2     Running   0          68s

kservice๊ฐ€ ๋ฐฐํฌ๋˜๋ฉด 'helloworld-go' ์ด๋ฏธ์ง€๊ฐ€ ํฌํ•จ๋œ ํฌ๋“œ๊ฐ€ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค. ํŠธ๋ž˜ํ”ฝ์ด ์—†์œผ๋ฉด ํฌ๋“œ ์ˆ˜๊ฐ€ 0์œผ๋กœ ์ค„์–ด๋“ญ๋‹ˆ๋‹ค. ๋ฐ˜๋Œ€๋กœ ๋™์‹œ ์š”์ฒญ ์ˆ˜๊ฐ€ ํŠน์ • ๊ตฌ์„ฑ ๊ฐ€๋Šฅํ•œ ์ž„๊ณ„๊ฐ’์„ ์ดˆ๊ณผํ•˜๋ฉด Pod ์ˆ˜๊ฐ€ ์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

kubectl get ingresses.networking.internal.knative.dev -n default
NAME            READY   REASON
helloworld-go   True

Knative๋Š” ๋‚ด๋ถ€ Knative API์˜ ํŠน์ˆ˜ '์ˆ˜์‹ ' ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜์‹ ์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. Gloo๋Š” ์ด API๋ฅผ ๊ตฌ์„ฑ์œผ๋กœ ์‚ฌ์šฉํ•˜์—ฌ ๋ธ”๋ฃจ-๊ทธ๋ฆฐ ๋ฐฐํฌ ๋ชจ๋ธ, ์ž๋™ TLS ์‹œํ–‰, ์‹œ๊ฐ„ ์ดˆ๊ณผ ๋ฐ ๊ธฐํƒ€ ๊ณ ๊ธ‰ ๋ผ์šฐํŒ… ๊ธฐ๋Šฅ์„ ํฌํ•จํ•œ PaaS์™€ ์œ ์‚ฌํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์–ผ๋งˆ ํ›„, Pod๊ฐ€ ์‚ฌ๋ผ์ง„ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์ˆ˜์‹  ํŠธ๋ž˜ํ”ฝ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์—).

kubectl get pod -n default

No resources found.
kubectl get deployment -n default
NAME                             DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
helloworld-go-fjp75-deployment   0         0         0            0           9m46s

๋งˆ์ง€๋ง‰์œผ๋กœ ์šฐ๋ฆฌ๋Š” ๊ทธ๋“ค์—๊ฒŒ ๋‹ค๊ฐ€๊ฐ€๋ ค๊ณ  ๋…ธ๋ ฅํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ Knative Proxy์˜ URL์„ ์‰ฝ๊ณ  ์‰ฝ๊ฒŒ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. glooctl:

glooctl proxy url --name knative-external-proxy
http://35.190.151.188:80

์„ค์น˜ํ•˜์ง€ ์•Š๊ณ  glooctl kube ์„œ๋น„์Šค์—์„œ ์ฃผ์†Œ์™€ ํฌํŠธ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

kubectl get svc -n gloo-system knative-external-proxy
NAME                     TYPE           CLUSTER-IP     EXTERNAL-IP      PORT(S)                      AGE
knative-external-proxy   LoadBalancer   10.16.11.157   35.190.151.188   80:32168/TCP,443:30729/TCP   77m

cURL์„ ์‚ฌ์šฉํ•˜์—ฌ ์ผ๋ถ€ ๋ฐ์ดํ„ฐ๋ฅผ ์‹คํ–‰ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

curl -H "Host: helloworld-go.default.example.com" http://35.190.151.188
Hello Knative user!

Knative๋Š” Gloo์˜ ๊ณ ์„ฑ๋Šฅ ํ’€ ์Šคํƒ API ๊ฒŒ์ดํŠธ์›จ์ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฆ‰์‹œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ Kubernetes๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ๊ฑฐ์˜ PaaS์— ๊ฐ€๊นŒ์šด ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฒŒ์‹œ๋ฌผ์—์„œ๋Š” Knative์˜ ๊ด‘๋ฒ”์œ„ํ•œ ์‚ฌ์šฉ์ž ์ •์˜ ์˜ต์…˜๊ณผ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์„ ํ‘œ๋ฉด์ ์œผ๋กœ๋งŒ ์‚ดํŽด๋ณด์•˜์Šต๋‹ˆ๋‹ค. ๊ธ€๋ฃจ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€!

Knative๋Š” ์•„์ง ์ดˆ๊ธฐ ํ”„๋กœ์ ํŠธ์ž„์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ํŒ€์€ 6์ฃผ๋งˆ๋‹ค ์ƒˆ ๋ฒ„์ „์„ ์ถœ์‹œํ•˜๊ณ  ์ž๋™ TLS ๋ฐฐํฌ, ์ œ์–ดํŒ ์ž๋™ ํฌ๊ธฐ ์กฐ์ •๊ณผ ๊ฐ™์€ ๊ณ ๊ธ‰ ๊ธฐ๋Šฅ ๊ตฌํ˜„์ด ์‹œ์ž‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ํด๋ผ์šฐ๋“œ ํšŒ์‚ฌ ๊ฐ„์˜ ํ˜‘์—…๊ณผ Google์˜ ์ƒˆ๋กœ์šด Cloud Run ์ œํ’ˆ์˜ ๊ธฐ๋ฐ˜์œผ๋กœ Knative๊ฐ€ Kubernetes์˜ ์„œ๋ฒ„๋ฆฌ์Šค ์ปดํ“จํŒ… ๋ฐ PaaS๋ฅผ ์œ„ํ•œ ๊ธฐ๋ณธ ์˜ต์…˜์ด ๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค. ๋‰ด์Šค๋ฅผ ํŒ”๋กœ์šฐํ•˜์„ธ์š”!

SouthBridge ํŽธ์ง‘์ž๋กœ๋ถ€ํ„ฐ
๋…์ž์˜ ์˜๊ฒฌ์€ ์šฐ๋ฆฌ์—๊ฒŒ ์ค‘์š”ํ•˜๋ฏ€๋กœ Knative, Kubernetes, ์„œ๋ฒ„๋ฆฌ์Šค ์ปดํ“จํŒ…์— ๋Œ€ํ•œ ํ–ฅํ›„ ๊ธฐ์‚ฌ์™€ ๊ด€๋ จ๋œ ๊ฐ„๋‹จํ•œ ์„ค๋ฌธ ์กฐ์‚ฌ์— ์ฐธ์—ฌํ•ด ์ฃผ์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

๋“ฑ๋ก๋œ ์‚ฌ์šฉ์ž๋งŒ ์„ค๋ฌธ ์กฐ์‚ฌ์— ์ฐธ์—ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋กœ๊ทธ์ธ์ œ๋ฐœ

Knative ๋ฐ ์„œ๋ฒ„๋ฆฌ์Šค ์ปดํ“จํŒ…์— ๋Œ€ํ•œ ๊ธฐ์‚ฌ์™€ ๊ฐ€์ด๋“œ๋ฅผ ๊ณ„์† ์ž‘์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

  • ์ œ๋ฐœ.

  • ๊ณ ๋งˆ์›Œ, ํ•˜์ง€๋งˆ.

28๋ช…์˜ ์‚ฌ์šฉ์ž๊ฐ€ ํˆฌํ‘œํ–ˆ์Šต๋‹ˆ๋‹ค. 4๋ช…์˜ ์‚ฌ์šฉ์ž๊ฐ€ ๊ธฐ๊ถŒํ–ˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€