Welcome! ๐Ÿ™‹โ€โ™‚๏ธ View more

Engineering ๐Ÿ’ป/MLOps

Kubernetes ํ™•์žฅํŒ: Gateway API

DeepFlame 2026. 3. 9. 10:41

๋“ค์–ด๊ฐ€๋ฉฐ

์ €๋Š” ํ˜„์—…์—์„œ Kserve๋ฅผ ํ™œ์šฉํ•ด์„œ ๋ชจ๋ธ ์„œ๋น™์„ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
Kserve๋Š” Serveless ๋ชจ๋“œ๋กœ ์„ค์น˜ํ•˜๋Š” ๊ฒƒ์ด ํ‘œ์ค€์ด์—ˆ๊ณ , Istio/Knative์™€ ํ•จ๊ป˜ ์„ค์น˜ํ•ด์„œ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. 

๊ทธ๋Ÿฐ๋ฐ 0.15 ๋ฒ„์ „๋ถ€ํ„ฐ๋Š” RawDeployment ๋ชจ๋“œ(0.16 ๋ฒ„์ „๋ถ€ํ„ฐ๋Š” Standard ๋ชจ๋“œ๋ผ๊ณ  ๋ถˆ๋ฆผ) ์„ค์น˜๊ฐ€ ์ƒ๊ฒผ๊ณ , LLM ์„œ๋น™ ์‹œ์—๋Š” ํ•ด๋‹น ์„ค์น˜ ๋ฐฉ๋ฒ•์ด ๊ถŒ์žฅ๋œ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. 

์•„๋ฌด๋ž˜๋„ Serverless ๋ชจ๋“œ์˜ ํ•ต์‹ฌ์ธ 'Scale-to-zero'๋Š” LLM์—์„œ ๋น„ํ˜„์‹ค์ ์œผ๋กœ ๋‹ค๊ฐ€์™”๋˜ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ธฐ๊ฐ€๋ฐ”์ดํŠธ ๋‹จ์œ„์˜ ๋ชจ๋ธ ๊ฐ€์ค‘์น˜๋ฅผ ๋‹ค์‹œ ๋กœ๋“œํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„์ด ๋„ˆ๋ฌด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
Knative์˜ ๊ตฌ์„ฑ์š”์†Œ๊ฐ€ ๋งŽ๊ณ  ๋””๋ฒ„๊น…๋„ ์–ด๋ ค์›Œ ๊ฑท์–ด๋‚ด๊ณ  ์‹ถ๋‹ค๋Š” ๋‹ˆ์ฆˆ๊ฐ€ ์žˆ์—ˆ๋Š”๋ฐ, ์—ฌ๋Ÿฌ ๊ณณ์—์„œ ์œ ์‚ฌํ•œ ๊ณ ๋ฏผ์ด ์žˆ์—ˆ๋˜ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๊ทธ ์™€์ค‘์— Kubernetes Gateway API ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜๊ณ , ์ด ๊ธฐ๋Šฅ์ด ํ‘œ์ค€์œผ๋กœ ์ •์˜๋˜๋ฉด์„œ ๊ตณ์ด ๋ฌด๊ฑฐ์šด ์™ธ๋ถ€ ์†”๋ฃจ์…˜์„ ๋•์ง€๋•์ง€ ๋ถ™์ด์ง€ ์•Š์•„๋„ ์ •๊ตํ•œ ์„œ๋น™์ด ๊ฐ€๋Šฅํ•ด์กŒ์Šต๋‹ˆ๋‹ค.
์ด๋ฒˆ์— Kubernetes Gateway API์— ๋Œ€ํ•ด์„œ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 


Kubernetes Gateway API๋ž€?

Gateway API๋Š” Kubernetes ์„œ๋น„์Šค ๋„คํŠธ์›Œํ‚น(Ingress, Load Balancing, Service Mesh)์˜ ์ฐจ์„ธ๋Œ€ ํ‘œ์ค€์„ ์ •์˜ํ•˜๋Š” ๊ณต์‹ ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค.
์ด๋Š” ๋‹จ์ˆœํ•œ ์„œ๋น„์Šค๊ฐ€ ์•„๋‹ˆ๋ผ, ๋‹ค์–‘ํ•œ ๋ฒค๋”(Istio, Kong, AWS ๋“ฑ)๊ฐ€ ๊ณตํ†ต์œผ๋กœ ๋”ฐ๋ฅผ ์ˆ˜ ์žˆ๋Š” ํ‘œ์ค€ ๋ช…์„ธ์ž…๋‹ˆ๋‹ค.

3๋‹จ๊ณ„ ๋ฆฌ์†Œ์Šค ๊ตฌ์กฐ

๊ธฐ์กด์— Ingress ํ•˜๋‚˜์˜ ํŒŒ์ผ์— ๋ชจ๋“  ์„ค์ •์ด ์žˆ์–ด ์šด์˜์ž์™€ ๊ฐœ๋ฐœ์ž ์‚ฌ์ด์— ์ถฉ๋Œ์ด ์žˆ์—ˆ๋‹ค๋ฉด,
Gateway API๋Š” ์ด๋ฅผ 3๊ฐœ์˜ ๊ณ„์ธต์œผ๋กœ ๋‚˜๋ˆ„์–ด ๊ด€์‹ฌ์‚ฌ ๋ถ„๋ฆฌ๋ฅผ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. 

1๋‹จ๊ณ„: ์ธํ”„๋ผ ์ œ๊ณต์ž (Infrastructure Provider) → GatewayClass

์–ด๋–ค ์žฅ๋น„๋ฅผ ์‚ฌ์šฉํ•  ๊ฒƒ์ธ์ง€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๋‹จ๊ณ„์ž…๋‹ˆ๋‹ค.
์ฃผ๋กœ ํด๋ผ์šฐ๋“œ ๋ฒค๋”(AWS, GCP ๋“ฑ)๋‚˜ ์‚ฌ๋‚ด ํ”Œ๋žซํผ ํŒ€์ด ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค.

2๋‹จ๊ณ„: ํด๋Ÿฌ์Šคํ„ฐ ์šด์˜์ž (Cluster Operator) → Gateway

์–ด๋””๋ฅผ ํ†ตํ•ด ํŠธ๋ž˜ํ”ฝ์„ ๋ฐ›์„ ๊ฒƒ์ธ์ง€ ๊ฒฐ์ •ํ•˜๋Š” ๋‹จ๊ณ„์ž…๋‹ˆ๋‹ค.
"์ด ๊ฒŒ์ดํŠธ์›จ์ด๋Š” ์–ด๋–ค ๋„ค์ž„์ŠคํŽ˜์ด์Šค์˜ ์„œ๋น„์Šค๋“ค์—๊ฒŒ ๊ธธ์„ ์—ด์–ด์ค„ ๊ฒƒ์ธ๊ฐ€?"๋ฅผ ํ•„ํ„ฐ๋ง ๋ฐ ๋ผ์šฐํŒ…ํ•ฉ๋‹ˆ๋‹ค.

3๋‹จ๊ณ„: ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์ž (Application Developer) → Routes

๋“ค์–ด์˜จ ํŠธ๋ž˜ํ”ฝ์„ ์–ด๋””๋กœ ๋ณด๋‚ผ ๊ฒƒ์ธ์ง€ ๊ฒฐ์ •ํ•˜๋Š” ๋‹จ๊ณ„์ž…๋‹ˆ๋‹ค.
์šด์˜์ž๊ฐ€ ๋งŒ๋“ค์–ด๋‘” Gateway์— ์ž์‹ ์˜ ์„œ๋น„์Šค(Service)๋ฅผ ๊ตฌ์ฒด์ ์ธ ๋ผ์šฐํŒ… ๊ทœ์ง์„ ํ†ตํ•ด ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค. (/v1/train ๊ฒฝ๋กœ๋Š” ํ•™์Šต ์„œ๋น„์Šค๋กœ, ํ—ค๋”์— version=v2๊ฐ€ ์žˆ์œผ๋ฉด ์‹ ๊ทœ ๋ชจ๋ธ๋กœ ๋ณด๋‚ด๋ผ.)

 

์–ด๋–ป๊ฒŒ ์ •์˜ํ•˜๋Š”๊ฐ€? (๋ฆฌ์†Œ์Šค ๊ตฌ์„ฑ)

๋ฆฌ์†Œ์Šค๋“ค์€ ๋…๋ฆฝ์ ์œผ๋กœ ์ƒ์„ฑ/์‚ญ์ œ๋˜๋ฉฐ, ์„œ๋กœ ์ฐธ์กฐํ•˜์—ฌ ๋„คํŠธ์›Œํฌ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

1. GatewayClass (Cluster-scoped)

  • ์–ด๋–ค ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ์ด ์„ค์ •์„ ์ฒ˜๋ฆฌํ• ์ง€ ์ •์˜ํ•˜๋Š” ํ…œํ”Œ๋ฆฟ์ž…๋‹ˆ๋‹ค.
  • ํด๋Ÿฌ์Šคํ„ฐ์— Istio, Kong, AWS ALB ๋“ฑ ์—ฌ๋Ÿฌ ์ข…๋ฅ˜์˜ ์ธํ”„๋ผ๊ฐ€ ๋™์‹œ์— ์กด์žฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค.
apiVersion: gateway.networking.k8s.io/v1
kind: GatewayClass
metadata:
  name: istio-gateway-class # ๊ฒŒ์ดํŠธ์›จ์ด ํด๋ž˜์Šค ์ด๋ฆ„
spec:
  controllerName: istio.io/gateway-controller # ์ด ์„ค์ •์„ ์ฒ˜๋ฆฌํ•  ์ปจํŠธ๋กค๋Ÿฌ ์—”์ง„

 

2. Gateway (Namespace-scoped)

  • ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด ์„œ๋น„์Šค๋กœ ํŠธ๋ž˜ํ”ฝ์„ ๋ณ€ํ™˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.
  • listners ํ•„๋“œ๋ฅผ ํ†ตํ•ด์„œ ๊ฒŒ์ดํŠธ์›จ์ด๊ฐ€ ํŠธ๋ž˜ํ”ฝ์„ ์ˆ˜์‹ ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.
  • ํŠธ๋ž˜ํ”ฝ์€ ๋‹จ ํ•˜๋‚˜์˜ listner์—๋งŒ ์ผ์น˜ํ•˜๋„๋ก ์ •์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ listner๋“ค์€ ์„œ๋กœ ๋‹ฌ๋ผ์•ผ ํ•ฉ๋‹ˆ๋‹ค.
apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata:
  name: production-gateway
  namespace: infra-namespace # ์šด์˜ํŒ€ ๊ด€๋ฆฌ ๋„ค์ž„์ŠคํŽ˜์ด์Šค
spec:
  gatewayClassName: istio-gateway-class # ์œ„์—์„œ ๋งŒ๋“  ํด๋ž˜์Šค ์ฐธ์กฐ
  listeners:
  - name: http
    port: 80
    protocol: HTTP
    allowedRoutes:
      namespaces:
        from: All # ๋ชจ๋“  ๋„ค์ž„์ŠคํŽ˜์ด์Šค์˜ Route ์—ฐ๊ฒฐ ํ—ˆ์šฉ (๋ณด์•ˆ์„ ์œ„ํ•ด ํŠน์ • ๊ฐ€๋Šฅ)

 

3. Route ๋ฆฌ์†Œ์Šค (Namespace-scoped)

  • ํŠน์ • ํ”„๋กœํ† ์ฝœ์— ๋”ฐ๋ฅธ ๋ผ์šฐํŒ… ๊ทœ์น™์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.
  • HTTPRoute, GRPCRoute, TCPRoute, UDPRoute, TLSRoute ๋“ฑ์˜ ๋‹ค์–‘ํ•œ ์ข…๋ฅ˜์˜ ์—ฐ๊ฒฐ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
  name: ai-service-route
  namespace: serving-namespace # ์„œ๋น„์Šค ๊ฐœ๋ฐœํŒ€ ๋„ค์ž„์ŠคํŽ˜์ด์Šค
spec:
  parentRefs:
  - name: production-gateway # ์—ฐ๊ฒฐํ•  Gateway ์ฐธ์กฐ
    namespace: infra-namespace
  hostnames:
  - "api.nano-banana.com"
  rules:
  - matches:
    - path:
        type: PathPrefix
        value: /v1/predict
    backendRefs:
    - name: model-v1-service # ๊ธฐ์กด ๋ชจ๋ธ๋กœ 90% ํŠธ๋ž˜ํ”ฝ ์ „์†ก
      port: 8080
      weight: 90
    - name: model-v2-service # ์‹ ๊ทœ ๋ชจ๋ธ๋กœ 10% ํŠธ๋ž˜ํ”ฝ ์ „์†ก (์นด๋‚˜๋ฆฌ)
      port: 8080
      weight: 10

 

์–ด๋–ป๊ฒŒ ์—ฐ๊ฒฐํ•˜๋Š”๊ฐ€?

Gateway์™€ Route์˜ ์—ฐ๊ฒฐ๋˜๋Š” ๋ฐฉ์‹์— ์žˆ์–ด ์œ ์—ฐ์„ฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

1. ์ผ๋Œ€์ผ (1:1) - ์ „๋‹ด ๊ฒŒ์ดํŠธ์›จ์ด ๋ชจ๋ธ

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

2. ์ผ๋Œ€๋‹ค (1:N) - ๊ณต์œ  ๊ฒŒ์ดํŠธ์›จ์ด ๋ชจ๋ธ (๊ฐ€์žฅ ๊ถŒ์žฅ๋จ)

  • ํ•˜๋‚˜์˜ ๊ฒŒ์ดํŠธ์›จ์ด์— ์„œ๋กœ ๋‹ค๋ฅธ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์˜ ์—ฌ๋Ÿฌ ํŒ€์ด ์†Œ์œ ํ•œ ๋ผ์šฐํŠธ๋“ค์ด ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค.
  • Gateway API์˜ '์—ญํ•  ๋ถ„๋ฆฌ' ์ฒ ํ•™์ด ๊ฐ€์žฅ ์ž˜ ๋“œ๋Ÿฌ๋‚˜๋Š” ํŒจํ„ด์ž…๋‹ˆ๋‹ค. ์ค‘์•™ ์ธํ”„๋ผ ํŒ€์ด ๊ณ ๊ฐ€์˜ ๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ(Gateway)๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ , ์—ฌ๋Ÿฌ ์„œ๋น„์Šค ํŒ€์€ ๊ฐ์ž์˜ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์—์„œ ์ž์œ ๋กญ๊ฒŒ ์ž์‹ ์˜ ๊ฒฝ๋กœ(Route)๋ฅผ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

3. ๋‹ค๋Œ€์ผ (N:1) - ๋ฉ€ํ‹ฐ ๊ฒŒ์ดํŠธ์›จ์ด ๋ฐ”์ธ๋”ฉ

  • ํ•˜๋‚˜์˜ ๋ผ์šฐํŠธ๊ฐ€ ๋‘ ๊ฐœ ์ด์ƒ์˜ ๊ฒŒ์ดํŠธ์›จ์ด์— ๋™์‹œ์— ๋ฐ”์ธ๋”ฉ๋ฉ๋‹ˆ๋‹ค.
  • ๋‹จ์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ค์ •์„ ์„œ๋กœ ๋‹ค๋ฅธ ์—ฌ๋Ÿฌ ๋„คํŠธ์›Œํฌ ํ™˜๊ฒฝ(์˜ˆ: ๋‚ด๋ถ€๋ง ์ „์šฉ IP์™€ ์™ธ๋ถ€ ๊ณต์ธ IP)์— ๋™์‹œ์— ๋…ธ์ถœํ•˜๊ณ  ์ œ์–ดํ•  ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.
    ๋˜๋Š” ์ธํ”„๋ผ ๊ต์ฒด ์‹œ ๋ฌด์ค‘๋‹จ ์ „ํ™˜์„ ์œ„ํ•ด ๋‘ ๊ฒŒ์ดํŠธ์›จ์ด๋ฅผ ๋™์‹œ์— ๋ฐ”๋ผ๋ณด๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

https://gateway-api.sigs.k8s.io/concepts/api-overview/#example
https://gateway-api.sigs.k8s.io/concepts/api-overview/#combined-types

 

์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜๋Š”๊ฐ€? (Use Cases)

1. ๋‹จ์ˆœ North/East ์—ฐ๊ฒฐ

Gateway์™€ Route๊ฐ€ 1๋Œ€1๋กœ ์—ฐ๊ฒฐํ•˜๋Š” ์‚ฌ๋ก€์ž…๋‹ˆ๋‹ค. ์›Œํฌํ”Œ๋กœ๋ฅผ ์˜ˆ์‹œ๋กœ ๋“ค์–ด ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

  1. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์ž๋Š” ํด๋Ÿฌ์Šคํ„ฐ ์šด์˜์ž์—๊ฒŒ ํด๋Ÿฌ์Šคํ„ฐ ์„ค์ •์„ ์š”์ฒญํ•˜๋ฉฐ, ์ž์‹ ์˜ API๊ฐ€ https://ana.application.com/๊ณผ ๊ฐ™์€ URL ๊ฒฝ๋กœ๋กœ ์ ‘์† ๊ฐ€๋Šฅํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์•Œ๋ฆฝ๋‹ˆ๋‹ค.
  2. ํด๋Ÿฌ์Šคํ„ฐ ์šด์˜์ž๋Š” ์ธํ”„๋ผ ์ œ๊ณต์ž์—๊ฒŒ ๊ฐ€์„œ ํ•„์š”ํ•œ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค.
  3. ์ธํ”„๋ผ ์ œ๊ณต์ž๋Š” basic-gateway-class๋ผ๋Š” ์ด๋ฆ„์˜ GatewayClass ๋ฆฌ์†Œ์Šค๊ฐ€ ์‹คํ–‰๋˜๋Š” ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์ค€๋น„ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฒŒ์ดํŠธ์›จ์ด ์ปจํŠธ๋กค๋Ÿฌ๋Š” ํด๋Ÿฌ์Šคํ„ฐ ์™ธ๋ถ€์—์„œ ๋‚ด๋ถ€๋กœ ๋“ค์–ด์˜ค๋Š” ํŠธ๋ž˜ํ”ฝ ๋ผ์šฐํŒ…์— ํ•„์š”ํ•œ ์ธํ”„๋ผ๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  4. ์ธํ”„๋ผ ์ œ๊ณต์ž๋Š” ํด๋Ÿฌ์Šคํ„ฐ ์šด์˜์ž์—๊ฒŒ ์ƒˆ ํด๋Ÿฌ์Šคํ„ฐ ์ ‘์† ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๊ณ , basic-gateway-class๋ผ๋Š” ์ด๋ฆ„์˜ GatewayClass๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„ค์ •์„ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์•Œ๋ ค์ค๋‹ˆ๋‹ค.
  5. ํด๋Ÿฌ์Šคํ„ฐ ์šด์˜์ž๋Š” TLS ํŠธ๋ž˜ํ”ฝ์„ ์œ„ํ•ด 443 ํฌํŠธ๋ฅผ ์ˆ˜์‹ ๋ฐ›๋Š” ana-gateway๋ผ๋Š” ์ด๋ฆ„์˜ Gateway๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ ํ•ด๋‹น ๋„๋ฉ”์ธ์— ๋งž๋Š” TLS ์ธ์ฆ์„œ๋ฅผ ์ œ๊ณตํ•˜๊ณ , ์ด ๊ฒŒ์ดํŠธ์›จ์ด๋ฅผ basic-gateway-class์™€ ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.
  6. ์ธํ”„๋ผ ์ œ๊ณต์ž๊ฐ€ ์ค€๋น„ํ–ˆ๋˜ ๊ฒŒ์ดํŠธ์›จ์ด ์ปจํŠธ๋กค๋Ÿฌ๋Š” ana-gateway๋ฅผ ์œ„ํ•œ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ์™€ IP ์ฃผ์†Œ๋ฅผ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ํŠธ๋ž˜ํ”ฝ์„ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ ํ”Œ๋ ˆ์ธ ์ปดํฌ๋„ŒํŠธ๋“ค์„ ๊ตฌ์„ฑํ•˜๊ณ , ๊ฒŒ์ดํŠธ์›จ์ด์™€ ๊ด€๋ จ๋œ ๋ผ์šฐํŒ… ๋ฆฌ์†Œ์Šค๋ฅผ ๊ฐ์‹œํ•˜๊ธฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
  7. ํด๋Ÿฌ์Šคํ„ฐ ์šด์˜์ž๋Š” ๊ฒŒ์ดํŠธ์›จ์ด์˜ IP ์ฃผ์†Œ๋ฅผ ํ™•์ธํ•˜์—ฌ ์™ธ๋ถ€ DNS ์„œ๋น„์Šค์— ๋„๋ฉ”์ธ ์ด๋ฆ„(ana.application.com)๊ณผ ๋งค์นญ๋˜๋Š” DNS ๋ ˆ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  8. ํด๋Ÿฌ์Šคํ„ฐ ์šด์˜์ž๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ana-gateway๋ฅผ ์‚ฌ์šฉํ•  ์ค€๋น„๊ฐ€ ๋˜์—ˆ๋‹ค๊ณ  ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.
  9. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์ž๋Š” ์–ด๋–ค URL ๊ฒฝ๋กœ๊ฐ€ ์–ด๋–ค ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋กœ ์—ฐ๊ฒฐ๋ ์ง€ ์ •์˜ํ•˜๋Š” HTTPRoute ๋ฆฌ์†Œ์Šค๋ฅผ ์ž‘์„ฑํ•˜์—ฌ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ผ์šฐํŠธ ๋ฆฌ์†Œ์Šค๋“ค์„ Gateway API์˜ ๋ผ์šฐํŠธ ์—ฐ๊ฒฐ ํ”„๋กœ์„ธ์Šค๋ฅผ ํ†ตํ•ด ana-gateway์— ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.
  10. ์ด์ œ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ์— ์š”์ฒญ์ด ๋„์ฐฉํ•˜๋ฉด, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ •์˜ํ•œ ๋ผ์šฐํŒ… ๊ทœ์น™์— ๋”ฐ๋ผ ๊ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋น„์Šค๋กœ ์ •ํ™•ํ•˜๊ฒŒ ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค.

 

 

2. ๊ณต์œ  ๊ฒŒ์ดํŠธ์›จ์ด ์—ฐ๊ฒฐ

๊ฐ€์žฅ ๋Œ€ํ‘œ์ ์ธ ์œ ์Šค์ผ€์ด์Šค๋กœ, ํ•˜๋‚˜์˜ ์ธํ”„๋ผ(IP, ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ)๋ฅผ ์—ฌ๋Ÿฌ ํŒ€์ด ์•ˆ์ „ํ•˜๊ฒŒ ๋‚˜๋ˆ„์–ด ์“ฐ๋Š” ์ƒํ™ฉ์ž…๋‹ˆ๋‹ค.
๊ฐ ๊ฐœ๋ฐœ์ž๋“ค์€ ์„œ๋กœ์˜ ๊ฐœ๋ฐœ ์‚ฌํ•ญ์„ ์‹ ๊ฒฝ์“ธ ํ•„์š” ์—†์ด ๋ณธ์ธ๋“ค์˜ ๋ผ์šฐํŒ… ๊ทœ์น™๋งŒ ๊ด€๋ฆฌํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

https://gateway-api.sigs.k8s.io/concepts/use-cases/#multiple-applications-behind-a-single-gateway

 

3. ๋‹จ์ˆœ East/West ์—ฐ๊ฒฐ

ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด๋ถ€์˜ ์„œ๋น„์Šค์™€ ์„œ๋น„์Šค ์‚ฌ์ด์—์„œ ๋ฐœ์ƒํ•˜๋Š” ํ†ต์‹ ์„ ์ปจํŠธ๋กคํ•ฉ๋‹ˆ๋‹ค.
์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์ž๋“ค์€ ์ธํ”„๋ผ ์ œ๊ณต์ž๋‚˜ ํด๋Ÿฌ์Šคํ„ฐ ์šด์˜์ž์˜ ๋„์›€์—†์ด Route๋ฅผ ์ •์˜ํ•˜์—ฌ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

North/South ์—ฐ๊ฒฐ๊ณผ ๋‹ค๋ฅธ ์ ์€ ParentRef ํ•„๋“œ๊ฐ€ Gateway๊ฐ€ ์•„๋‹ˆ๋ผ Service๋ฅผ ์ •์˜ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด๋Š” ํ•ด๋‹น ์„œ๋น„์Šค๋กœ ํ–ฅํ•˜๋Š” ๋ชจ๋“  ๋‚ด๋ถ€ ํŠธ๋ž˜ํ”ฝ์— ๋Œ€ํ•ด์„œ ์ด ๊ทœ์น™์„ ์ ์šฉํ•˜๊ฒ ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค.

 

์™œ ์ด๋ ‡๊ฒŒ ๋‚˜๋ˆ„์—ˆ๋Š”๊ฐ€? 

  • ์ตœ์†Œ ๊ถŒํ•œ ์›์น™: ๊ฐœ๋ฐœ์ž๋Š” ๋ณด์•ˆ ์„ค์ •(TLS)์ด๋‚˜ IP ํ• ๋‹น(Gateway)์„ ๊ฑด๋“œ๋ฆด ์ˆ˜ ์—†๊ณ , ์˜ค์ง ์ž์‹ ์˜ ์„œ๋น„์Šค ๊ฒฝ๋กœ(Route)๋งŒ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์–ด ์‹ค์ˆ˜๋ฅผ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค.
  • ๋…๋ฆฝ์ ์ธ ์ƒ๋ช…์ฃผ๊ธฐ: ์šด์˜ํŒ€์ด ์ธํ”„๋ผ๋ฅผ ๊ต์ฒด(์˜ˆ: Nginx → Istio)ํ•˜๋”๋ผ๋„, ๊ฐœ๋ฐœ์ž๊ฐ€ ์ž‘์„ฑํ•œ Route ์„ค์ •์€ ํ‘œ์ค€ API์ด๋ฏ€๋กœ ๊ทธ๋Œ€๋กœ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.
  • ์ „๋ฌธ์„ฑ ๊ฐ•ํ™”: ๊ฐ ์—ญํ• ์€ ์ž์‹ ์ด ๊ฐ€์žฅ ์ž˜ ์•„๋Š” ์˜์—ญ๋งŒ ๊ด€๋ฆฌํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๋Š” ๋ณต์žกํ•œ ๋„คํŠธ์›Œํฌ ์ธํ”„๋ผ๋ฅผ ๊ณต๋ถ€ํ•  ํ•„์š” ์—†์ด ๋ผ์šฐํŒ… ๊ทœ์น™์—๋งŒ ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 


๋งˆ์น˜๋ฉฐ

๋ณต์žกํ•œ Kubernetes์˜ ๋„คํŠธ์›Œํฌ๋ฅผ ๋‹จ์ˆœํ™”ํ•˜๊ณ , ์ฒด๊ณ„ํ™” ํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋งŽ์€ ๊ณ ๋ฏผ์ด ์žˆ์—ˆ๋˜ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. 

ํŠนํžˆ ์ธํ”„๋ผ ์ œ๊ณต์ž, ํด๋Ÿฌ์Šคํ„ฐ ์šด์˜์ž, ๊ทธ๋ฆฌ๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์ž๊ฐ€ ์„œ๋กœ์˜ ์˜์—ญ์„ ์นจ๋ฒ”ํ•˜์ง€ ์•Š๊ณ  ๊ฐ์ž์˜ ์ „๋ฌธ ์ง€์‹์„ ๋ฐœํœ˜ํ•  ์ˆ˜ ์žˆ๋Š” ๊ตฌ์กฐ๋Š”, ํ˜„์—…์˜ ๋‹ˆ์ฆˆ๋ฅผ ๊ฐ€์žฅ ์ •ํ™•ํžˆ ๊ฟฐ๋šซ์€ ์„ค๊ณ„๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์•ž์œผ๋กœ ์ ์  ๋งŽ์€ ์˜คํ”ˆ์†Œ์Šค๋“ค์ด ์ด ํˆด์„ ์‚ฌ์šฉํ•  ๊ฒƒ์œผ๋กœ ๋ณด์ด๊ณ , ์ด ๋ณ€ํ™”์— ๋น ๋ฅด๊ฒŒ ์ ์‘ํ•ด๋‚˜๊ฐ€์•ผ ํ•  ๊ฒƒ์œผ๋กœ ๋А๊ปด์ง‘๋‹ˆ๋‹ค.

 

์ฐธ๊ณ 

https://gateway-api.sigs.k8s.io/

 

Introduction - Kubernetes Gateway API

Introduction Gateway API is an official Kubernetes project focused on L4 and L7 routing in Kubernetes. This project represents the next generation of Kubernetes Ingress, Load Balancing, and Service Mesh APIs. From the outset, it has been designed to be gen

gateway-api.sigs.k8s.io