xDS๋กœ Envoy๊ฐ€ Istio์™€ ์‹ฑํฌ๋ฅผ ๋งž์ถ”๋Š” ๋ฐฉ๋ฒ•.

3 minute read

istioctl์˜ ๋ช…๋ น์–ด๋ฅผ ์‚ดํŽด๋ณด๋˜ ์ค‘์— istioctl proxy-status๋ฅผ ์น˜๋‹ˆ ์•„๋ž˜์™€ ๊ฐ™์ด ooDS๋กœ ๋๋‚˜๋Š” ์ปฌ๋Ÿผ์˜ ํ‘œ๊ฐ€ ๋ณด์ด๋Š” ๊ฑธ ๋ฐœ๊ฒฌ ํ–ˆ๋‹ค. ๋ฌด์Šจ ๋‚ด์šฉ์ธ์ง€ ๊ถ๊ธˆํ•ด์„œ ์ข€๋” ์ฐพ์•„๋ดค๊ณ , ๊ทธ ๊ฒฐ๊ณผ ์š”๊ฒŒ Envoy์˜ Discovery Service(์ดํ•˜ DS)๊ณผ ๊ด€๋ จ ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์„ ๊นจ๋‹ฌ์•˜๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŠธ์—๋Š” Envoy์˜ DS์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด๊ณ ์ž ํ•œ๋‹ค.

์ด ์ฃผ์ œ๋ฅผ ์ดํ•ดํ•˜๋Š”๋ฐ arisu1000๋‹˜์˜ ๋ธ”๋กœ๊ทธ ๊ธ€์ด ๋งŽ์€ ๋„์›€์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ธ€๋กœ๋‚˜๋งˆ ๊ฐ์‚ฌ์˜ ์ธ์‚ฌ๋ฅผ ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๐Ÿ™‡

Envoy์— Config๋ฅผ ์„ค์ •ํ•˜๋Š” ๋ฒ•

Envoy๋„ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ƒ๊ฐํ•˜๋ฉด, nginx, apache ๊ฐ™์€ proxy ์„œ๋ฒ„์ด๊ธฐ ๋•Œ๋ฌธ์— Config๊ฐ€ ํ•„์š”ํ•˜๋‹ค. Envoy Config๋Š” 2๊ฐ€์ง€ ๋ฐฉ์‹์œผ๋กœ ์„ค์ • ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ

  • ์ •์ (static)์œผ๋กœ ์„ค์ •ํ•˜๊ธฐ
    • Envoy Proxy๊ฐ€ ๋œฐ ๋•Œ ์ฝ๋Š” ๊ฒƒ.
    • ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์žˆ๋‹ค๋ฉด Envoy Proxy Restart๊ฐ€ ํ•„์š”ํ•จ.
  • API ํ†ตํ•ด์„œ ๋™์ ์œผ๋กœ ์„ค์ •ํ•˜๊ธฐ
    • Istio์—์„œ ์“ฐ๋Š” ๋ฐฉ์‹!

2๊ฐ€์ง€ ๋ฐฉ์‹์ด ์žˆ๋‹ค. ์ด์ค‘ API ํ†ตํ•ด ์ •์ ์œผ๋กœ Envoy Config๋ฅผ ์„ค์ •ํ•˜๋Š”๊ฒŒ Istio์—์„œ ์ฑ„ํƒํ•œ ๋ฐฉ์‹์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๊ฑธ xxx Discovery Service, ์ค„์—ฌ์„œ xDS๋ผ๊ณ  ์ง€์นญํ•œ๋‹ค.

๋™์ ์œผ๋กœ ์„ค์ •ํ•˜๋Š” xDS ๋ฐฉ์‹์€ Envoy๊ฐ€ Config๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ์„œ๋ฒ„์— Call์„ ํ•˜๋ฉด์„œ ์ง€์†์ ์œผ๋กœ Config๋ฅผ ์‹ฑํฌํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. Istio์—์„œ๋Š” Config ์„œ๋ฒ„๊ฐ€ istiod์ผ ๊ฒƒ์ด๋‹ค. Envoy๋ฅผ Istio ๋งฅ๋ฝ ์•ˆ์—์„œ ์‚ดํŽด๋ณด๊ณ  ์žˆ์œผ๋‹ˆ ์•ž์œผ๋กœ Config ์„œ๋ฒ„๋ฅผ istiod๋ผ๊ณ  ํŠน์ •ํ•˜๊ฒ ๋‹ค.

Envoy xDS ๋ฐฉ์‹

Envoy๊ฐ€ xDS ๋ฐฉ์‹์œผ๋กœ ๊ตฌ์„ฑ์„ ์‹ฑํฌํ•˜๊ธฐ ์œ„ํ•ด์„œ istiod๋Š” xDS API๋ฅผ ๊ตฌํ˜„ํ•ด ์—ด์–ด๋‘ฌ์•ผ ํ•œ๋‹ค. ๊ทธ ์ข…๋ฅ˜๋กœ๋Š”

  • CDS(Cluster DS)
    • Envoy ์šฉ์–ด๋กœ
  • EDS(Endpoint DS)
    • Envoy ์šฉ์–ด๋กœ Cluster๋ฅผ ์ด๋ฃจ๋Š” ๋ฉค๋ฒ„๋ฅผ endpoint๋ผ๊ณ  ๋งํ•จ.
  • RDS(Route DS)
    • ํŠน์ • ๊ฒฝ๋กœ๋กœ ๋“ค์–ด์˜จ ํŠธ๋ž˜ํ”ฝ์„ ์–ด๋””๋กœ ๋ณด๋‚ด์•ผ ํ•˜๋Š”์ง€์— ๋Œ€ํ•ด
  • LDS(Listener DS)
    • ํŠน์ • ํฌํŠธ๋กœ ๋“ค์–ด์˜จ ํŠธ๋ž˜ํ”ฝ์„ ์–ด๋””๋กœ ๋ณด๋‚ด์•ผ ํ•˜๋Š”์ง€์— ๋Œ€ํ•ด
  • ECDS(Extension Configuration DS)

Envoy xDS์—๋Š” ์ด๊ฒƒ ์™ธ์—๋„ ๋ช‡๊ฐœ๊ฐ€ ๋” ์žˆ๋Š”๋ฐ, istio์˜ istioctl proxy-status์—์„œ๋Š” ์ € ๋‹ค์„ฏ ๊ฐ€์ง€ xDS API๋งŒ ๋ณด์—ฌ์ฃผ๊ณ , ์•„๋งˆ ์ด ๋‹ค์„ฏ ๊ฐ€์ง€๋งŒ ๊ตฌํ˜„๋œ ๊ฒƒ ๊ฐ™๋‹ค. Envoy xDS์˜ ์ „์ฒด ๋ชฉ๋ก์„ ๋ณด๊ณ  ์‹ถ๋‹ค๋ฉด, Envoy ๊ณต์‹ ๋ฌธ์„œ์— ๋‚˜์™€ ์žˆ๋‹ค.

๋งŒ์•ฝ istiod๋ฅผ ์ง์ ‘ ๊ตฌํ˜„ํ•ด์•ผ ํ•œ๋‹ค๋ฉด, Envoy์˜ ์š” xDS API๋“ค์„ ๊ตฌํ˜„ํ•ด์ค˜์•ผ ํ•  ๊ฒƒ์ด๋‹ค.

Istio Envoy๊ฐ€ ์‹ฑํฌํ•˜๋Š” ๊ณผ์ •

์‹œ์ž‘ ๋‹จ๊ณ„(Bootstrap)

Envoy ์ธ์Šคํ„ด์Šค๋Š” ๋จผ์ € bootstrap ๊ตฌ์„ฑ์„ ๋กœ๋“œํ•œ๋‹ค. ์ดˆ๊ธฐ ๊ตฌ์„ฑ์—๋Š” xDS ์„œ๋ฒ„(istiod)์˜ ์ฃผ์†Œ์™€ ์ดˆ๊ธฐ ์—ฐ๊ฒฐ์„ ์œ„ํ•œ ์ •๋ณด๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๋‹ค.

CDS & EDS ์„ธํŒ…

๋จผ์ € Envoy๊ฐ€ proxyํ•˜๋Š” ์ง‘ํ•ฉ(Envoy: ํด๋Ÿฌ์Šคํ„ฐ)์˜ ์›Œํฌ๋กœ๋“œ(Envoy: ์—”๋“œํฌ์ธํŠธ)์˜ ์ƒํƒœ๋ฅผ ์ฒดํฌํ•˜๊ณ  ๊ตฌ์„ฑ์„ ์‹ฑํฌํ•œ๋‹ค.

์ˆœ์„œ๋Š” CDS๋กœ ํด๋Ÿฌ์Šคํ„ฐ ์ •๋ณด๋ฅผ ์‹ฑํฌํ•˜๊ณ , CDS๋กœ ์‹ฑํฌํ•œ ์ •๋ณด๋ฅผ ํ™œ์šฉํ•ด EDS ์‹ฑํฌ๋ฅผ ์ง„ํ–‰ํ•œ๋‹ค.

๋งŒ์•ฝ ์›Œํฌ๋กœ๋“œ๊ฐ€ ํ—ฌ์Šค์ฒดํฌ๋ฅผ ์ œ๊ณตํ•œ๋‹ค๋ฉด, ํ•ด๋‹น ํ—ฌ์Šค์ฒดํฌ๋ฅผ ์‚ฌ์šฉํ•ด ์ƒํƒœ๋ฅผ ์ฒดํฌํ•œ๋‹ค.

RDS & LDS ์„ธํŒ…

istiod๋กœ๋ถ€ํ„ฐ RDS/LDS ์„ธํŒ…์„ ์‹ฑํฌ ํ•œ๋‹ค. ์ด ๊ณผ์ •์ด ์™„๋ฃŒ ๋˜๋ฉด, Envoy๋Š” ํŠธ๋ž˜ํ”ฝ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ์ƒํƒœ๊ฐ€ ๋œ๋‹ค!

๊ธฐ์กด ์ปค๋„ฅ์…˜์„ ๋Œ€์ฒดํ•˜๊ธฐ ์‹œ์ž‘

๋งŒ์•ฝ ์ด๋ฏธ Envoy๊ฐ€ ํŠธ๋ž˜ํ”ฝ์„ ๋ฐ›๊ณ  ์žˆ๋Š” ์ค‘์— xDS ์‹ฑํฌ๊ฐ€ ์ด๋ค„์งˆ ๊ฒฝ์šฐ๋„ ์žˆ์„ ๊ฒƒ์ด๋‹ค. ๊ผผ๊ผผํ•œ Envoy๋Š” xDS ์‹ฑํฌ ์ƒํ™ฉ์—์„œ๋„ ์ปค๋„ฅ์…˜ ์œ ์‹ค ์—†์ด ์ฝ”๋“œ์™€ ์„ค์ •์„ reload ํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌ์„ฑ ๋˜์–ด ์žˆ๋‹ค.

์ฐธ๊ณ ์ž๋ฃŒ