2021.02. ์ด์žฅ์žฌ ๐Ÿ“ง [email protected] ๐Ÿ“‚ https://github.com/jangjaelee ๐Ÿ“’ http://www.awx.kr



์‹œ์ž‘ํ•˜๊ธฐ ์ „์— ์„ ํ–‰ ํ•™์Šต

Introduction to Istio

Installing Istio with Intergrations(addons)

Istio, Tutorial Step-by-Step Deploy Sample Apps: Bookinfo


Istio๋ฅผ ์‚ฌ์šฉํ•œ ๋„คํŠธ์›Œํฌ ๊ธฐ๋Šฅ

Istio๋Š” ํŠธ๋ž˜ํ”ฝ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ์˜ ๋Œ€๋ถ€๋ถ„์€ Envoy Porxy์—์„œ ์ œ๊ณตํ•˜๊ฒŒ ๋˜๋ฉฐ, Kubernetes ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ํŠธ๋ž˜ํ”ฝ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ์„ ๊ฐ„ํŽธํ•˜๊ฒŒ ์„ค์ • ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ๋“ค์„ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.


Step 1. ์š”์ฒญ ์‹œ๊ฐ„ ์ดˆ๊ณผ(Request Timeouts)

์š”์ฒญ ์‹œ๊ฐ„ ์ดˆ๊ณผ(Request Timeouts)์€ Envoy Proxy๊ฐ€ HTTP Response๋ฅผ ๊ธฐ๋‹ค๋ฆด ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ์‹œ๊ฐ„์ธ timeout์„ ์„ค์ •ํ•˜๋Š” ๊ธฐ๋Šฅ ์ด๋ฉฐ, ์ด ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋ฉด Application(๋˜๋Š” Service)์ด Hang-up์œผ๋กœ ์ธํ•œ ์„œ๋น„์Šค ๋ฌดํ•œ ๋Œ€๊ธฐ ์ƒํƒœ๋ฅผ ๋ฐฉ์ง€ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

VirtualService์—์„œ timeout์„ ๋ช…์‹œํ•˜์—ฌ ์„ค์ • ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋”ฐ๋กœ ๋ช…์‹œํ•˜์ง€ ์•Š์œผ๋ฉด ๊ธฐ๋ณธ๊ฐ’(default)์€ ๋น„ํ™œ์„ฑํ™”(disabled)๋กœ ์„ค์ • ๋ฉ๋‹ˆ๋‹ค.

Istio์˜ Request Timeout ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ฝ”๋“œ(Code)๋ฅผ ์ˆ˜์ •ํ•˜์ง€ ์•Š๊ณ ๋„ ์„œ๋น„์Šค ๋‹จ์œ„์˜ timeout ๊ธฐ๋Šฅ ์ ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ํฐ ์žฅ์ ์„ ์ œ๊ณตํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ์ž‘์—… ๋ชฉํ‘œ๋Š” ratings microservice ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๊ฐ•์ œ๋กœ ์ง€์—ฐ์‹œ๊ฐ„(delay)๋ฅผ 2์ดˆ ์ถ”๊ฐ€ํ•˜๊ณ , reviews microservice ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์„œ๋น„์Šค ํ˜ธ์ถœ์— ๋Œ€ํ•ด 0.5์ดˆ ์š”์ฒญ ์‹œ๊ฐ„ ์ดˆ๊ณผ(request timeout)๋ฅผ ์„ค์ •ํ•˜์—ฌ ratings ์„œ๋น„์Šค์˜ 2์ดˆ ์ง€์—ฐ์‹œ๊ฐ„์œผ๋กœ ์ธํ•ด reviews ์„œ๋น„์Šค๊ฐ€ 1์ดˆ ์ด๋‚ด์— ์‘๋‹ตํ•˜์ง€ ๋ชป ํ•˜์—ฌ timeout์„ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์„ ์•Œ์•„ ๋ด…๋‹ˆ๋‹ค.

Step 1.1. Timeout

Istio, Tutorial Step-by-Step Deploy Sample Apps: Bookinfo๋ฅผ ๋จผ์ € ์„ ํ–‰ ํ›„ ์ง„ํ–‰ ํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

๋ชจ๋“  ํŠธ๋ž˜ํ”ฝ์ด v1, v2, v3๊นŒ์ง€ ๋ผ์šฐํŒ… ๋˜๋„๋ก bookinfo ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐ ๊ธฐ๋ณธ VirtualService์™€ DestinationRule์„ ๋ฐฐํฌ ํ•ฉ๋‹ˆ๋‹ค.

*# DestinationRule ์ ์šฉ*
$ kubectl apply -f samples/bookinfo/networking/destination-rule-all.yaml -n bookinfo

*# VirtualService ์ ์šฉ*
$ kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml -n bookinfo

๋ธŒ๋ผ์šฐ์ €์—์„œ /productpage๋ฅผ ์ƒˆ๋กœ๊ณ ์นจ ํ•˜๋ฉด reviews ์„œ๋น„์Šค๊ฐ€ v1, v2 ,v3์˜ ์„œ๋น„์Šค๋“ค์ด Round-Robin(RR) ๋ฐฉ์‹์œผ๋กœ ๋ถ„์‚ฐ๋˜์–ด ํŠธ๋ž˜ํ”ฝ ๋ผ์šฐํŒ…์ด ์ฒ˜๋ฆฌ ๋ฉ๋‹ˆ๋‹ค.