Ingress

Ingress๋Š” ํด๋Ÿฌ์Šคํ„ฐ ์™ธ๋ถ€์˜ HTTP ๋ฐ HTTPS ๊ฒฝ๋กœ๋ฅผ services์— ๋…ธ์ถœ ํ•ฉ๋‹ˆ๋‹ค. ํŠธ๋ž˜ํ”ฝ ๋ผ์šฐํŒ…์€ Ingress ๋ฆฌ์†Œ์Šค์— ์ •์˜ ๋œ ๊ทœ์น™์— ์˜ํ•ด ์ œ์–ด ๋ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ์€ Ingress๊ฐ€ ๋ชจ๋“  ํŠธ๋ž˜ํ”ฝ์„ ํ•˜๋‚˜์˜ ์„œ๋น„์Šค๋กœ ๋ณด๋‚ด๋Š” ๊ฐ„๋‹จํ•œ ์˜ˆ ์ž…๋‹ˆ๋‹ค.

Ingress๋Š” ์„œ๋น„์Šค์— ์™ธ๋ถ€์—์„œ ์—ฐ๊ฒฐํ•  ์ˆ˜์žˆ๋Š” URL์„ ์ œ๊ณตํ•˜๊ณ , ํŠธ๋ž˜ํ”ฝ ๋ถ€ํ•˜๋ฅผ ๋ถ„์‚ฐํ•˜๊ณ , SSL/TLS๋ฅผ ํ„ฐ๋ฏธ๋„ค์ด์…˜ ํ•˜๊ณ , ์ด๋ฆ„ ๊ธฐ๋ฐ˜์˜ ๊ฐ€์ƒ ํ˜ธ์ŠคํŒ…์„ ์ œ๊ณต ํ•˜๋„๋ก ๊ตฌ์„ฑ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Ingress controller๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Ingress๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ์—ญํ• ์„ ํ•˜์ง€๋งŒ, ํŠธ๋ž˜ํ”ฝ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋„๋ก ์—ฃ์ง€ ๋ผ์šฐํ„ฐ ๋˜๋Š” ์ถ”๊ฐ€ ํ”„๋ŸฐํŠธ ์—”๋“œ๋ฅผ ๊ตฌ์„ฑ ํ•  ์ˆ˜ ๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

Ingress๋Š” ์ž„์˜์˜ ํฌํŠธ ๋˜๋Š” ํ”„๋กœํ† ์ฝœ์„ ๋…ธ์ถœํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. HTTP ๋ฐ HTTPS ์ด์™ธ์˜ ์„œ๋น„์Šค๋ฅผ ์ธํ„ฐ๋„ท์— ๋…ธ์ถœํ•˜๋Š” ๊ฒฝ์šฐ ์ผ๋ฐ˜์ ์œผ๋กœ Service.Type = NodePort ๋˜๋Š” Service.Type=LoadBalancer๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

Ingress๋Š” ์™ธ๋ถ€ ์š”์ฒญ ์ฒ˜๋ฆฌ์— ๋Œ€ํ•œ ๊ทœ์น™๋“ค์„ ์„ค์ •ํ•ด๋†“์€ ๊ฒƒ์„ ์˜๋ฏธํ•˜๋ฉฐ, ์ด๋Ÿฐ ์„ค์ •์ด ๋™์ž‘ํ•˜๊ธฐ ์œ„ํ•ด์„œ ํ•„์š”ํ•œ ๊ฒƒ์ด Ingress controller์ž…๋‹ˆ๋‹ค.

AWS Load Balancer Controller์™€ ๊ฐ™์€ Ingress controller๋ฅผ ๋ฐฐํฌํ•ด์•ผ ํ•˜๋ฉฐ, ์—ฌ๋Ÿฌ Ingress ์ปจํŠธ๋กค๋Ÿฌ ์ค‘์—์„œ ์„ ํƒํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋‹ค์–‘ํ•œ Ingress controller ๋งˆ๋‹ค ์•ฝ๊ฐ„ ๋‹ค๋ฅด๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

ingress-nginx๋ฅผ ์œ„ํ•œ ์ตœ์†Œ Ingress ๋ฆฌ์†Œ์Šค ์˜ˆ ์ž…๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ๋ชจ๋“  ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๋ฆฌ์†Œ์Šค์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ Ingress์—๋Š” apiVersion,kind,metadata ํ•„๋“œ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. Ingress ๊ฐ์ฒด์˜ ์ด๋ฆ„์€ ์œ ํšจํ•œ DNS subdomain name ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์„ค์ • ํŒŒ์ผ ์ž‘์—…์— ๋Œ€ํ•œ ์ผ๋ฐ˜ ์ •๋ณด๋Š” deploying applications, configuring containers, managing resources๋ฅผ ์ฐธ์กฐ ํ•˜์‹ญ์‹œ์˜ค. Ingress๋Š” annotation์„ ์‚ฌ์šฉํ•˜์—ฌ Ingress ์ปจํŠธ๋กค๋Ÿฌ์˜ ์ผ๋ถ€ ์˜ต์…˜์„ ๋นˆ๋ฒˆํ•˜๊ฒŒ ๊ตฌ์„ฑ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋กœ rewrite-target annotation๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ Ingress controller๋Š” ๋‹ค๋ฅธ annotation์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์–ด๋–ค annotation์ด ์ง€์› ๋˜๋Š”์ง€ ์•Œ์•„ ๋ณด๋ ค๋ฉด ์„ ํƒํ•œ Ingress ์ปจํŠธ๋กค๋Ÿฌ์— ๋Œ€ํ•œ ๋ฌธ์„œ๋ฅผ ๊ฒ€ํ†  ํ•˜์‹ญ์‹œ์˜ค.

Ingress spec์—๋Š” ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ ๋˜๋Š” ํ”„๋ก์‹œ ์„œ๋ฒ„๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ชจ๋“  ์ •๋ณด๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€ ๋ชจ๋“  ์ˆ˜์‹  ์š”์ฒญ๊ณผ ์ผ์น˜ํ•˜๋Š” ๊ทœ์น™ ๋ชฉ๋ก์ด ํฌํ•จ๋˜์–ด ์žˆ๋‹ค๋Š” ๊ฒƒ ์ž…๋‹ˆ๋‹ค. Ingress ๋ฆฌ์†Œ์Šค๋Š” HTTP ํŠธ๋ž˜ํ”ฝ์„ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•œ ๊ทœ์น™๋งŒ ์ง€์› ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ http ๊ทœ์น™์—๋Š” ๋‹ค์Œ ์ •๋ณด๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

  • ์„ ํƒ์  ํ˜ธ์ŠคํŠธ. ์ด ์˜ˆ์—์„œ๋Š” ํ˜ธ์ŠคํŠธ๊ฐ€ ์ง€์ •๋˜์ง€ ์•Š์•˜์œผ๋ฏ€๋กœ ์ง€์ •๋œ IP ์ฃผ์†Œ๋ฅผ ํ†ตํ•ด ๋ชจ๋“  ์ธ๋ฐ”์šด๋“œ HTTP ํŠธ๋ž˜ํ”ฝ์— ๊ทœ์น™์ด ์ ์šฉ ๋ฉ๋‹ˆ๋‹ค. ํ˜ธ์ŠคํŠธ๊ฐ€ ์ œ๊ณต๋˜๋ฉด (์˜ˆ:foo.bar.com) ๊ทœ์น™์ด ํ•ด๋‹น ํ˜ธ์ŠคํŠธ์— ์ ์šฉ ๋ฉ๋‹ˆ๋‹ค.

  • ๊ฐ๊ฐ serviceName ๋ฐ servicePort๋กœ ์ •์˜๋œ ์—ฐ๊ด€๋œ ๋ฐฑ์—”๋“œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ๋กœ ๋ชฉ๋ก (์˜ˆ:/testpath). ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ๊ฐ€ ํŠธ๋ž˜ํ”ฝ์„ ์ฐธ์กฐ ๋œ ์„œ๋น„์Šค๋กœ ๋ณด๋‚ด๊ธฐ ์ „์— ํ˜ธ์ŠคํŠธ์™€ ๊ฒฝ๋กœ๊ฐ€ ์ˆ˜์‹  ์š”์ฒญ์˜ ์ฝ˜ํ…์ธ ์™€ ์ผ์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ๋ฐฑ์—”๋“œ๋Š” Services doc์— ์„ค๋ช…๋œ ๋Œ€๋กœ ์„œ๋น„์Šค ๋ฐ ํฌํŠธ ์ด๋ฆ„์˜ ์กฐํ•ฉ ์ž…๋‹ˆ๋‹ค. ๊ทœ์น™์˜ ํ˜ธ์ŠคํŠธ ๋ฐ ๊ฒฝ๋กœ์™€ ์ผ์น˜ํ•˜๋Š” Ingress์— ๋Œ€ํ•œ HTTP (๋ฐ HTTPS) ์š”์ฒญ์ด ๋‚˜์—ด๋œ ๋ฐฑ์—”๋“œ๋กœ ์ „์†ก ๋ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ณธ ๋ฐฑ์—”๋“œ๋Š” ์ข…์ข… ์‚ฌ์–‘์˜ ๊ฒฝ๋กœ์™€ ์ผ์น˜ํ•˜์ง€ ์•Š๋Š” ๋ชจ๋“  ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” Ingress ์ปจํŠธ๋กค๋Ÿฌ์—์„œ ๊ตฌ์„ฑ ๋ฉ๋‹ˆ๋‹ค.

๊ทœ์น™์ด ์—†๋Š” Ingress๋Š” ๋ชจ๋“  ํŠธ๋ž˜ํ”ฝ์„ ๋‹จ์ผ ๊ธฐ๋ณธ ๋ฐฑ์—”๋“œ๋กœ ๋ณด๋ƒ…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ๋ฐฑ์—”๋“œ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ Ingress controller์˜ ๊ตฌ์„ฑ ์˜ต์…˜์ด๋ฉฐ Ingress ๋ฆฌ์†Œ์Šค์— ์ง€์ •๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Ingress ๊ฐ์ฒด์˜ HTTP ์š”์ฒญ๊ณผ ์ผ์น˜ํ•˜๋Š” ํ˜ธ์ŠคํŠธ ๋˜๋Š” ๊ฒฝ๋กœ๊ฐ€ ์—†์œผ๋ฉด ํŠธ๋ž˜ํ”ฝ์ด ๊ธฐ๋ณธ ๋ฐฑ์—”๋“œ๋กœ ๋ผ์šฐํŒ…๋ฉ๋‹ˆ๋‹ค.

์—ฌ๊ธฐ๋ฅผ ํด๋ฆญํ•˜์—ฌ ๊ด€๋ จ ์ฃผ์ œ๋ฅผ ๋” ์ฝ์–ด ๋ณด์‹ญ์‹œ์˜ค.

Last updated

Was this helpful?