Istio์˜ Dark ์ถœ์‹œ: ๋น„๋ฐ€ ์„œ๋น„์Šค

๊ตญ์ œ์ ์ธ ๋ฏธ์Šคํ„ฐ๋ฆฌ ์ธ๋ฌผ์ธ ์˜ค์Šคํ‹ด ํŒŒ์›Œ์Šค๋Š” โ€œ์œ„ํ—˜์ด ๋‚˜์˜ ์ค‘๊ฐ„ ์ด๋ฆ„์ด๋‹คโ€๋ผ๊ณ  ๋งํ•˜๊ณค ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์Šˆํผ ์—์ด์ „ํŠธ์™€ ์ •๋ณด ๊ธฐ๊ด€์ด ๋†’์ด ํ‰๊ฐ€ํ•˜๋Š” ๊ฒƒ์€ ์ง€๋ฃจํ•จ์ด ์œ„ํ—˜๋ณด๋‹ค ํ›จ์”ฌ ๋‚˜์€ ์ปดํ“จํ„ฐ ์„œ๋น„์Šค์—๋Š” ์ „ํ˜€ ์ ํ•ฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Istio์˜ Dark ์ถœ์‹œ: ๋น„๋ฐ€ ์„œ๋น„์Šค

๊ทธ๋ฆฌ๊ณ  Istio๋Š” OpenShift ๋ฐ Kubernetes์™€ ํ•จ๊ป˜ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๋ฐฐํฌ๋ฅผ ์ •๋ง ์ง€๋ฃจํ•˜๊ณ  ์˜ˆ์ธก ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์ •๋ง ์ข‹์Šต๋‹ˆ๋‹ค. Istio ์‹œ๋ฆฌ์ฆˆ์˜ ๋„ค ๋ฒˆ์งธ์ด์ž ๋งˆ์ง€๋ง‰ ๊ฒŒ์‹œ๋ฌผ์—์„œ ์ด์— ๋Œ€ํ•ด ๋” ์ž์„ธํžˆ ์ด์•ผ๊ธฐํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ง€๋ฃจํ•จ์ด ๋งž์„ ๋•Œ

์šฐ๋ฆฌ์˜ ๊ฒฝ์šฐ ์ง€๋ฃจํ•จ์€ ๋งˆ์ง€๋ง‰ ๋‹จ๊ณ„์—์„œ๋งŒ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๋‚จ์€ ๊ฒƒ์€ ์•‰์•„์„œ ๊ณผ์ •์„ ์ง€์ผœ๋ณด๋Š” ๊ฒƒ๋ฟ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋ฅผ ์œ„ํ•ด์„œ๋Š” ๋จผ์ € ๋ชจ๋“  ๊ฒƒ์„ ๊ตฌ์„ฑํ•ด์•ผ ํ•˜๋ฉฐ ์—ฌ๊ธฐ์„œ๋Š” ๋งŽ์€ ํฅ๋ฏธ๋กœ์šด ๊ฒƒ๋“ค์ด ์—ฌ๋Ÿฌ๋ถ„์„ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

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

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

์ง€๋ฃจํ•จ์„ ์ •๋ฆฌํ•˜๋Š” ๊ฒƒ์€ ํฅ๋ฏธ๋กญ๋‹ค

๋ชจ๋“  HTTP ์š”์ฒญ์„ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๊ถŒ์žฅ์‚ฌํ•ญ v1๋กœ ๋ผ์šฐํŒ…ํ•˜๋Š” ๋‹ค์Œ Istio ๋ผ์šฐํŒ… ๊ทœ์น™์„ ์‚ดํŽด๋ณด์„ธ์š”(๋ชจ๋“  ์˜ˆ๋Š” ๋‹ค์Œ์—์„œ ๊ฐ€์ ธ์˜ด). Istio ํŠœํ† ๋ฆฌ์–ผ GitHub ์ €์žฅ์†Œ) ๋™์‹œ์— ๊ถŒ์žฅ์‚ฌํ•ญ v2 ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์— ๋ฏธ๋Ÿฌ๋งํ•ฉ๋‹ˆ๋‹ค.

Istio์˜ Dark ์ถœ์‹œ: ๋น„๋ฐ€ ์„œ๋น„์Šค
๋ผ๋ฒจ์— ์ฃผ์˜ํ•˜์„ธ์š” mirror: ํ™”๋ฉด ํ•˜๋‹จ - ํŠธ๋ž˜ํ”ฝ ๋ฏธ๋Ÿฌ๋ง์„ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ˆ, ์ •๋ง ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค!

์ด ๊ทœ์น™์˜ ๊ฒฐ๊ณผ๋Š” ํ”„๋กœ๋•์…˜ ์‹œ์Šคํ…œ(v1)์ด ๋“ค์–ด์˜ค๋Š” ์š”์ฒญ์„ ๊ณ„์† ์ฒ˜๋ฆฌํ•˜์ง€๋งŒ ์š”์ฒญ ์ž์ฒด๋Š” v2์— ๋น„๋™๊ธฐ์‹์œผ๋กœ ๋ฏธ๋Ÿฌ๋ง๋˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฆ‰, ์™„์ „ํ•œ ๋ณต์ œ๋ณธ์ด v2๋กœ ์ด๋™ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ํ”„๋กœ๋•์…˜ ์‹œ์Šคํ…œ์˜ ์ž‘๋™์„ ์–ด๋–ค ์‹์œผ๋กœ๋“  ๋ฐฉํ•ดํ•˜์ง€ ์•Š๊ณ  ์‹ค์ œ ์กฐ๊ฑด(์‹ค์ œ ๋ฐ์ดํ„ฐ ๋ฐ ํŠธ๋ž˜ํ”ฝ)์—์„œ vXNUMX๋ฅผ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด ํ…Œ์ŠคํŠธ ๊ตฌ์„ฑ์ด ์ง€๋ฃจํ•ด ์ง‘๋‹ˆ๊นŒ? ๋„ค, ๋ฌผ๋ก ์ด์ฃ . ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์€ ํฅ๋ฏธ๋กœ์šด ๋ฐฉ์‹์œผ๋กœ ์ด๋ฃจ์–ด์กŒ์Šต๋‹ˆ๋‹ค.

๋“œ๋ผ๋งˆ๋ฅผ ์ถ”๊ฐ€ํ•˜์ž

v2 ์ฝ”๋“œ์—์„œ๋Š” ๋“ค์–ด์˜ค๋Š” ์š”์ฒญ์œผ๋กœ ์ธํ•ด ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ๋Š” ์ƒํ™ฉ์„ ์ œ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์š”์ฒญ ์ž์ฒด๋Š” ์‰ฝ๊ณ  ํˆฌ๋ช…ํ•˜๊ฒŒ ๋ฏธ๋Ÿฌ๋ง๋˜์ง€๋งŒ ํ…Œ์ŠคํŠธ์—์„œ ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•์„ ์„ ํƒํ•˜๋Š” ๊ฒƒ์€ ๊ท€ํ•˜์—๊ฒŒ ๋‹ฌ๋ ค ์žˆ์œผ๋ฉฐ ์ด๋Š” ์•ฝ๊ฐ„ ๊ฑฑ์ •์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค.

์ค‘์š”ํ•œ ์ ์„ ๋‹ค์‹œ ๋ง์”€๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค

ํŠธ๋ž˜ํ”ฝ ๋ฏธ๋Ÿฌ๋ง(Dark Launch/Request Mirroring)์„ ์‚ฌ์šฉํ•œ ๋น„๋ฐ€ ์‹คํ–‰์€ ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ๋“  ์ฝ”๋“œ์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๊ณ  ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ƒ๊ฐํ•  ๊ฑฐ๋ฆฌ

์š”์ฒญ์ด ๋ฏธ๋Ÿฌ๋ง๋˜๋Š” ๊ณณ์—์„œ ์š”์ฒญ ์ค‘ ์ผ๋ถ€๋ฅผ v1์ด ์•„๋‹Œ v2๋กœ ๋ณด๋‚ด๋ฉด ์–ด๋–ป๊ฒŒ ๋˜๋‚˜์š”? ์˜ˆ๋ฅผ ๋“ค์–ด ์ „์ฒด ์š”์ฒญ์˜ 2% ๋˜๋Š” ํŠน์ • ์‚ฌ์šฉ์ž ๊ทธ๋ฃน์˜ ์š”์ฒญ๋งŒ ํ•ด๋‹น๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ v1์˜ ์ž‘๋™ ๋ฐฉ์‹์„ ์ด๋ฏธ ์‚ดํŽด๋ณด๊ณ  ์ ์ฐจ์ ์œผ๋กœ ๋ชจ๋“  ์š”์ฒญ์„ ์ƒˆ ๋ฒ„์ „์œผ๋กœ ์ „์†กํ•ฉ๋‹ˆ๋‹ค. ๋˜๋Š” ๊ทธ ๋ฐ˜๋Œ€๋กœ v2์— ๋ฌธ์ œ๊ฐ€ ์žˆ์œผ๋ฉด ๋ชจ๋“  ๊ฒƒ์„ vXNUMX๋กœ ๋˜๋Œ๋ฆฝ๋‹ˆ๋‹ค. ์นด๋‚˜๋ฆฌ์•„ ๋ฐฐํฌ๋ผ๊ณ  ํ•˜๋Š” ๊ฒƒ ๊ฐ™์•„์š”. ๋‹ค์‹œ ์ฑ„๊ตดํ•˜๋Ÿฌ ๊ฐ‘๋‹ˆ๋‹ค, ๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์ด ๋Ÿฌ์‹œ์•„ ์ถœ์‹ ์ด๋ผ๋ฉด ์•„๋งˆ๋„ ๋‹ค์Œ์— ๋Œ€ํ•œ ์–ธ๊ธ‰์ด ํฌํ•จ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ณ ์–‘์ด), ์ด์ œ ์ด์— ๋Œ€ํ•ด ๋” ์ž์„ธํžˆ ์‚ดํŽด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

Istio์˜ Canary ๋ฐฐํฌ: ์ปค๋ฏธ์…”๋‹ ๋‹จ์ˆœํ™”

์กฐ์‹ฌ์Šค๋Ÿฝ๊ฒŒ ์ฐจ๊ทผ์ฐจ๊ทผ

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

๋ฌผ๋ก  Istio๋Š” ์ง€๋Šฅํ˜• ์š”์ฒญ ๋ผ์šฐํŒ…์„ ์œ„ํ•œ ๋ช‡ ๊ฐ€์ง€ ์ข‹์€ ์˜ต์…˜์„ ์ œ๊ณตํ•˜์—ฌ Canary ๋ฐฐํฌ๋ฅผ ๋‹จ์ˆœํ™”ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค. ์ด ๋ชจ๋“  ์ž‘์—…์€ ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ๋“  ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๊ฑด๋“œ๋ฆฌ์ง€ ์•Š๊ณ ๋„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ธŒ๋ผ์šฐ์ € ํ•„ํ„ฐ๋ง

๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๋ผ์šฐํŒ… ๊ธฐ์ค€ ์ค‘ ํ•˜๋‚˜๋Š” ๋ธŒ๋ผ์šฐ์ € ๊ธฐ๋ฐ˜ ๋ฆฌ๋””๋ ‰์…˜์ž…๋‹ˆ๋‹ค. Safari ๋ธŒ๋ผ์šฐ์ €์˜ ์š”์ฒญ๋งŒ v2๋กœ ์ด๋™ํ•˜๋ ค๊ณ  ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ˆ˜ํ–‰ ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

Istio์˜ Dark ์ถœ์‹œ: ๋น„๋ฐ€ ์„œ๋น„์Šค
์ด ๋ผ์šฐํŒ… ๊ทœ์น™์„ ์ ์šฉํ•œ ํ›„ ๋‹ค์Œ ๋ช…๋ น์„ ์‚ฌ์šฉํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. curl ๋ฃจํ”„์—์„œ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์— ๋Œ€ํ•œ ์‹ค์ œ ์š”์ฒญ์„ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ํ•ฉ๋‹ˆ๋‹ค. ์Šคํฌ๋ฆฐ์ƒท์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋“ฏ์ด ๋ชจ๋‘ v1๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

Istio์˜ Dark ์ถœ์‹œ: ๋น„๋ฐ€ ์„œ๋น„์Šค
v2์˜ ํŠธ๋ž˜ํ”ฝ์€ ์–ด๋””์— ์žˆ๋‚˜์š”? ์ด ์˜ˆ์—์„œ๋Š” ๋ชจ๋“  ์š”์ฒญ์ด ์ž์ฒด ๋ช…๋ น์ค„์—์„œ๋งŒ ์™”๊ธฐ ๋•Œ๋ฌธ์— ๋‹จ์ˆœํžˆ ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์œ„ ํ™”๋ฉด์˜ ๊ฒฐ๋ก ์— ์ฃผ์˜ํ•˜์„ธ์š”. ์ด๋Š” Safari ๋ธŒ๋ผ์šฐ์ €์—์„œ ์š”์ฒญ์„ ์‹คํ–‰ํ–ˆ๋‹ค๋Š” ์‚ฌ์‹ค์— ๋Œ€ํ•œ ๋ฐ˜์‘์ด๋ฉฐ ๊ฒฐ๊ณผ์ ์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

Istio์˜ Dark ์ถœ์‹œ: ๋น„๋ฐ€ ์„œ๋น„์Šค

๋ฌด์ œํ•œ์˜ ํž˜

์šฐ๋ฆฌ๋Š” ์ •๊ทœ์‹์ด ์š”์ฒญ ๋ผ์šฐํŒ…์„ ์œ„ํ•œ ๋งค์šฐ ๊ฐ•๋ ฅํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค๊ณ  ์ด๋ฏธ ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ์˜ˆ๋ฅผ ์‚ดํŽด๋ณด์‹ญ์‹œ์˜ค(๋ฌด์Šจ ์ผ์„ ํ•˜๋Š”์ง€ ์ดํ•ดํ•˜์‹ค ๊ฒƒ์ž…๋‹ˆ๋‹ค).

Istio์˜ Dark ์ถœ์‹œ: ๋น„๋ฐ€ ์„œ๋น„์Šค
์ด์ œ ๋‹น์‹ ์€ ์•„๋งˆ๋„ ์ •๊ทœ ํ‘œํ˜„์‹์ด ๋ฌด์—‡์„ ํ•  ์ˆ˜ ์žˆ๋Š”์ง€์— ๋Œ€ํ•ด ์•Œ๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ˜„๋ช…ํ•˜๊ฒŒ ํ–‰๋™ํ•˜๋ผ

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

๊ด€์‹ฌ์ด ์žˆ์œผ์‹ญ๋‹ˆ๊นŒ?

์ปดํ“จํ„ฐ์—์„œ Istio, Kubernetes ๋ฐ OpenShift๋ฅผ ์‹คํ—˜ํ•˜๊ณ  ์‹ถ์œผ์‹ญ๋‹ˆ๊นŒ? ํŒ€ Red Hat ๊ฐœ๋ฐœ์ž ํŒ€ ํ›Œ๋ฅญํ•˜๊ฒŒ ์ค€๋น„ํ–ˆ๋‹ค ๊ต๊ณผ์„œ ์ด ์ฃผ์ œ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜๊ณ  ๋ชจ๋“  ๊ด€๋ จ ํŒŒ์ผ์„ ๊ณต๊ฐœ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‹ˆ ๊ณ„์†ํ•ด์„œ ์ž์‹ ์„ ๋ถ€์ธํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค.
โ€ƒ

Istio Egress: ๊ธฐ๋…ํ’ˆ ๊ฐ€๊ฒŒ๋ฅผ ํ†ตํ•ด ์ถœ๊ตฌ

Istio๋ฅผ Red Hat OpenShift ๋ฐ Kubernetes์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋ฉด ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ฅผ ํ›จ์”ฌ ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Istio์˜ ์„œ๋น„์Šค ๋ฉ”์‹œ๋Š” Kubernetes ํฌ๋“œ ๋‚ด๋ถ€์— ์ˆจ๊ฒจ์ ธ ์žˆ์œผ๋ฉฐ ์ฝ”๋“œ๋Š” (๋Œ€๋ถ€๋ถ„) ๊ฒฉ๋ฆฌ๋œ ์ƒํƒœ๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ์„ฑ๋Šฅ, ๋ณ€๊ฒฝ ์šฉ์ด์„ฑ, ์ถ”์  ๋“ฑ - ์‚ฌ์ด๋“œ์นด ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ด ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๊ฐ€ OpenShift-Kubernetes ์‹œ์Šคํ…œ ์™ธ๋ถ€์— ์žˆ๋Š” ๋‹ค๋ฅธ ์„œ๋น„์Šค์™€ ํ†ต์‹ ํ•ด์•ผ ํ•œ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”?

์ด๊ฒƒ์ด ๋ฐ”๋กœ Istio Egress๊ฐ€ ๊ตฌ์ถœ๋˜๋Š” ๊ณณ์ž…๋‹ˆ๋‹ค. ๊ฐ„๋‹จํžˆ ๋งํ•ด์„œ, Kubernetes ํฌ๋“œ ์‹œ์Šคํ…œ์˜ ์ผ๋ถ€๊ฐ€ ์•„๋‹Œ ๋ฆฌ์†Œ์Šค("์„œ๋น„์Šค" ์ฝ๊ธฐ)์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค. ์ถ”๊ฐ€ ๊ตฌ์„ฑ์„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š์œผ๋ฉด Istio Egress ํ™˜๊ฒฝ์—์„œ ํŠธ๋ž˜ํ”ฝ์€ Pod ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด์—์„œ๋งŒ ๋‚ด๋ถ€ IP ํ…Œ์ด๋ธ”์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ํด๋Ÿฌ์Šคํ„ฐ ๊ฐ„์— ๋ผ์šฐํŒ…๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๋Ÿฌํ•œ ๋ฒˆ๋ฐ๊ธฐ๋Š” ์™ธ๋ถ€ ์„œ๋น„์Šค์— ์•ก์„ธ์Šคํ•  ํ•„์š”๊ฐ€ ์—†๋Š” ํ•œ ํ›Œ๋ฅญํ•˜๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

์†ก์‹ ์„ ์‚ฌ์šฉํ•˜๋ฉด ์†ก์‹  ๊ทœ์น™์ด๋‚˜ IP ์ฃผ์†Œ ๋ฒ”์œ„๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์œ„์˜ IP ํ…Œ์ด๋ธ”์„ ์šฐํšŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

httpbin.org/headers์— GET ์š”์ฒญ์„ ๋ณด๋‚ด๋Š” Java ํ”„๋กœ๊ทธ๋žจ์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

(httpbin.org๋Š” ๋‚˜๊ฐ€๋Š” ์„œ๋น„์Šค ์š”์ฒญ์„ ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์œ„ํ•œ ํŽธ๋ฆฌํ•œ ๋ฆฌ์†Œ์Šค์ผ ๋ฟ์ž…๋‹ˆ๋‹ค.)

๋ช…๋ น์ค„์— ์ž…๋ ฅํ•˜๋ฉด curl http://httpbin.org/headers, ๋‹ค์Œ ๋‚ด์šฉ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Istio์˜ Dark ์ถœ์‹œ: ๋น„๋ฐ€ ์„œ๋น„์Šค
๋˜๋Š” ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋™์ผํ•œ ์ฃผ์†Œ๋ฅผ ์—ด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Istio์˜ Dark ์ถœ์‹œ: ๋น„๋ฐ€ ์„œ๋น„์Šค
๋ณด์‹œ๋‹ค์‹œํ”ผ, ํ•ด๋‹น ์„œ๋น„์Šค๋Š” ๋‹จ์ˆœํžˆ ์ „๋‹ฌ๋œ ํ—ค๋”๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์ˆ˜์ž…๋Œ€์ฒด ์ •๋ฉด์Šน๋ถ€

์ด์ œ ์‹œ์Šคํ…œ ์™ธ๋ถ€์— ์žˆ๋Š” ์ด ์„œ๋น„์Šค์˜ Java ์ฝ”๋“œ๋ฅผ ๊ฐ€์ ธ์™€ Istio๊ฐ€ ์„ค์น˜๋œ ์ž์ฒด์ ์œผ๋กœ ์‹คํ–‰ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. (์ด ์ž‘์—…์€ ์ง์ ‘ ๋ฌธ์˜ํ•˜์—ฌ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Istio ํŠœํ† ๋ฆฌ์–ผ.) ์ ์ ˆํ•œ ์ด๋ฏธ์ง€๋ฅผ ๊ตฌ์ถ•ํ•˜๊ณ  OpenShift ํ”Œ๋žซํผ์—์„œ ์‹คํ–‰ํ•œ ํ›„ ๋‹ค์Œ ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด ์„œ๋น„์Šค๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค. curl egresshttpbin-istioegress.$(minishift ip).nip.io, ๊ทธ ํ›„์— ํ™”๋ฉด์— ๋‹ค์Œ์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

Istio์˜ Dark ์ถœ์‹œ: ๋น„๋ฐ€ ์„œ๋น„์Šค
์ด๋Ÿฐ, ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚ฌ๋‚˜์š”? ๋ชจ๋“  ๊ฒƒ์ด ์ž˜ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฐพ์„ ์ˆ˜ ์—†์Œ์€ ๋ฌด์—‡์„ ์˜๋ฏธํ•˜๋‚˜์š”? ์šฐ๋ฆฌ๊ฐ€ ๊ทธ ์‚ฌ๋žŒ์„ ์œ„ํ•ด ๊ทธ๋žฌ์„ ๋ฟ์ด์•ผ curl.

IP ํ…Œ์ด๋ธ”์„ ์ „์ฒด ์ธํ„ฐ๋„ท์œผ๋กœ ํ™•์žฅ

์ด์— ๋Œ€ํ•ด Istio๋ฅผ ๋น„๋‚œ(๋˜๋Š” ๊ฐ์‚ฌ)ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ Istio๋Š” ํƒ์ง€ ๋ฐ ๋ผ์šฐํŒ…(๊ทธ๋ฆฌ๊ณ  ์•ž์„œ ์ด์•ผ๊ธฐํ•œ ๋‹ค๋ฅธ ๋งŽ์€ ์‚ฌํ•ญ)์„ ๋‹ด๋‹นํ•˜๋Š” ์‚ฌ์ด๋“œ์นด ์ปจํ…Œ์ด๋„ˆ์ผ ๋ฟ์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ด์œ ๋กœ IP ํ…Œ์ด๋ธ”์€ ํด๋Ÿฌ์Šคํ„ฐ ์‹œ์Šคํ…œ ๋‚ด๋ถ€์˜ ๋‚ด์šฉ๋งŒ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  httpbin.org๋Š” ์™ธ๋ถ€์— ์žˆ์œผ๋ฏ€๋กœ ์ ‘๊ทผ์ด ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์ด ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์กฐ๊ธˆ๋„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  Istio Egress๊ฐ€ ๊ตฌ์ถœ๋˜๋Š” ๊ณณ์ž…๋‹ˆ๋‹ค.

์•„๋ž˜ Egress ๊ทœ์น™์€ Istio๊ฐ€ ํ•„์š”ํ•œ ์„œ๋น„์Šค(์ด ๊ฒฝ์šฐ httpbin.org)๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋„๋ก ๊ฐ•์ œํ•ฉ๋‹ˆ๋‹ค(ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์ „์ฒด ์ธํ„ฐ๋„ท์„ ํ†ตํ•ด). ์ด ํŒŒ์ผ(egress_httpbin.yml)์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋“ฏ์ด ์—ฌ๊ธฐ์˜ ๊ธฐ๋Šฅ์€ ๋งค์šฐ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค.

Istio์˜ Dark ์ถœ์‹œ: ๋น„๋ฐ€ ์„œ๋น„์Šค
๋‚จ์€ ๊ฒƒ์€ ์ด ๊ทœ์น™์„ ์ ์šฉํ•˜๋Š” ๊ฒƒ๋ฟ์ž…๋‹ˆ๋‹ค.

istioctl create -f egress_httpbin.yml -n istioegress

๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๊ทธ๋ ˆ์Šค ๊ทœ์น™์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. istioctl get egressrules:

Istio์˜ Dark ์ถœ์‹œ: ๋น„๋ฐ€ ์„œ๋น„์Šค
๋งˆ์ง€๋ง‰์œผ๋กœ ๋ช…๋ น์„ ๋‹ค์‹œ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ปฌ โ€“ ๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๋Š” ๋ชจ๋“  ๊ฒƒ์ด ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์„ ๋ด…๋‹ˆ๋‹ค:

Istio์˜ Dark ์ถœ์‹œ: ๋น„๋ฐ€ ์„œ๋น„์Šค

์šฐ๋ฆฌ๋Š” ๊ณต๊ฐœ์ ์œผ๋กœ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค

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

์ด๊ฒƒ์€ Istio ์‹œ๋ฆฌ์ฆˆ์˜ ๋งˆ์ง€๋ง‰ ๊ฒŒ์‹œ๋ฌผ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๊ณ„์† ์ง€์ผœ๋ด ์ฃผ์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค. ์•ž์œผ๋กœ ํฅ๋ฏธ๋กœ์šด ์ผ์ด ๋งŽ์ด ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค!

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€