Cloud Service Mesh ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ ๋ฒ„์ „

์ด ํŽ˜์ด์ง€๋Š” ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด ๋ฐ ๊ด€๋ฆฌํ˜• ISTIOD ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ ๊ตฌํ˜„์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด ํŽ˜์ด์ง€๋Š” ๊ฐœ๋ณ„ ๋ฒ„์ „์ด ์—†๋Š” ๋ฉ€ํ‹ฐ ํ…Œ๋„ŒํŠธ ์ „์—ญ ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ์ธ TRAFFIC_DIRECTOR ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ ๊ตฌํ˜„์— ์ ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€์—์„œ๋Š” ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ์˜ ๋ฒ„์ „ ์ž‘๋™ ๋ฐฉ์‹์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜๊ณ  ์•ˆ์ „ํ•œ ์„œ๋น„์Šค ๋ฉ”์‹œ ์—…๊ทธ๋ ˆ์ด๋“œ(๋ฐ ๋กค๋ฐฑ)์— ์ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์ ์— ๋Œ€ํ•ด ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

์„œ๋น„์Šค ๋ฉ”์‹œ ์„ค์น˜ ๊ธฐ์ดˆ

๋Œ€๋žต์ ์œผ๋กœ Cloud Service Mesh ์„ค์น˜๋Š” ๋‘ ๊ฐ€์ง€ ์ฃผ์š” ๋‹จ๊ณ„๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

  1. ๋จผ์ € asmcli ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ์„ ์„ค์น˜ํ•˜๊ฑฐ๋‚˜ ๊ด€๋ฆฌํ˜• ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ์€ ๋ฉ”์‹œ ๊ตฌ์„ฑ์„ ๊ด€๋ฆฌํ•˜๋Š” ์‹œ์Šคํ…œ ์„œ๋น„์Šค ์ง‘ํ•ฉ์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

  2. ๋‹ค์Œ์œผ๋กœ ๊ฐ ์›Œํฌ๋กœ๋“œ ๊ฐ„์— ๋„คํŠธ์›Œํฌ ํ†ต์‹ ์„ ๊ฐ€๋กœ์ฑ„๋Š” ํŠน์ˆ˜ ์‚ฌ์ด๋“œ์นด ํ”„๋ก์‹œ๋ฅผ ํ™˜๊ฒฝ์— ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค. ํ”„๋ก์‹œ๋Š” ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ๊ณผ ํ†ต์‹ ํ•˜์—ฌ ๊ตฌ์„ฑ์„ ๊ฐ€์ ธ์˜ค๋ฏ€๋กœ, ์›Œํฌ๋กœ๋“œ๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ ๋„ ๋ฉ”์‹œ ์ฃผ๋ณ€์˜ ํŠธ๋ž˜ํ”ฝ(๋ฐ์ดํ„ฐ ์˜์—ญ ํŠธ๋ž˜ํ”ฝ)์„ ์ง์ ‘ ์—ฐ๊ฒฐํ•˜๊ณ  ์ œ์–ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ํ”„๋ก์‹œ๋ฅผ ๋ฐฐํฌํ•˜๋ ค๋ฉด ์ž๋™ ์‚ฌ์ด๋“œ์นด ์‚ฝ์ž…(์ž๋™ ์‚ฝ์ž…)์ด๋ผ๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ ์›Œํฌ๋กœ๋“œ ํฌ๋“œ์—์„œ ์ถ”๊ฐ€ ์‚ฌ์ด๋“œ์นด ์ปจํ…Œ์ด๋„ˆ๋กœ ํ”„๋ก์‹œ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์›Œํฌ๋กœ๋“œ๋ฅผ ๋ฐฐํฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๋Š” Kubernetes ๋งค๋‹ˆํŽ˜์ŠคํŠธ๋ฅผ ์ˆ˜์ •ํ•  ํ•„์š”๋Š” ์—†์ง€๋งŒ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ๋ผ๋ฒจ์„ ์ถ”๊ฐ€ํ•˜๊ณ  ํฌ๋“œ๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฉ”์‹œ๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ์—…๊ทธ๋ ˆ์ด๋“œ

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

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

์ž๋™ ์‚ฝ์ž…์€ ์–ด๋–ป๊ฒŒ ์ž‘๋™๋˜๋‚˜์š”?

์ž๋™ ์‚ฝ์ž…์€ ํ—ˆ์šฉ ์ œ์–ด๋ผ๊ณ  ๋ถ€๋ฅด๋Š” Kubernetes ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ƒˆ๋กœ ์ƒ์„ฑ๋œ ํฌ๋“œ๋ฅผ ํ™•์ธํ•˜๋„๋ก ํ—ˆ์šฉ ์›นํ›… ๋ณ€ํ˜•์ด ๋“ฑ๋ก๋ฉ๋‹ˆ๋‹ค. ์›นํ›…์€ ๋„ค์ž„์ŠคํŽ˜์ด์Šค ์„ ํƒ๊ธฐ๋ฅผ ์‚ฌ์šฉํ•ด ํŠน์ • ๋ผ๋ฒจ์ด ์žˆ๋Š” ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ๋ฐฐํฌ๋˜๋Š” ํฌ๋“œ์™€๋งŒ ์ผ์น˜ํ•˜๋„๋ก ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ํฌ๋“œ๊ฐ€ ์ผ์น˜ํ•˜๋ฉด ์›นํ›…์ด ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ์—์„œ ์ œ๊ณตํ•˜๋Š” ์‚ฝ์ž… ์„œ๋น„์Šค๋ฅผ ์ฐธ์กฐํ•˜์—ฌ ์‚ฌ์ด๋“œ์นด๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์ปจํ…Œ์ด๋„ˆ์™€ ๋ณผ๋ฅจ์ด ํฌํ•จ๋œ ํฌ๋“œ์˜ ์ƒˆ๋กœ์šด ๋ณ€ํ˜• ๊ตฌ์„ฑ์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

์‚ฌ์ด๋“œ์นด ์ธ์ ํ„ฐ

  1. ์„ค์น˜ ์ค‘์— ์›นํ›… ๊ตฌ์„ฑ์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์›นํ›…์€ Kubernetes API ์„œ๋ฒ„์— ๋“ฑ๋ก๋ฉ๋‹ˆ๋‹ค.
  2. Kubernetes API ์„œ๋ฒ„๋Š” ์›นํ›… namespaceSelector์™€ ์ผ์น˜ํ•˜๋Š” ๋„ค์ž„์ŠคํŽ˜์ด์Šค์˜ ํฌ๋“œ ๋ฐฐํฌ๋ฅผ ๊ฐ์‹œํ•ฉ๋‹ˆ๋‹ค.
  3. ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋Š” namespaceSelector์™€ ์ผ์น˜ํ•˜๋„๋ก ๋ผ๋ฒจ์ด ์ง€์ •๋ฉ๋‹ˆ๋‹ค.
  4. ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ๋ฐฐํฌ๋œ ํฌ๋“œ๋Š” ์›นํ›…์„ ํŠธ๋ฆฌ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.
  5. ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ์—์„œ ์ œ๊ณตํ•˜๋Š” inject ์„œ๋น„์Šค๋Š” ์‚ฌ์ด๋“œ์นด๋ฅผ ์ž๋™ ์‚ฝ์ž…ํ•˜๋„๋ก ํฌ๋“œ ์‚ฌ์–‘์„ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

๋ฒ„์ „์ด๋ž€?

์ž๋™ ์‚ฝ์ž…์— ์‚ฌ์šฉ๋˜๋Š” ๋ผ๋ฒจ์€ ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž ์ •์˜ Kubernetes ๋ผ๋ฒจ๊ณผ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋ผ๋ฒจ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ผ๋ฒจ ์ง€์ •์ด๋ผ๋Š” ๊ฐœ๋…์„ ์ง€์›ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ‚ค-๊ฐ’ ์Œ์ž…๋‹ˆ๋‹ค. ๋ผ๋ฒจ์€ ํƒœ๊น… ๋ฐ ๋ฒ„์ „ ๊ด€๋ฆฌ์— ๊ด‘๋ฒ”์œ„ํ•˜๊ฒŒ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด Git ํƒœ๊ทธ, Docker ํƒœ๊ทธ, Knative ๋ฒ„์ „์ž…๋‹ˆ๋‹ค.

ํ˜„์žฌ์˜ Cloud Service Mesh ์„ค์น˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์„ค์น˜๋œ ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ์— ๋ฒ„์ „ ๋ฌธ์ž์—ด๋กœ ๋ผ๋ฒจ์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ์€ ๋ชจ๋“  ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ ๊ฐ์ฒด์— ๋ฒ„์ „์„ ๋ผ๋ฒจ๋กœ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ํ‚ค-๊ฐ’ ์Œ์˜ ํ‚ค๋Š” istio.io/rev์ด์ง€๋งŒ ๊ด€๋ฆฌํ˜• ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ๊ณผ ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ์˜ ๋ฒ„์ „ ๋ผ๋ฒจ ๊ฐ’์€ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

  • ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ์˜ ๊ฒฝ์šฐ istiod ์„œ๋น„์Šค์™€ ๋ฐฐํฌ์—๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ istio.io/rev=asm-1260-11๊ณผ ์œ ์‚ฌํ•œ ๋ฒ„์ „ ๋ผ๋ฒจ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ asm-1260-11๋Š” Cloud Service Mesh ๋ฒ„์ „์„ ์‹๋ณ„ํ•ฉ๋‹ˆ๋‹ค. ๋ฒ„์ „์€ ์„œ๋น„์Šค ์ด๋ฆ„์˜ ์ผ๋ถ€๊ฐ€ ๋ฉ๋‹ˆ๋‹ค(์˜ˆ: istiod-asm-1260-11.istio-system).

  • ๊ด€๋ฆฌํ˜• ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ์˜ ๊ฒฝ์šฐ ๋ฒ„์ „ ๋ผ๋ฒจ์€ ์ถœ์‹œ ์ฑ„๋„์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค.

    ๋ฒ„์ „ ๋ผ๋ฒจ ์ฑ„๋„
    istio.io/rev=asm-managed ์ผ๋ฐ˜
    istio.io/rev=asm-managed-rapid ์‹ ์†
    istio.io/rev=asm-managed-stable ์•ˆ์ •ํ™”

๋˜ํ•œ ๊ธฐ๋ณธ ์‚ฝ์ž… ๋ผ๋ฒจ์„ ์‚ฌ์šฉํ•˜๋Š” ์˜ต์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค(์˜ˆ: istio-injection=enabled).

์ž๋™ ์‚ฝ์ž…์„ ์‚ฌ์šฉ ์„ค์ •ํ•˜๋ ค๋ฉด ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ์˜ ๋ฒ„์ „ ๋ผ๋ฒจ๊ณผ ์ผ์น˜ํ•˜๋Š” ๋ฒ„์ „ ๋ผ๋ฒจ์„ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋ฒ„์ „ istio.io/rev=asm-1260-11๊ฐ€ ์žˆ๋Š” ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ์€ ๋ผ๋ฒจ์ด istio.io/rev=asm-1260-11์ธ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์˜ pod๋ฅผ ์„ ํƒํ•˜๊ณ  ์‚ฌ์ด๋“œ์นด๋ฅผ ์‚ฝ์ž…ํ•ฉ๋‹ˆ๋‹ค.

์นด๋‚˜๋ฆฌ์•„ ์—…๊ทธ๋ ˆ์ด๋“œ ์ ˆ์ฐจ

๋ฒ„์ „ ๋ผ๋ฒจ์„ ์‚ฌ์šฉํ•˜๋ฉด ์นด๋‚˜๋ฆฌ์•„ ์—…๊ทธ๋ ˆ์ด๋“œ์™€ ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ์˜ ๋กค๋ฐฑ์„ ์†์‰ฝ๊ฒŒ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ด€๋ฆฌํ˜• ์ œ์–ด๋Š” ์œ ์‚ฌํ•œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์ง€๋งŒ ํด๋Ÿฌ์Šคํ„ฐ๋Š” ์ž๋™์œผ๋กœ ํ•ด๋‹น ์ฑ„๋„ ๋‚ด ์ตœ์‹  ๋ฒ„์ „์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œ๋ฉ๋‹ˆ๋‹ค.

์นด๋‚˜๋ฆฌ์•„ ์—…๊ทธ๋ ˆ์ด๋“œ

๋‹ค์Œ ์ ˆ์ฐจ๋Š” ํ”„๋กœ์„ธ์Šค์˜ ์ž‘๋™ ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

  1. ๊ธฐ์กด Cloud Service Mesh ๋˜๋Š” ์˜คํ”ˆ์†Œ์Šค Istio ์„ค์น˜๋ฅผ ์‚ฌ์šฉํ•ด ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ๋„ค์ž„์ŠคํŽ˜์ด์Šค์—์„œ ๋ฒ„์ „ ๋ผ๋ฒจ ๋˜๋Š” istio-injection=enabled ๋ผ๋ฒจ์„ ์‚ฌ์šฉํ•˜๋Š”์ง€ ์—ฌ๋ถ€๋Š” ์ค‘์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  2. ์ƒˆ ๋ฒ„์ „์˜ ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ์„ ์„ค์น˜ํ•  ๋•Œ ๋ฒ„์ „ ๋ฌธ์ž์—ด์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋ฒ„์ „ ๋ฌธ์ž์—ด ๋•๋ถ„์— ์ƒˆ ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ์ด ๊ธฐ์กด ๋ฒ„์ „๊ณผ ํ•จ๊ป˜ ์„ค์น˜๋ฉ๋‹ˆ๋‹ค. ์ƒˆ ์„ค์น˜์—๋Š” ์ด ํŠน์ •ํ•œ ๋ฒ„์ „ ๋ผ๋ฒจ์ด ํฌํ•จ๋œ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ํ™•์ธํ•˜๋„๋ก namespaceSelector๊ฐ€ ๊ตฌ์„ฑ๋œ ์ƒˆ๋กœ์šด ์›นํ›… ๊ตฌ์„ฑ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.
  3. ๋„ค์ž„์ŠคํŽ˜์ด์Šค์—์„œ ์ด์ „ ๋ผ๋ฒจ์„ ์‚ญ์ œํ•˜๊ณ  ์ƒˆ ๋ฒ„์ „ ๋ผ๋ฒจ์„ ์ถ”๊ฐ€ํ•œ ํ›„ ํฌ๋“œ๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜์—ฌ ์‚ฌ์ด๋“œ์นด ํ”„๋ก์‹œ๋ฅผ ์ƒˆ ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ์œผ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•ฉ๋‹ˆ๋‹ค. Cloud Service Mesh๋กœ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ istio-injection=enabled ๋ผ๋ฒจ ์‚ฌ์šฉ์„ ์ค‘์ง€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฒ„์ „์ด ์žˆ๋Š” ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ์€ ๋ฒ„์ „ ๋ผ๋ฒจ์ด ์žˆ๋Š” ๊ฒฝ์šฐ์—๋„ istio-injection ๋ผ๋ฒจ์ด ์žˆ๋Š” ๋„ค์ž„์ŠคํŽ˜์ด์Šค์˜ ํฌ๋“œ๋ฅผ ์„ ํƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ƒˆ ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ์˜ ์›นํ›…์€ ์‚ฌ์ด๋“œ์นด๋ฅผ ํฌ๋“œ์— ์‚ฝ์ž…ํ•ฉ๋‹ˆ๋‹ค.
  4. ์—…๊ทธ๋ ˆ์ด๋“œ๋œ ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ๊ณผ ์—ฐ๊ฒฐ๋œ ์›Œํฌ๋กœ๋“œ๋ฅผ ์‹ ์ค‘ํ•˜๊ฒŒ ํ…Œ์ŠคํŠธํ•˜๊ณ  ๊ณ„์† ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ์ถœ์‹œํ•˜๊ฑฐ๋‚˜ ์›๋ž˜์˜ ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ์œผ๋กœ ๋กค๋ฐฑํ•ฉ๋‹ˆ๋‹ค.

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

๋ฒ„์ „์„ ์‚ฌ์šฉํ•œ ์—…๊ทธ๋ ˆ์ด๋“œ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‹จ๊ณ„๋Š” ์—…๊ทธ๋ ˆ์ด๋“œ ๊ฐ€์ด๋“œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๋ณ€ํ˜•๋œ ์›นํ›… ๊ตฌ์„ฑ ์ž์„ธํžˆ ์‚ดํŽด๋ณด๊ธฐ

์ž๋™ ์‚ฌ์ด๋“œ์นด ์‚ฝ์ž…์— ๋Œ€ํ•œ ๋ณ€ํ˜•๋œ ์›นํ›…์„ ์ž์„ธํžˆ ์ดํ•ดํ•˜๋ ค๋ฉด ๊ตฌ์„ฑ์„ ์ง์ ‘ ๊ฒ€์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.

kubectl -n istio-system get mutatingwebhookconfiguration -l app=sidecar-injector -o yaml

์„ค์น˜ํ•œ ๊ฐ ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ๋งˆ๋‹ค ๋ณ„๋„์˜ ๊ตฌ์„ฑ์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ๋ฒ„์ „ ๊ธฐ๋ฐ˜ ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ์˜ ๋„ค์ž„์ŠคํŽ˜์ด์Šค ์„ ํƒ๊ธฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 namespaceSelector:
    matchExpressions:
    - key: istio-injection
      operator: DoesNotExist
    - key: istio.io/rev
      operator: In
      values:
      - asm-1260-11

์„ ํƒ๊ธฐ๋Š” ์‹คํ–‰ ์ค‘์ธ Cloud Service Mesh ๋˜๋Š” Istio ๋ฒ„์ „์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์„ ํƒ๊ธฐ๋Š” istio-injection ๋ผ๋ฒจ๋„ ์—†๋Š” ํ•œ ํŠน์ • ๋ฒ„์ „ ๋ผ๋ฒจ์ด ์žˆ๋Š” ๋„ค์ž„์ŠคํŽ˜์ด์Šค์™€ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค.

ํฌ๋“œ๊ฐ€ ์„ ํƒ๊ธฐ์™€ ์ผ์น˜ํ•˜๋Š” ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ๋ฐฐํฌ๋˜๋ฉด ํฌ๋“œ ์‚ฌ์–‘์ด ๋ณ€ํ˜•์˜ ์ธ์ ํ„ฐ ์„œ๋น„์Šค์— ์ œ์ถœ๋ฉ๋‹ˆ๋‹ค. ํ˜ธ์ถœ๋˜๋Š” ์ธ์ ํ„ฐ ์„œ๋น„์Šค๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ง€์ •๋ฉ๋‹ˆ๋‹ค.

     service:
        name: istiod-asm-1260-11
        namespace: istio-system
        path: /inject
        port: 443

์„œ๋น„์Šค๋Š” inject URL ๊ฒฝ๋กœ์˜ ํฌํŠธ 443์—์„œ ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ์— ์˜ํ•ด ๋…ธ์ถœ๋ฉ๋‹ˆ๋‹ค.

rules ์„น์…˜์€ ์›นํ›…์ด ํฌ๋“œ ์ƒ์„ฑ์— ์ ์šฉ๋˜์–ด์•ผ ํ•œ๋‹ค๊ณ  ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

   rules:
    - apiGroups:
      - ""
      apiVersions:
      - v1
      operations:
      - CREATE
      resources:
      - pods
      scope: '*'

๋‹ค์Œ ๋‹จ๊ณ„