๐ŸŒ… Ingress NGINX Retirement

์•ˆ๋…•ํ•˜์„ธ์š”, ์–ผ๋งˆ ์ „์— ์€ํ‡ด ์†Œ์‹์„ ์ „ํ•œ Ingress NGINX ์— ๋Œ€ํ•œ ์งง์€ ํฌ์ŠคํŒ…์ž…๋‹ˆ๋‹ค.

:green_book:About Ingress NGINX

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ์—์„œ Service๋Š” ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด๋ถ€ ํ†ต์‹ ์„ ๊ด€๋ฆฌํ•˜์ง€๋งŒ, ์™ธ๋ถ€ HTTP/HTTPS ํŠธ๋ž˜ํ”ฝ์„ ๋‚ด๋ถ€ ์„œ๋น„์Šค๋กœ ๋ผ์šฐํŒ…ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” Ingress ๋ฆฌ์†Œ์Šค๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. Ingress๋Š” ์™ธ๋ถ€์—์„œ ํด๋Ÿฌ์Šคํ„ฐ๋กœ ์ง„์ž…ํ•˜๋Š” ํŠธ๋ž˜ํ”ฝ์— ๋Œ€ํ•ด ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ, SSL/TLS ์ข…๋ฃŒ, ํ˜ธ์ŠคํŠธ ๊ธฐ๋ฐ˜ ๋ฐ ๊ฒฝ๋กœ ๊ธฐ๋ฐ˜ ๋ผ์šฐํŒ… ๊ทœ์น™ ๋“ฑ์„ ์ •์˜ํ•˜๋Š” API ์˜ค๋ธŒ์ ํŠธ์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ Ingress ๊ทœ์น™์„ ์‹ค์ œ๋กœ ํ•ด์„ํ•˜๊ณ  ๊ตฌํ˜„(Fulfillment)ํ•˜๋Š” ๋ฐ์ดํ„ฐ ํ”Œ๋ ˆ์ธ ์ปดํฌ๋„ŒํŠธ๊ฐ€ Ingress Controller์ž…๋‹ˆ๋‹ค.

Ingress NGINX Controller (์ดํ•˜ ์ปค๋ฎค๋‹ˆํ‹ฐ ๋ฒ„์ „) ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์ปค๋ฎค๋‹ˆํ‹ฐ์™€ SIG Network ์—์„œ ์œ ์ง€๋ณด์ˆ˜ํ•ด์™”๋˜ ๊ฐ€์žฅ ๋„๋ฆฌ ๋ฐฐํฌ๋œ ์ธ๊ทธ๋ ˆ์Šค ์ปจํŠธ๋กค๋Ÿฌ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ์ด ์ปจํŠธ๋กค๋Ÿฌ๋Š” NGINX๋ฅผ ๋ฐ์ดํ„ฐ ํ”Œ๋ ˆ์ธ์œผ๋กœ ์‚ฌ์šฉํ•˜๋ฉฐ, ํ‘œ์ค€ Ingress API๋งŒ์œผ๋กœ๋Š” ๋ถˆ๊ฐ€๋Šฅํ–ˆ๋˜ ํŠธ๋ž˜ํ”ฝ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ์„ ๊ณต๊ธ‰์—…์ฒด๋ณ„ ์–ด๋…ธํ…Œ์ด์…˜์„ ํ†ตํ•ด ์ œ๊ณตํ•ด์™”์Šต๋‹ˆ๋‹ค.

ํ˜„์žฌ ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ์‚ฌ์šฉ ์ค‘์ธ Ingress NGINX ์ปจํŠธ๋กค๋Ÿฌ์˜ ๋ฐฐํฌ ์ •๋ณด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

$ kubectl get pods --all-namespaces --selector app.kubernetes.io/name=ingress-nginx
NAMESPACE       NAME                                        READY   STATUS    RESTARTS   AGE
ingress-nginx   ingress-nginx-controller-65d7957798-g4htw   1/1     Running   0          82d


$ kubectl get deploy -n ingress-nginx ingress-nginx-controller -o yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: ingress-nginx-controller
  namespace: ingress-nginx
spec:
  template:
    spec:
      containers:
      - args:
        - /nginx-ingress-controller
        ...
        image: ingress-nginx/controller:v1.11.2 # ์ปค๋ฎค๋‹ˆํ‹ฐ ๋ฒ„์ „ ์ด๋ฏธ์ง€       

:green_book:Ingress NGINX์˜ ๊ณต์‹ ์„œ๋น„์Šค ์ข…๋ฃŒ (EOL, 2026-03)

Kubernetes SIG Network ๋ฐ Security Response Committee(SRC)๋Š” ์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ ๊ด€๋ฆฌํ•˜๋Š” Ingress NGINX ์ปจํŠธ๋กค๋Ÿฌ์˜ ๊ณต์‹์ ์ธ ์€ํ‡ด๋ฅผ ๋ฐœํ‘œํ–ˆ์Šต๋‹ˆ๋‹ค.(2025-11-11 )

์„œ๋น„์Šค ์ข…๋ฃŒ ๋ฐฐ๊ฒฝ

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

  1. ์ง€์† ๋ถˆ๊ฐ€๋Šฅํ•œ ์œ ์ง€๋ณด์ˆ˜: ์ด ํ”„๋กœ์ ํŠธ๋Š” ์ˆ˜๋…„ ๋™์•ˆ 1~2๋ช…์˜ ์ž์›๋ด‰์‚ฌ ๊ฐœ๋ฐœ์ž์— ์˜ํ•ด์„œ๋งŒ ์œ ์ง€๋ณด์ˆ˜๋˜์—ˆ์œผ๋ฉฐ, ์ด๋Š” ๊ด‘๋ฒ”์œ„ํ•œ ์‚ฌ์šฉ ๊ทœ๋ชจ์— ๋น„ํ•ด ๊ทน๋„๋กœ ์ทจ์•ฝํ•œ ์œ ์ง€๋ณด์ˆ˜ ๋ชจ๋ธ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

  2. ๋ณด์•ˆ ๋ฐ ๊ธฐ์ˆ  ๋ถ€์ฑ„: ์žฅ๊ธฐ๊ฐ„์˜ ๊ด€๋ฆฌ ๋ถ€์‹ค๋กœ ์ธํ•ด ๊ธฐ์ˆ  ๋ถ€์ฑ„๊ฐ€ ๋ˆ„์ ๋˜์—ˆ๊ณ , snippets1)๊ณผ ๊ฐ™์€ ๊ธฐ๋Šฅ ์ฃผ๋ณ€์—์„œ ๋ณด์•ˆ ๋ฌธ์ œ๊ฐ€ ์ง€์†์ ์œผ๋กœ ์ œ๊ธฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. 1)snippets๋Š” Ingress ์„ค์ •์— Nginx ์„ค์ • ์ฝ”๋“œ๋ฅผ ๊ทธ๋Œ€๋กœ ์‚ฝ์ž…ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๊ธฐ๋Šฅ

EOL ์ผ์ • ๋ฐ ์˜ํ–ฅ

2026๋…„ 3์›” ์ดํ›„ ์ถ”๊ฐ€ ๋ฆด๋ฆฌ์Šค, ๋ฒ„๊ทธ ์ˆ˜์ •, ๊ทธ๋ฆฌ๊ณ  ๋ฐœ๊ฒฌ๋  ์ˆ˜ ์žˆ๋Š” ๋ณด์•ˆ ์ทจ์•ฝ์ ์— ๋Œ€ํ•œ ์—…๋ฐ์ดํŠธ๊ฐ€ ์™„์ „ํžˆ ์ค‘๋‹จ๋ฉ๋‹ˆ๋‹ค. (์ฐธ๊ณ : F5์—์„œ ๊ฐœ๋ฐœ ๋ฐ ์œ ์ง€๋ณด์ˆ˜ํ•˜๋Š” ๋ณ„๋„์˜ ์ƒ์—…์šฉ NGINX Ingress Controller (Official)๋Š” ์„œ๋น„์Šค ์ข…๋ฃŒ ๋Œ€์ƒ์ด ์•„๋‹ˆ๋ฏ€๋กœ , ์ด๋ฅผ ๋‹จ๊ธฐ์ ์ธ ๋Œ€์ฒด ์˜ต์…˜์œผ๋กœ ๊ณ ๋ คํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.)

:green_book:๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๋Œ€์•ˆ: Gateway API

์žฅ๊ธฐ์ ์ธ ๊ด€์ ์—์„œ Kubernetes ๋„คํŠธ์›Œํ‚น์˜ ๊ณต์‹ ํ›„์† ํ‘œ์ค€์€ Gateway API์ž…๋‹ˆ๋‹ค. ์ด๋Š” ๊ธฐ์กด Ingress API์˜ ์„ค๊ณ„์  ํ•œ๊ณ„๋ฅผ ๊ทน๋ณตํ•˜๊ธฐ ์œ„ํ•ด ๋“ฑ์žฅํ–ˆ์Šต๋‹ˆ๋‹ค.

Gateway API ๋ž€?

Gateway API๋Š” ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์—์„œ L4 ๋ฐ L7 ํŠธ๋ž˜ํ”ฝ ๋ผ์šฐํŒ…์„ ์œ„ํ•œ ํ‘œ์ค€ํ™”๋˜๊ณ  ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ œ๊ณตํ•˜๋Š” API ์ž…๋‹ˆ๋‹ค. 2023๋…„์— GA ๋˜์—ˆ์œผ๋ฉฐ, ๊ธฐ์กด Ingress๊ฐ€ ์ œ๊ณตํ•˜์ง€ ๋ชปํ–ˆ๋˜ ๊ณ ๊ธ‰ ๋„คํŠธ์›Œํ‚น ๊ธฐ๋Šฅ์„ ๋„ค์ดํ‹ฐ๋ธŒํ•˜๊ฒŒ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. Gateway API

Gateway API๋Š” ๋‹ค์Œ ๋„ค ๊ฐ€์ง€ ์„ค๊ณ„ ์›์น™์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค:

  • ์—ญํ•  ์ค‘์‹ฌ(Role-oriented): ์ธํ”„๋ผ ๊ด€๋ฆฌ(Gateway)์™€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ผ์šฐํŒ…(Route) ์ฑ…์ž„์„ ๋ช…ํ™•ํ•˜๊ฒŒ ๋ถ„๋ฆฌํ•˜์—ฌ RBAC(์—ญํ•  ๊ธฐ๋ฐ˜ ์ ‘๊ทผ ์ œ์–ด)์™€ ๊ฑฐ๋ฒ„๋„Œ์Šค๋ฅผ ๊ฐ•ํ™”ํ•ฉ๋‹ˆ๋‹ค.

  • ํ‘œํ˜„๋ ฅ(Expressive): ํ—ค๋” ๊ธฐ๋ฐ˜ ์ผ์น˜, ๊ฐ€์ค‘์น˜ ํŠธ๋ž˜ํ”ฝ ๋ผ์šฐํŒ…, ์š”์ฒญ ํƒ€์ž„์•„์›ƒ ๋“ฑ ๊ธฐ์กด Ingress์—์„œ ์–ด๋…ธํ…Œ์ด์…˜์œผ๋กœ๋งŒ ๊ฐ€๋Šฅํ–ˆ๋˜ ๋ณต์žกํ•œ ๊ธฐ๋Šฅ์„ ํ‘œ์ค€ํ™”๋œ ํ•„๋“œ๋กœ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

  • ์ด์‹์„ฑ(Portable): ๊ณต๊ธ‰์—…์ฒด๋ณ„ ์–ด๋…ธํ…Œ์ด์…˜ ์˜์กด์„ฑ์„ ์ค„์—ฌ, ๊ตฌ์„ฑ์„ ๋‹ค๋ฅธ Gateway API ๊ตฌํ˜„์ฒด๋กœ ์‰ฝ๊ฒŒ ์ด์ „ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

  • ํ™•์žฅ์„ฑ(Extensible): ์ •์ฑ…(Policies) CRD๋‚˜ ํ•„ํ„ฐ(Filters)์™€ ๊ฐ™์€ ๊ตฌ์กฐํ™”๋œ ํ™•์žฅ ๋ชจ๋ธ์„ ์ œ๊ณตํ•˜์—ฌ, ๊ณต๊ธ‰์—…์ฒด ๊ณ ์œ  ๊ธฐ๋Šฅ์„ ์ผ๊ด€๋œ ๋ฐฉ์‹์œผ๋กœ ๋…ธ์ถœํ•ฉ๋‹ˆ๋‹ค.

Ingress NGINX vs. Gateway API

Ingress API์™€ Gateway API์˜ ๊ฐ€์žฅ ํฐ ์ฐจ์ด์ ์€ ๊ตฌ์„ฑ ๋ฐฉ์‹, ์ฑ…์ž„ ๋ถ„๋ฆฌ, ๊ทธ๋ฆฌ๊ณ  ํ™•์žฅ์„ฑ์— ๋Œ€ํ•œ ์ ‘๊ทผ ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

:green_book:๋งˆ์น˜๋ฉฐ

์˜ค๋žซ๋™์•ˆ ์ •๋“ค์—ˆ๋˜ Ingress NGINX๊ฐ€ ์€ํ‡ด ์ˆ˜์ˆœ์„ ๋ฐŸ๊ฒŒ ๋˜์—ˆ๋‹ค๋Š” ์†Œ์‹์— ์•„์‰ฌ์šด ๋งˆ์Œ์„ ๋‹ด์•„ ํฌ์ŠคํŒ…์„ ์ ์–ด๋ดค์Šต๋‹ˆ๋‹ค. (์ฐธ ์†์— ์ต์€ ๋„๊ตฌ์˜€๋Š”๋ฐ ๋ง์ด์ฃ .) ์—ฐ๋ง์ด๋ผ ์ •์‹ ์—†์œผ์‹œ๊ฒ ์ง€๋งŒ, ์„œ๋น„์Šค์˜ ๋Œ€๋ฌธ ์—ญํ• ์„ ํ•˜๋Š” ์ค‘์š”ํ•œ ์นœ๊ตฌ์ธ ๋งŒํผ ๋ฏธ๋ฆฌ๋ฏธ๋ฆฌ ์ด์‚ฌ ์ค€๋น„๋ฅผ ๊ณ ๋ฏผํ•ด๋ณด์‹œ๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. Gateway API๋‚˜ Istio ๊ฐ™์€ ๋Œ€์•ˆ๋“ค์ด ์žˆ์œผ๋‹ˆ, ์ผ๋‹จ โ€˜์–ผ๋งˆ๋‚˜ ๊ณ ์ณ์•ผ ํ• ์ง€โ€™ ๊ฒฌ์ ๋ถ€ํ„ฐ ๋‚ด๋ด์•ผ๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ ๋ชจ๋‘ ๋”ฐ๋œปํ•œ ์—ฐ๋ง ๋ณด๋‚ด์„ธ์š” :christmas_tree::mrs_claus:

2 Likes