์ขŒ์ถฉ์šฐ๋Œ! Knative ์„ค์น˜ ์ˆ˜๋‚œ๊ธฐ. Istio๋ฅผ ๋„คํŠธ์›Œํ‚น ๋ฐฑ์—”๋“œ๋กœ ์‚ฌ์šฉํ•˜๋Š” Knative โ›ต๏ธ

11 minute read

์ด ๊ธ€์„ ์ž‘์„ฑํ•˜๋Š” 24๋…„ 6์›”์—” Knative v1.14.1 ๋ฒ„์ „์ด ์ตœ์‹  ๋ฒ„์ „์ž…๋‹ˆ๋‹ค. Apple M3 ๋งฅ๋ถ(Sonoma 14.5)์—์„œ Rancher Desktop(1.14.1) ํ†ตํ•ด Local Kubernetes Cluster ๊ตฌ์„ฑํ•˜์—ฌ ์ง„ํ–‰ํ•˜์˜€์Šต๋‹ˆ๋‹ค. K8s ๋ฒ„์ „์€ 1.28.9์ž…๋‹ˆ๋‹ค.

Check Knative Compatibility

Knative๋ฅผ ์„ค์น˜ํ•˜๊ฑฐ๋‚˜ ๋ฒ„์ „ ์—…๊ทธ๋ ˆ์ด๋“œ ํ•  ๋•Œ๋Š” K8s์™€์˜ ํ˜ธํ™˜์„ฑ์„ ๊ณ ๋ คํ•ด์•ผ ํ•œ๋‹ค. Knative์˜ Release Support ๋ฌธ์„œ๋ฅผ ๋ณด๋ฉด, ํ˜ธํ™˜๋˜๋Š” minimum k8s version์ด ๋ช…์‹œ๋˜์–ด ์žˆ๋‹ค.

์ด๋ฒˆ ๊ธ€์—์„œ ์‚ฌ์šฉํ•˜๋Š” Knative ๋ฒ„์ „์€ 1.14.1 ๋ฒ„์ „์ด๋‹ค. ์š” ๋ฒ„์ „์€ ์ตœ์†Œ K8s 1.28 ๋ฒ„์ „์„ ์š”๊ตฌํ•œ๋‹ค. ์•„๋งˆ, K8s ๋ฒ„์ „์ด ์˜ฌ๋ผ๊ฐ€๋ฉด์„œ K8s API ๊ทœ๊ฒฉ์ด๋‚˜ ๊ธฐ๋Šฅ๋“ค์ด ์ถ”๊ฐ€๋˜๊ฑฐ๋‚˜ ๋ณ€๊ฒฝ ๋˜๋Š”๋ฐ, Knative์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋กœ์ง์—์„œ ํ•ด๋‹น ๋ฒ„์ „ ์ด์ƒ๋ถ€ํ„ฐ ์ง€์›ํ•˜๋Š” ๊ฒƒ๋“ค์ด ์žˆ๋Š”๊ฐ€๋ณด๋‹ค.

Using YAMLs

Install knative CRDs

kubectl apply -f https://github.com/knative/serving/releases/download/knative-v1.14.1/serving-crds.yaml

Install Serving Core

kubectl apply -f https://github.com/knative/serving/releases/download/knative-v1.14.1/serving-core.yaml

์œ„์˜ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด Knative์˜ serving core ์ปดํฌ๋„ŒํŠธ๋ฅผ ์„ค์น˜ํ•œ๋‹ค. core ์ปดํฌ๋„ŒํŠธ๋Š” knative-serving ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ๋””ํ”Œ๋กœ์ด ๋œ๋‹ค.

$ kgp -n knative-serving
NAME                         READY   STATUS    RESTARTS   AGE
webhook-5676f857c4-vp4bw     1/1     Running   0          75s
autoscaler-d57d974cb-8fnxb   1/1     Running   0          75s
controller-b8b47f9b9-jd8fw   1/1     Running   0          75s
activator-5d7f9fc58d-bwtk2   1/1     Running   0          75s

๋””ํ”Œ๋กœ์ด๋œ ๊ฐ ์ปดํฌ๋„ŒํŠธ๋“ค์ด ์–ด๋–ค ๊ธฐ๋Šฅ์„ ํ•˜๋Š”์ง€ ์ž์„ธํ•œ ๋‚ด์šฉ์€ Knative Architecture์— ๋Œ€ํ•ด ๋”ฐ๋กœ ์ •๋ฆฌํ•œ ํฌ์ŠคํŠธ๋ฅผ ์ฐธ๊ณ ํ•˜์ž.

Deploy a Knative Service

YAML ํŒŒ์ผ๋กœ ์ •์˜ํ•ด์„œ Knative Service๋ฅผ ๋””ํ”Œ๋กœ์ด ํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ๋Š”๋ฐ, ์—ฌ๊ธฐ์—์„  Knative CLI์ธ kn์„ ์‚ฌ์šฉํ•ด์„œ ์—ฐ์Šตํ•ด๋ณด๊ฒ ๋‹ค.

kn service create hello \
    --image ghcr.io/knative/helloworld-go:latest \
    --port 8080 \
    --env TARGET=World

์ข…์ข… kn์„ ์‚ฌ์šฉํ•ด์„œ Knative ๋ฆฌ์†Œ์Šค๋ฅผ ์ œ์–ดํ•˜๋Š”๊ฒŒ ํŽธ๋ฆฌํ•  ๋•Œ๊ฐ€ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, Knative์˜ Service๋Š” K8s Service์™€ ์ด๋ฆ„์ด ๋˜‘๊ฐ™์•„์„œ kubectl๋กœ ๋ฆฌ์†Œ์Šค๋กค ํ™•์ธํ•  ๋•Œ k get service๋กœ ํ•˜๋ฉด ์•ˆ ๋˜๊ณ , k get services.serving.knative.dev๋กœ ํ’€๋„ค์ž„์„ ์ ์–ด์ค˜์•ผ ํ•œ๋‹ค. kn์„ ์‚ฌ์šฉํ•˜๋ฉด kn service list๋งŒ ํ•˜๋ฉด ๋˜๋‹ˆ ํ›จ์”ฌ ๊ฐ„๊ฒฐํ•ด์ง„๋‹ค!!

๋ณธ์ธ์€ IngressNotConfigured์— Ingress has not yet been reconciled. ๋ผ๋Š” ๋ฉ”์‹œ์ง€๋กœ Knative Service๊ฐ€ ์ƒ์„ฑ๋˜๋‹ค๊ฐ€ ๋ง์•˜๋‹คโ€ฆ ๐Ÿค” ์š” ์—๋Ÿฌ๋Š” Knative Service๊ฐ€ ์‚ฌ์šฉํ•  Ingress๊ฐ€ ์ œ๋Œ€๋กœ ๊ตฌ์„ฑ๋˜์ง€ ์•Š์•˜์„ ๋•Œ ๋ฐœ์ƒํ•œ๋‹ค. ์ด๋•Œ์˜ Ingress๋Š” K8s์˜ Ingress ๋ฆฌ์†Œ์Šค๊ฐ€ ์•„๋‹ˆ๋ผ Istio์˜ Ingress Gateway์™€ ๊ฐ™์ด ๋ผ์šฐํŒ… ํƒ€๊นƒ์„ ๋™์ ์œผ๋กœ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋Š” Ingress ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋งํ•œ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋ณ„๋„์˜ ํฌ์ŠคํŠธ์—์„œ ์ •๋ฆฌํ•ด๋ณด๊ฒ ๋‹ค. ์ผ๋‹จ์€ ๋งˆ์Œ ๋ถˆํŽธํ•˜๊ฒŒ ํ•˜๋Š” ์—๋Ÿฌ ๋ฉ”์‹œ์ง€๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์•„๋ž˜์˜ ๋‹จ๊ณ„๋ฅผ ์ˆ˜ํ–‰ํ•˜์ž.

Install Istio

Knative์˜ ๋„คํŠธ์›Œํ‚น ๋ฐฑ์—”๋“œ๋ฅผ ๊ตฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ์„œ๋น„์Šค ๋ฉ”์‰ฌ์ธ Istio๋ฅผ ์„ค์น˜ํ•˜์ž!! Istio๋ฅผ ์„ค์น˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ์—ฌ๋Ÿฌ ๊ฐ€์ง€๊ฐ€ ์žˆ์ง€๋งŒ, ์—ฌ๊ธฐ์„œ๋Š” istioctl๋กœ ์ง„ํ–‰ํ•œ๋‹ค. Istio๋ฅผ ์„ค์น˜ํ•˜๋Š” ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์ด ๊ถ๊ธˆํ•˜๋‹ค๋ฉด, โ€œInstall Istio and Addonsโ€ ํฌ์ŠคํŠธ๋ฅผ ์ฐธ๊ณ ํ•˜์ž.

istioctl install -y

์œ„์˜ ๋ช…๋ น์–ด๋กœ istio๋ฅผ ์„ค์น˜ํ•œ๋‹ค. istio-system ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— istiod์™€ istio-ingressgateway๊ฐ€ ํ•˜๋‚˜ ์„ค์น˜๋œ ๊ฑธ ํ™•์ธํ•œ๋‹ค.

Install net-istio

Istio๋ฅผ ์„ค์น˜ ํ–ˆ๋‹ค๊ณ  ๋๋‚˜๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ, Knative์—์„œ Istio์˜ ๋ฆฌ์†Œ์Šค์™€ CRD API๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก net-istio๋ผ๋Š” ๋ณ„๋„์˜ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์„ค์น˜ํ•ด์•ผ ํ•œ๋‹ค. ์„ค์น˜ํ•  ๊ฒƒ๋„ ๋งŽ๋‹ค;;

net-istio๋Š” Knative์˜ Networking Layer๋ฅผ ์ด๋ฃจ๋Š” ์ปดํฌ๋„ŒํŠธ๋กœ Istio์˜ Ingress GW๋ฅผ ํ†ตํ•ด ํŠธ๋ž˜ํ”ฝ์„ Knative Service ๋ฆฌ์†Œ์Šค๋กœ ๋ผ์šฐํŒ… ํ•˜๊ณ , Istio์˜ DestinationRule๊ณผ VirtualService๋ฅผ ์‚ฌ์šฉํ•ด Knative์˜ ๊ฐ Revision์œผ๋กœ ํŠธ๋ž˜ํ”ฝ์„ ๋ถ„๋ฐฐํ•œ๋‹ค. ๊ฒŒ๋‹ค๊ฐ€ ํŠธ๋ž˜ํ”ฝ ๊ธฐ์ค€์œผ๋กœ auto-scaling์„ ํ•˜๊ฒŒ ๋  ๊ฒฝ์šฐ๋„ Istio์˜ ํŠธ๋ž˜ํ”ฝ ๋ฉ”ํŠธ๋ฆญ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘ํ•˜๊ฒŒ ๋œ๋‹ค.

์•”ํŠผ net-istio์— ๋Œ€ํ•œ ๋‚ด์šฉ์€ ๋ณ„๋„ ํฌ์ŠคํŠธ์—์„œ ์ข€๋” ๋‹ค๋ค„๋ณด๋„๋ก ํ•˜๊ณ  ์ผ๋‹จ net-istio๋ฅผ ์•„๋ž˜ ์ปค๋งจ๋“œ๋กœ ์„ค์น˜ํ•˜์ž.

kubectl apply -f https://github.com/knative/net-istio/releases/download/knative-v1.14.1/net-istio.yaml

knative-serving ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ๊ธฐ์กด Knative์˜ ์ปจํŠธ๋กค ์ปดํฌ๋„ŒํŠธ์™ธ์— net-istio์˜ ์ปจํŠธ๋กค ์ปดํฌ๋„ŒํŠธ๋“ค์ด ๋””ํ”Œ๋กœ์ด ๋œ๋‹ค.

NAME                                    READY   STATUS    RESTARTS   AGE
webhook-5676f857c4-vp4bw                1/1     Running   0          3h43m
autoscaler-d57d974cb-8fnxb              1/1     Running   0          3h43m
controller-b8b47f9b9-jd8fw              1/1     Running   0          3h43m
activator-5d7f9fc58d-bwtk2              1/1     Running   0          3h43m
net-istio-webhook-7dcd9cd55d-5nfsz      1/1     Running   0          13m
net-istio-controller-67c556df5f-g4j9q   1/1     Running   0          13m

Knative Service Re-deploying

Networking Layer์ธ Istio๋„ ์„ธํŒ… ํ–ˆ๊ฒ ๋‹ค. ๋‹ค์‹œ Knative Serving์„ ๋””ํ”Œ๋กœ์ด ํ•ด๋ณด์ž.

kn service create hello \
    --image ghcr.io/knative/helloworld-go:latest \
    --port 8080 \
    --env TARGET=World
    ---
---
  ...
  0.014s The Route is still working to reflect the latest desired specification.
  0.023s ...
  0.037s Configuration "hello" is waiting for a Revision to become ready.
  3.525s ...
  3.531s Ingress has not yet been reconciled.
  3.566s Ready to serve.

Service 'hello' created to latest revision 'hello-00001' is available at URL:
http://hello.default.svc.cluster.local

์ด์ œ๋Š” Ingress ์…‹์—…์—์„œ ๋ง‰ํžˆ์ง€ ์•Š๊ณ  Knative ๋ฆฌ์†Œ์Šค๊ฐ€ ์ž˜ ๋””ํ”Œ๋กœ์ด ๋œ๋‹ค ใ…Žใ…Ž

Clean-up

์ง„ํ–‰ํ•œ ์ˆœ์„œ์˜ ์—ญ์ˆœ์œผ๋กœ ๋ฆฌ์†Œ์Šค๋ฅผ ์ •๋ฆฌํ•œ๋‹ค. ์ฐธ๊ณ ๋กœ Destroy ํ•  ๋•Œ ์•ฝ๊ฐ„์˜ ๋”œ๋ ˆ์ด๊ฐ€ ์žˆ์œผ๋‹ˆ, ๋ฆฌ์†Œ์Šค๊ฐ€ ์ž˜ ์‚ญ์ œ ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ์ง„ํ–‰ํ•˜์ž.

# destroy Knative Service
kn service delete hello

# destroy net-istio
kubectl delete -f https://github.com/knative/net-istio/releases/download/knative-v1.14.1/net-istio.yaml

# destroy istio
istioctl uninstall --purge

# destroy knative core components
kubectl delete -f https://github.com/knative/serving/releases/download/knative-v1.14.1/serving-core.yaml

# remove knative CRDs
kubectl delete -f https://github.com/knative/serving/releases/download/knative-v1.14.1/serving-crds.yaml

Using Knative Operator

Knative๋Š” Operator ํŒจํ„ด์œผ๋กœ ๋””ํ”Œ๋กœ์ดํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

Install Knative Operator

์ผ๋‹จ Knative Operator๋ฅผ ๋จผ์ € ๋””ํ”Œ๋กœ์ด ํ•˜์ž.

kubectl apply -f https://github.com/knative/operator/releases/download/knative-v1.14.3/operator.yaml

knative-operator๋ผ๋Š” ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— knative operator์˜ ๋ฆฌ์†Œ์Šค๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค.

NAME                                READY   STATUS    RESTARTS   AGE
operator-webhook-7cc7b89bdf-b5z76   1/1     Running   0          47s
knative-operator-fdbbd86d4-rqnvg    1/1     Running   0          47s

Deploy Knative Serving

์•„๋ž˜์˜ YAML์„ ๋””ํ”Œ๋กœ์ด ํ•˜์—ฌ, KnativeServing ๋ฆฌ์†Œ์Šค๋ฅผ knative-service ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ๋„์šด๋‹ค.

apiVersion: v1
kind: Namespace
metadata:
  name: knative-serving
---
apiVersion: operator.knative.dev/v1beta1
kind: KnativeServing
metadata:
  name: knative-serving
  namespace: knative-serving

์ ์šฉ์ด ๋œ ํ›„์— ์•„๋ž˜ ๋ช…๋ น์–ด๋กœ ํ™•์ธํ•ด๋ณด๋ฉด,

kubectl get knativeservings -A
---
NAMESPACE         NAME              VERSION   READY   REASON
knative-serving   knative-serving   1.14.1    True

๊ทธ๋ฆฌ๊ณ  knative-serivng ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ํ™•์ธํ•ด๋ณด๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด K8s Pod๋“ค์ด ๋– ์žˆ๋‹ค.

kubectl get pods -n knative-serving
---
NAME                                                     READY   STATUS      RESTARTS   AGE
controller-b8b47f9b9-b68b4                               1/1     Running     0          95s
autoscaler-d57d974cb-d78ct                               1/1     Running     0          95s
webhook-5676f857c4-h5wwv                                 1/1     Running     0          94s
net-istio-controller-67c556df5f-5h4cl                    1/1     Running     0          92s
activator-5d7f9fc58d-t9jpp                               1/1     Running     0          96s
net-istio-webhook-7dcd9cd55d-xwgwk                       1/1     Running     0          92s
autoscaler-hpa-54586c6544-gkm2t                          1/1     Running     0          94s
storage-version-migration-serving-serving-1.14.1-lpbwj   0/1     Completed   0          93s

๋”ฐ๋กœ ๋ช…์‹œํ•˜์ง€ ์•Š์•˜๋Š”๋ฐ๋„ Networking Layer์ธ net-istio ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์„ค์น˜๋˜์—ˆ๋‹ค!! ๐Ÿ˜ฒ

Deploy a Knative Serving

kn ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ด Knative Serving์„ ํ•˜๋‚˜ ๋””ํ”Œ๋กœ์ด ํ•ด๋ณด์ž.

kn service create hello \
    --image ghcr.io/knative/helloworld-go:latest \
    --port 8080 \
    --env TARGET=World
---
  ...
  0.014s The Route is still working to reflect the latest desired specification.
  0.023s ...
  0.037s Configuration "hello" is waiting for a Revision to become ready.
  3.525s ...
  3.531s Ingress has not yet been reconciled.
  3.566s Ready to serve.

Service 'hello' created to latest revision 'hello-00001' is available at URL:
http://hello.default.svc.cluster.local

๋””ํ”Œ๋กœ์ด๊ฐ€ ์ž˜ ๋œ๋‹ค~~~

Clean-up

๋””ํ”Œ๋กœ์ด ํ•œ ์—ญ์ˆœ์œผ๋กœ ์ง€์›Œ์ฃผ๋ฉด ๋œ๋‹ค. ์ฐธ๊ณ ๋กœ Destroy ํ•  ๋•Œ ์•ฝ๊ฐ„์˜ ๋”œ๋ ˆ์ด๊ฐ€ ์žˆ์œผ๋‹ˆ, ๋ฆฌ์†Œ์Šค๊ฐ€ ์ž˜ ์‚ญ์ œ ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ์ง„ํ–‰ํ•˜์ž.

# destroy Knative Service
kn service delete hello

# destroy knative serving
kubectl delete knativeserving knative-serving -n knative-serving

# destroy knative serving operator
kubectl delete -f https://github.com/knative/operator/releases/download/knative-v1.14.3/operator.yaml

# destroy istio
istioctl uninstall --purge

๋งˆ๋ฌด๋ฆฌ ํ•˜๋ฉฐ

ํšŒ์‚ฌ์—์„œ Knative๋กœ Serverless Application์„ ๋ฐฐํฌํ•˜๊ณ  ์šด์˜ํ•˜๋Š”๋ฐ, ์ด๋ฏธ ๊ตฌ์ถ•๋œ K8s ์ธํ”„๋ผ ์œ„์—์„œ ์šด์˜ํ•˜๊ณ  ์žˆ๋˜ ๊ฑฐ๋ผ ์ž์œจ๋ณด๋‹ค๋Š” ํƒ€์„ฑ์œผ๋กœ ์šด์˜ํ•˜๊ณ  ์žˆ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค. ์ด๋ฒˆ์— Knative Serving์„ ์ง์ ‘ ๋กœ์ปฌ์— ์„ค์น˜ ํ•ด๋ณด๋ฉด์„œ ์™œ ๊ทธ๋Ÿฐ์ง€ ์–ด๋ ดํ’‹์ด ์•Œ๊ฒŒ ๋œ ๊ฒƒ ๊ฐ™๋‹ค.

Knative๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด์„œ ๋˜ ์ด๋ฒˆ์— ๋กœ์ปฌ์—์„œ ๊ตฌ์ถ•ํ•˜๋ฉด์„œ ๊ถ๊ธˆํ–ˆ๋˜ ๊ฑด ์™œ Networking Layer๊ฐ€ ๋ณ„๋„๋กœ ํ•„์š”ํ•œ ๊ฑธ๊นŒ๋ฅผ ์ƒ๊ฐํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. ์งง์€ ์ถ”์ธก์ด์ง€๋งŒ Knative๊ฐ€ Serverless Application์„ ๋ฐฐํฌ/์šด์˜ํ•˜๋Š” ๊ณผ์ •์—์„œ Native K8s ๋ณด๋‹ค ๋” ์ •๊ตํ•œ ๋ ˆ๋ฒจ์˜ Network ์ œ์–ด์™€ ํŠธ๋ž˜ํ”ฝ ์ œ์–ด๊ฐ€ ํ•„์š”ํ•œ ๊ฒƒ ๊ฐ™๋‹ค. ์•„๋ฌด๋ž˜๋„ ์—ฌ๋Ÿฌ Revision์— ํŠธ๋ž˜ํ”ฝ์€ ์›ํ•˜๋Š” ๋น„์œจ๋กœ ๋ผ์šฐํŒ… ํ•œ๋‹ค๊ฑฐ๋‚˜, ํŠธ๋ž˜ํ”ฝ ๊ธฐ๋ฐ˜์œผ๋กœ auto-scaling ํ•˜๊ธฐ ์œ„ํ•ด ํŠธ๋ž˜ํ”ฝ ์ง€ํ‘œ๋“ค์„ ์ˆ˜์ง‘ํ•ด์•ผ ํ•˜๋Š”๋ฐ, ์„œ๋น„์Šค ๋ฉ”์‰ฌ๊ฐ€ ์žˆ์–ด์•ผ ๊ฐ€๋Šฅํ•œ ๊ธฐ๋Šฅ๋“ค์ด๋‹ค. ๊ทธ๋ž˜์„œ Networking Layer๊ฐ€ ํ•„์š”ํ•œ ๊ฒƒ ๊ฐ™๋‹ค.

Knative๋Š” Istio๋ฅผ Default Networking Layer๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๊ณ , ๊ทธ์™ธ์—๋„ Kourier, Contour ๋“ฑ์„ Networking Layer๋กœ๋„ ์ง€์›ํ•œ๋‹ค๊ณ  ํ•œ๋‹ค. Kourier๋Š” Knative์—์„œ ๋งŒ๋“  ๊ฒฝ๋Ÿ‰ ์„œ๋น„์Šค ๋ฉ”์‰ฌ์ธ๋ฐ, Istio๋ณด๋‹ค ๊ฐ€๋ฒผ์šด Ingress GW๋ฅผ ์ œ๊ณตํ•œ๋‹ค๊ณ  ํ•œ๋‹ค. Contour๋„ ์„œ๋น„์Šค ๋ฉ”์‰ฌ์˜ ์ผ์ข…์œผ๋กœ Envoy Proxy๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ๋‹ค. Istio, Kourier, Contour ์…‹๋‹ค Envoy Proxy๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๊ณตํ†ต์ ์„ ๊ฐ–๋Š”๋‹ค.

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

References