Skip to content
Meiko edited this page Jan 16, 2025 · 39 revisions

์Šคํ„ฐ๋”” ์‹œ์ฆŒ 1 ๋ชฉํ‘œ

istio๋ฅผ ๊ธฐ๋ณธ์ ์œผ๋กœ k8s cluster์—์„œ istio CR๋“ค์„ ๋ฐฐํฌํ•ด์„œ ๋ณด์•ˆ(mTLS)๊นŒ์ง€๋Š” ์•„๋‹ˆ์ง€๋งŒ, traffic management ์ •๋„๋Š” ๊ฒฝํ—˜์„ ํ•ด๋ณด์•˜๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ๊ธฐ์„œ ์ข€ ๋” ๊นŠ๊ฒŒ ๋“ค์–ด๊ฐ€์„œ istio์˜ ๋™์ž‘ ์›๋ฆฌ๋“ฑ ํ•„์š”ํ•œ ๊ธฐ๋ฐ˜ ์ง€์‹๋“ค์„ ์Šต๋“ํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•˜๊ณ  ์žˆ์Œ.

์Šคํ„ฐ๋”” ์‹œ์ฆŒ 1 ๋ชฉํ‘œ ๋‹ฌ์„ฑ ์—ฌ๋ถ€

๋ณ‘ํ›ˆ

week1~7๊นŒ์ง€ ์ง„ํ–‰ํ•˜๋ฉด์„œ istio๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ sidecar injection์ด enable๋œ ์ดํ›„ pod ์ƒ์„ฑ ์š”์ฒญ์ด ๋“ค์–ด์™”์„ ๋•Œ ์–ด๋–ค ๊ณผ์ •์„ ๊ฑฐ์ณ์„œ pod spec์ด ์ˆ˜์ •๋˜์–ด pod๊ฐ€ ์ตœ์ข…์ ์œผ๋กœ ์ƒ์„ฑ๋˜๋Š” ์ง€, ํด๋Ÿฌ์Šคํ„ฐ ์™ธ๋ถ€์—์„œ ์ƒ์„ฑ๋œ ํŒŒ๋“œ๋กœ ํ–ฅํ•˜๋Š” ํŠธ๋ž˜ํ”ฝ์ด ๋“ค์–ด์™”์„ ๋•Œ ์–ด๋–ป๊ฒŒ ํŠธ๋ž˜ํ”ฝ์ด sidecar๋กœ ์ฃผ์ž…๋œ envoy proxy container๋กœ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ ๋˜๋Š” ์ง€ ๊ทธ๋ฆฌ๊ณ  envoy proxy container๋กœ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ ๋œ ์ดํ›„์— envoy ๋‚ด๋ถ€์—์„œ ์–ด๋–ค ๋™์ž‘์„ ํ†ตํ•ด ์ตœ์ข…์ ์œผ๋กœ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋„๋‹ฌํ•˜๊ฒŒ ๋˜๋Š” ์ง€์— ๋Œ€ํ•œ ํฐ ๊ทธ๋ฆผ์„ ์ดํ•ดํ•˜๊ฒŒ ๋˜๋ฉด์„œ istio ์‚ฌ์šฉ์— ์žˆ์–ด์„œ ํ•„์ˆ˜์ ์ธ ์ง€์‹๋“ค์€ ๊ฐ–์ถ˜ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ด ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋™์ ์œผ๋กœ ์„ค์ •๋“ค์ด ๋™๊ธฐํ™”๋˜๋Š” xDS API๋“ค์— ๋Œ€ํ•ด์„œ๋„ ํ•™์Šต์„ ํ•˜์—ฌ season1 ์Šคํ„ฐ๋”” ๊ธฐ๊ฐ„ ๋™์•ˆ ์Œ์‹์„ ๋จน์„ ๋•Œ ์†Œํ™”ํ•˜๋Š” ์‹œ๊ฐ„์ด ํ•„์š”ํ•˜๋“ฏ ์ •๋ณด๋ฅผ ์†Œํ™”ํ•˜๋Š”๋ฐ ์‹œ๊ฐ„์„ ๋ณด๋‚ธ ๊ฒƒ ๊ฐ™์•„ ๋งŒ์กฑ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์•„์ง envoy ๋‚ด๋ถ€ ๋™์ž‘ ๊ตฌ์กฐ ( istio-proxy container ๋กœ ํŠธ๋ž˜ํ”ฝ์ด ๋“ค์–ด์™”์„ ๋•Œ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌ๋˜๋Š”๊ฐ€ ? ) ๊ทธ๋ฆฌ๊ณ  ์–ด๋–ป๊ฒŒ ๋™์ ์œผ๋กœ configuration๋“ค์„ ๋™๊ธฐํ™”ํ•˜๋Š” ์ง€์— ๋Œ€ํ•œ ์™„๋ฒฝํ•œ ์ดํ•ด๋ฅผ ํ•˜์ง€ ๋ชปํ•˜์—ฌ ๋‚จ์€ ์ˆ™์ œ๋“ค๋„ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

ํ•จ๊ป˜ ์—ด์‹ฌํžˆ ์ฐธ์—ฌํ•ด์ค€ ์€์†Œ๋‹˜, ์„ฑํ˜ธ๋‹˜ ๋ชจ๋‘ ๊ฐ์‚ฌ๋“œ๋ฆฌ๊ณ  ์‹œ์ฆŒ2์—์„œ๋„ ๊ฐ™์ด ์žฌ๋ฐŒ๊ฒŒ ์Šคํ„ฐ๋””ํ–ˆ์œผ๋ฉด ์ข‹๊ฒ ์Šต๋‹ˆ๋‹ค.

์€์†Œ

์Šคํ„ฐ๋”” ๊ธฐ๊ฐ„ ๋™์•ˆ istio๊ฐ€ ๋ฌด์—‡์ด๋ฉฐ ์™œ ์‚ฌ์šฉํ•˜๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ์—ˆ๊ณ , ํ•™์Šตํ•˜๋ฉด์„œ ๋ฐœ์ƒํ•˜๋Š” ๊ถ๊ธˆ์ฆ์„ repositoy์— issue ํ˜•์‹์œผ๋กœ ์ž‘์„ฑํ•˜์—ฌ ํ•จ๊ป˜ ๊ถ๊ธˆ์ฆ์„ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ istio-ingressgateway ๋ผ์šฐํŒ… ๋ฐฉ๋ฒ•๊ณผ Istio custom resource๋“ค์ด ์–ด๋–ป๊ฒŒ mesh logic์œผ๋กœ ๋ณ€ํ•˜๋Š”๊ฐ€? ๋‘ issue์™€ ๊ทธ๋™์•ˆ ๊ณต๋ถ€ํ–ˆ๋˜ ์ง€์‹๋“ค์„ ๋ฐ”ํƒ•์œผ๋กœ istio๊ฐ€ ๋™์ž‘ํ•˜๋Š” ์ „๋ฐ˜์ ์ธ ๊ณผ์ •์„ ์ดํ•ดํ•˜๊ฒŒ ๋˜๋ฉด์„œ ์Šคํ„ฐ๋”” ๊ธฐ๊ฐ„ ๋™์•ˆ ๋ณด๋žŒ ์žˆ๋Š” ํ•™์Šต์„ ํ•œ ๊ฒƒ ๊ฐ™์•„ ๊ธฐ์ฉ๋‹ˆ๋‹ค. ์–ธ๊ธ‰ํ•œ issue ์™ธ์—๋„ ๋‹ค์–‘ํ•œ ์ฃผ์ œ๋ฅผ ํ†ตํ•ด istio์— ๋Œ€ํ•œ ํญ๋„“์€ ์ดํ•ด๋ฅผ ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ํ•ญ์ƒ ์Šคํ„ฐ๋”” ์ด๋Œ์–ด์ฃผ์‹  ๋ณ‘ํ›ˆ๋‹˜, ์ž์„ธํ•œ ์ •๋ณด๋กœ ๊ถ๊ธˆ์ฆ์„ ํ•ด๊ฒฐํ•ด์ฃผ์‹  ์„ฑํ˜ธ๋‹˜ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

์„ฑํ˜ธ

Istio๋ฅผ ๊ณต๋ถ€ํ•˜๊ฒŒ ๋˜๋ฉด์„œ Istio์˜ ๊ฐœ๋… ๋ฐ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์„ ์Šต๋“ํ•˜์˜€๊ณ  ๋” ๋‚˜์•„๊ฐ€ Istio์˜ ๋™์ž‘์›๋ฆฌ์— ๋Œ€ํ•œ ์ตœ์†Œํ•œ์˜ ์ง€์‹์„ ๊ฐ–์ถ”๊ฒŒ ๋œ ๊ฒƒ ๊ฐ™์•„ ๋งŒ์กฑํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ ๊ทธ๋™์•ˆ ๋ฆฌ๋ˆ…์Šค ๋„คํŠธ์›Œํฌ ๊ด€๋ จ ์ปค๋„ ์ง€์‹ ๋ฐ ์‹œ์Šคํ…œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ๋ณต์Šตํ•˜๋Š” ๋ถ€๋ถ„์—๋„ ๋„์›€์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Istio๊ฐ€ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๊ณ  Envoy๊ฐ€ ์–ด๋–ป๊ฒŒ ์„ค์ •๋˜๋Š”์ง€ ๋Œ€๋žต์ ์œผ๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. istio์˜ ๊ณ ๊ฐ€์šฉ์„ฑ์„ ์œ„ํ•œ ๋ฐฐํฌ ์ „๋žต๊ณผ ๊ฐ™์€ ์ƒํ™ฉ์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ๋ถ€๋ถ„์— ๋Œ€ํ•˜์—ฌ Insight๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์—ˆ๊ณ  iptables ๊ด€๋ จํ•ด์„œ ์ž์„ธํžˆ ๊ณต๋ถ€ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์Šคํ„ฐ๋””์—์„œ ์ข‹์€ ์ž๋ฃŒ ๊ณต์œ ํ•ด ์ฃผ์‹  ๋ณ‘ํ›ˆ๋‹˜, Ingress gateway ๊ด€๋ จ ์ •๋ณด ๊ณต์œ ํ•ด์ฃผ์‹  ์€์†Œ๋‹˜ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

์œ ์šฉํ•œ ์‚ฌ์ดํŠธ

์ƒ๊ฐํ•œ istio ๋กœ๋“œ๋งต

  1. ์–ด๋–ป๊ฒŒ sidecar pattern์œผ๋กœ ํŒŒ๋“œ์— envoy proxy container๊ฐ€ ์ฃผ์ž…๋˜๋Š”๊ฐ€?
    • mutating admission controller
    • mutatingwebhookconfigurations
    • istio-sidecar-injector webhook
  2. yaml ํ˜•์‹์œผ๋กœ ์ •์˜๋œ istio custom resources๋“ค์ด ์–ด๋–ป๊ฒŒ mesh logic์ด envoy์— ์ „ํŒŒ๋˜๋Š”๊ฐ€?
    • istio custom resources ( gateway, virtualService, destinationRule, authorizationPolicy, envoyFilter ๋“ฑ )
    • istiod ( istio architecture )
    • xDS API ( Envoy )
    • gRPC
  3. 1์—์„œ ์ฃผ์ž…๋œ Envoy Proxy๊ฐ€ ์–ด๋–ป๊ฒŒ ํŠธ๋ž˜ํ”ฝ์„ ๊ฐ€๋กœ์ฑ„๋Š”๊ฐ€?
    • iptables
    • netFilter
    • kernel/user ์˜์—ญ
    • init container
  4. 3์—์„œ ๊ฐ€๋กœ์ฑˆ ์ดํ›„ envoy ์—์„œ ๋‚ด๋ถ€์ ์œผ๋กœ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•ด์„œ ์ตœ์ข… ๋ชฉ์ ์ง€์ธ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์œผ๋กœ ํŠธ๋ž˜ํ”ฝ์„ ์ „๋‹ฌํ•˜๋Š”๊ฐ€?
    • envoy ๊ตฌ์กฐ
    • envoy ๋™์ž‘์›๋ฆฌ
    • ๋„คํŠธ์›Œํฌ ์ง€์‹ ( OSI 7 Layer, TCP/IP stack )

์Šคํ„ฐ๋”” ์‹œ์ฆŒ 2 ๋ชฉํ‘œ

  • ์ดˆ๋ฐ˜์—๋Š” ์‹œ์ฆŒ1 ์ฒ˜๋Ÿผ Gitlab CI/CD, EKS, AWS ๋“ฑ ํ•„์š”ํ•œ ์ง€์‹ ํ•™์Šต -> ๊ฐœ์ธ๋ณ„ gitlab CI/CD ํ™˜๊ฒฝ ์„ธํŒ…์€ ์™„๋ฃŒํ•˜๊ธฐ
  • ์‹ค์Šต ์ค€๋น„๊ฐ€ ๋˜๋ฉด ํ‰์ผ ๋ง๊ณ  ์ฃผ๋ง์— ์‹œ๊ฐ„์„ ๋” ํˆฌ์žํ•ด์„œ ๋งค์ฃผ ๊ฐœ์ธ ๋ณ„ ํ™˜๊ฒฝ์— EKS๋ฅผ ์ง์ ‘ ๋„์›Œ๊ฐ€์ง€๊ณ  ์‹ค์Šต ์ง„ํ–‰ ( ๊ณ„์† eks๋ฅผ ์œ ์ง€ํ•˜๊ธฐ์—” ๋น„์šฉ์ด ๋งŽ์ด ๋“ค๊ธฐ ๋•Œ๋ฌธ )
    • ์‹ค์Šตํ•  ๋•Œ๋Š” ๋ญ ๊ฐœ์ธ๋ณ„ ๊ฐ์ž ๋‹ค๋ฅธ ๋ฐฐํฌ๋ฐฉ์‹์„ ์ง€์›? ( canary, dark release ๋“ฑ )
    • season2์— repo๋ฅผ ์ ๊ทน์ ์œผ๋กœ ์‚ฌ์šฉํ•ด eks provisioning ๊ด€๋ จ ํŒŒ์ผ์ด๋ผ๋˜์ง€, istio CR yaml ๋“ฑ ์‹ค์Šตํ•œ ํŒŒ์ผ๋“ค์„ ์˜ฌ๋ฆฌ๊ธฐ
  • AWS ๋ฃจํŠธ ๊ณ„์ •์€ ๋‚ด๊ฒƒ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์ด๋ฏธ route53๋“ฑ ํ•„์ˆ˜์ ์ธ ์„ธํŒ…์ด ๋˜์–ด์žˆ๊ธฐ ๋•Œ๋ฌธ
    • ๋งŒ์•ฝ ๋ณธ์ธ ๊ณ„์ •์œผ๋กœ ํ•ด๋ณด๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ๋„ ์ƒ๊ด€์—†์Œ
    • aws configure ์„ค์ •์„ ๋ณธ์ธ ๊ณ„์ •์œผ๋กœ ํ•˜๋Š” ์ฐจ์ด๋งŒ ์žˆ์„ ๋ฟ์ด๊ธฐ ๋•Œ๋ฌธ

exam review


resources

History


Istio Core knowledge


Istio Deep Dive History

Istio Detail

Istio HA

Iptables


Istio Trouble Shooting

Clone this wiki locally