๐Ÿ“ Ingress-NGINX Retirement ํ•ต์‹ฌ ๋…ผ์  - Gateway API ๋ฉ”์ธํ…Œ์ด๋„ˆ ๊ด€์ 

์˜ค๋Š” 3์›” ์˜ˆ์ •๋œ **Ingress-NGINX์˜ ์€ํ‡ด(Retirement)**๋ฅผ ์•ž๋‘๊ณ , Gateway API ๋ฉ”์ธํ…Œ์ด๋„ˆ์ธ Rob Scott๊ฐ€ ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ์šฐ๋ ค์™€ ์˜คํ•ด๋ฅผ 4๊ฐ€์ง€ ํ•ต์‹ฌ ํฌ์ธํŠธ๋กœ ์ •๋ฆฌํ•œ ๋‚ด์šฉ์— ๋Œ€ํ•ด์„œ ํ•ต์‹ฌ๋งŒ ์š”์•ฝํ•œ ์ •๋ณด๋ฅผ ๊ณต์œ ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

1. :light_bulb: ์ฃผ์š” ์š”์•ฝ ์ •๋ณด - Gateway API ๋ฉ”์ธํ…Œ์ด๋„ˆ ์ž…์žฅ

  1. Gateway API๋Š” ๋ถˆ์•ˆ์ •ํ•˜๋‹ค?!?!

    • Fact: Gateway API๋Š” ์ด๋ฏธ 2๋…„ ๋„˜๊ฒŒ GA(General Availability) ์ƒํƒœ๋‹ค.
    • Detail: ์‹คํ—˜์ (Experimental) ๊ธฐ๋Šฅ์€ Feature Gate๋กœ ์ˆจ๊ฒจ์ ธ ์žˆ์–ด ์•ˆ์ „ํ•˜๋ฉฐ, ์˜คํžˆ๋ ค Ingress ์ปจํŠธ๋กค๋Ÿฌ๋“ค๋ณด๋‹ค Gateway ๊ตฌํ˜„์ฒด(Envoy Gateway ๋“ฑ)์˜ ๊ฐœ๋ฐœ์ด ํ›จ์”ฌ ํ™œ๋ฐœํ•˜๋‹ค.
  2. ๋‹ค๋ฅธ Ingress Controller๋กœ ๊ฐ€๋Š” ๊ฒŒ ๋” ์‰ฝ์ง€ ์•Š๋‚˜?!?!

    • Fact: ingress-nginx๋ฅผ ์“ฐ๋˜ ์‚ฌ๋žŒ๋“ค์€ ์ด๋ฏธ ์ˆ˜๋งŽ์€ **Annotation(์ฃผ์„)**์— ๋ฝ์ธ(Lock-in)๋˜์–ด ์žˆ๋‹ค.
    • Detail: ๋‹ค๋ฅธ Ingress ์ปจํŠธ๋กค๋Ÿฌ(Traefik, HAProxy ๋“ฑ)๋กœ ๊ฐ€๋ ค๋ฉด ์–ด์ฐจํ”ผ ๊ทธ์ชฝ ์ „์šฉ Annotation์œผ๋กœ ๋‹ค ๋ฐ”๊ฟ”์•ผ ํ•œ๋‹ค. ๊ทธ๋Ÿด ๋ฐ”์—” ํ‘œ์ค€ํ™”๋œ ํฌํ„ฐ๋นŒ๋ฆฌํ‹ฐ๋ฅผ ์ œ๊ณตํ•˜๋Š” Gateway API๋กœ ๊ฐ€๋Š” ๊ฒŒ ๋‚ซ๋‹ค.
  3. Gateway API์— ์—†๋Š” ๊ธฐ๋Šฅ์ด ์žˆ๋‹ค?!?!

    • Fact: Core API์— ์—†๋”๋ผ๋„ ๊ฐ ๊ตฌํ˜„์ฒด(Implementation)์˜ Extension์œผ๋กœ ๋Œ€๋ถ€๋ถ„ ํ•ด๊ฒฐ ๊ฐ€๋Šฅํ•˜๋‹ค.
    • Detail: GKE Gateway, Envoy Gateway ๋“ฑ์€ ์ด๋ฏธ ๊ฐ•๋ ฅํ•œ Custom Policy๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.
  4. ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์ด ๋„ˆ๋ฌด ํž˜๋“ค๋‹ค?!?!

    • Solution: ingress2gateway๋ผ๋Š” ํˆด์„ ํ†ตํ•ด ingress-nginx์˜ ์„ค์ •์„ Gateway API ๋ฆฌ์†Œ์Šค๋กœ ์ž๋™ ๋ณ€ํ™˜ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ฐ•๋ ฅํ•˜๊ฒŒ ์ง€์› ์ค‘์ด๋‹ค.

2. :speaking_head: Community Q&A (์ฃผ์š” ์งˆ๋ฌธ ๋ฐ ๋‹ต๋ณ€)

์ปค๋ฎค๋‹ˆํ‹ฐ ๋Œ“๊ธ€์—์„œ ๋‚˜์˜จ ํ•ต์‹ฌ ์งˆ๋ฌธ๋“ค๊ณผ ๊ทธ์— ๋Œ€ํ•œ ๋‹ต๋ณ€์„ ์ •๋ฆฌํ–ˆ๋‹ค.

  • Q: Gateway API๋Š” ๋„ˆ๋ฌด ๋ณต์žกํ•ด. (IngressClass, Ingress vs GatewayClass, Gateway, HTTPRoute)
    • A: ์ธ์ •ํ•œ๋‹ค. ํ•˜์ง€๋งŒ HTTPRoute๊ฐ€ ๊ธฐ์กด Ingress์˜ ์ง„์ •ํ•œ ๋Œ€์ฒด์žฌ๋‹ค. Gateway ๋ฆฌ์†Œ์Šค๊ฐ€ ์ค‘๊ฐ„์— ์ถ”๊ฐ€๋จ์œผ๋กœ์จ ๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ์™€ ๋ผ์šฐํŒ… ๊ทœ์น™์„ ๋ถ„๋ฆฌํ•  ์ˆ˜ ์žˆ์–ด, ํ•˜๋‚˜์˜ ๋ผ์šฐํŒ… ๊ทœ์น™(HTTPRoute)์„ ๋‚ด๋ถ€/์™ธ๋ถ€ ๊ฒŒ์ดํŠธ์›จ์ด์— ๋™์‹œ์— ๋ถ™์ด๋Š” ๋“ฑ ํ›จ์”ฌ ์œ ์—ฐํ•œ ๊ตฌ์„ฑ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  • Q: ๊ทธ๋Ÿผ Ingress API๋Š” ์ด์ œ ์ฃฝ์€ ๊ฑด๊ฐ€?
    • A: **โ€œFrozen APIโ€**๋‹ค. ์—†์–ด์ง€์ง„ ์•Š๊ฒ ์ง€๋งŒ(Kubernetes 2.0 ์ „๊นŒ์ง„ ์œ ์ง€), ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ์ถ”๊ฐ€๋Š” ์—†๋‹ค. ๋ชจ๋“  ํ˜์‹ (CORS, Timeouts ๋“ฑ)์€ Gateway API์—์„œ๋งŒ ์ผ์–ด๋‚œ๋‹ค.
  • Q: Gateway API๋กœ ๊ฐ€๋ ค๋ฉด CNI(Calico, Flannel ๋“ฑ)๋„ ๋ฐ”๊ฟ”์•ผ ํ•˜๋‚˜?
    • A: ์•„๋‹ˆ์˜ค. (Cilium Gateway ๊ฐ™์€ ํŠน์ˆ˜ ์ผ€์ด์Šค ์ œ์™ธ). Gateway API ๊ตฌํ˜„์ฒด๋Š” ๋Œ€๋ถ€๋ถ„ CNI์™€ ๋…๋ฆฝ์ ์œผ๋กœ ์ž‘๋™ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Istio๋‚˜ Envoy Gateway๋Š” CNI ๊ต์ฒด ์—†์ด ๋„์ž… ๊ฐ€๋Šฅํ•˜๋‹ค.
  • Q: ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์ „๋žต์€?
    • A: ํ•œ ๋ฒˆ์— ๋‹ค ๋ฐ”๊ฟ€ ํ•„์š” ์—†๋‹ค. ๊ธฐ์กด Ingress์™€ ์ƒˆ๋กœ์šด Gateway API๋ฅผ ๋™์‹œ์—(Side-by-side) ์šด์˜ํ•˜๋ฉฐ ์ ์ง„์ ์œผ๋กœ ํŠธ๋ž˜ํ”ฝ์„ ์˜ฎ๊ฒจ๋ผ.

๊ฒฐ๋ก : Ingress-Nginx๋Š” ์ „์„ค์ด์—ˆ์ง€๋งŒ, ์ด์ œ ๋ณด๋‚ด์ค„ ๋•Œ๊ฐ€ ๋๋‹ค. Gateway API is the new standard. :rocket:

[์ถœ์ฒ˜] Reddit - The heart of the internet

4 Likes

@hyungwook.yu ๋‹˜! ์ฐธ๊ณ ์š”! :slight_smile: