Istio

Istio

๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋Š” ์„œ๋น„์Šค๊ฐ„์˜ ์—ฐ๊ฒฐ ๊ตฌ์กฐ๊ฐ€ ๋ณต์žกํ•ด์„œ ์„œ๋น„์Šค๋“ค์ด ์„œ๋กœ ์ง์ ‘ ํ˜ธ์ถœํ•˜๋ฉด ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ ์ถ”์ ์ด ์–ด๋ ต๊ณ , ๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ, ํŠธ๋ž˜ํ”ฝ ๊ด€๋ฆฌ, ์ธ์ฆ, ๊ถŒํ•œ ๋ถ€์—ฌ ๋“ฑ์„ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ๋ณต์žกํ•ด์ง„๋‹ค. ์ด๋Ÿฌํ•œ ๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค์˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ง์ ‘ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ์„œ๋น„์Šค ๋งˆ๋‹ค ํ”„๋ก์‹œ๋ฅผ ๋‘๊ณ  ํ”„๋ก์‹œ๋ฅผ ํ†ตํ•ด ์„œ๋น„์Šค๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ํŠธ๋ž™ํ”ฝ์„ ํ†ต์ œํ•ด์•ผ ํ•œ๋‹ค.

๋ณดํ†ต ํ”„๋ก์‹œ๋Š” ์„œ๋น„์Šค ๋‚ด๋ถ€๊ฐ€ ์•„๋‹ˆ๋ผ ์„œ๋น„์Šค ์ปจํ…Œ์ด๋„ˆ์™€ ๋ถ„๋ฆฌ๋œ ์‚ฌ์ด๋“œ์นด(Sidecar) ํ˜•ํƒœ๋กœ ์‹คํ–‰๋˜๋Š”๋ฐ, ์„œ๋น„์Šค๊ฐ€ ์ฆ๊ฐ€ํ•จ์— ๋”ฐ๋ผ ํ”„๋ก์‹œ๋„ ์ฆ๊ฐ€ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ํ”„๋ก์‹œ ๊ด€๋ฆฌ๊ฐ€ ์–ด๋ ค์›Œ์ง„๋‹ค. ๊ทธ๋ž˜์„œ ํ”„๋ก์‹œ ๊ด€๋ฆฌ ์–ด๋ ค์›€์„ ์ค„์ด๊ธฐ ์œ„ํ•ด ํ”„๋ก์‹œ ์„ค์ •๊ฐ’์„ ์ €์žฅํ•˜๋Š” Control Plane๊ณผ ์„ค์ •๊ฐ’์— ๋”ฐ๋ผ ํŠธ๋ž™ํ”ฝ์„ ์ œ์–ดํ•˜๋Š” Data Plane์œผ๋กœ ๋‚˜๋ˆ ์„œ ํ”„๋ก์‹œ๋ฅผ ๊ด€๋ฆฌํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค. ์ด๋Ÿฌํ•œ Service Mesh* ๊ตฌ์กฐ๋กœ ๋„คํŠธ์›Œํฌ ํŠธ๋ž˜ํ”ฝ ๊ด€๋ฆฌํ•˜๋Š” ์˜คํ”ˆ์†Œ์Šค ๋„๊ตฌ ์ค‘์— Istio๊ฐ€ ์žˆ๋‹ค.

Istio

Ingress๋Š” ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ๋กœ ๋“ค์–ด์˜ค๋Š” ํŠธ๋ž˜ํ”ฝ์„ ๊ด€๋ฆฌํ•˜๊ณ , ์ด์Šคํ‹ฐ์˜ค๋Š” ์ฟ ๋ฒ„ํ…Œ๋‹ˆ์Šค ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด์— Service Mesh๋กœ ๋“ค์–ด์˜ค๊ณ  ๋‚˜๊ฐ€๋Š” ํŠธ๋ž˜ํ”ฝ์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ Gateway๋ฅผ ์ œ๊ณตํ•˜์—ฌ, ํŠธ๋ž˜ํ”ฝ ๋ผ์šฐํŒ…, ๋กœ๋“œ๋ฐธ๋Ÿฐ์‹ฑ, ์„œ๋น„์Šค-์„œ๋น„์Šค ๊ฐ„ ์ธ์ฆ, ๋ชจ๋‹ˆํ„ฐ๋ง ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

์ด์Šคํ‹ฐ์˜ค๋Š” Data Plane๊ณผ Control Plane 2๊ฐœ์˜ ์˜์—ญ์œผ๋กœ ๊ตฌ๋ถ„๋˜๋ฉฐ, Data Plane์œผ๋กœ Envoy Proxy๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  Control Plane์€ istiod๊ฐ€ ๋‹ด๋‹นํ•œ๋‹ค.

์ถœ์ฒ˜: https://istio.io/latest/docs/ops/deployment/architecture/

Control Plane

Control Plane์€ ์„œ๋น„์Šค ๋ฉ”์‰ฌ ์ปจํŠธ๋กค๋Ÿฌ๋กœ Pilot, Mixer, Citadel, Galley ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.

Pilot Envoy Proxy ์„ค์ •๊ด€๋ฆฌ๋กœ ์„œ๋น„์Šค๊ฐ„ ํ†ต์‹  ๋ฐ ํŠธ๋ž˜ํ”ฝ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด Policy๋ฅผ ๊ตฌ์„ฑํ•œ๋‹ค.

Mixer ๊ฐ์ข… ๋ชจ๋‹ˆํ„ฐ๋ง ์ง€ํ‘œ๋ฅผ ์ˆ˜์ง‘ํ•˜๋ฉฐ, Policy๋ฅผ ์ฒดํฌํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.

Citadel ์„œ๋น„์Šค ๊ฐ„์˜ ์ธ์ฆ ๊ด€๋ฆฌ TLS* ์•”ํ˜ธํ™”, ์ธ์ฆ์„œ ๊ด€๋ฆฌ๋ฅผ ํ•œ๋‹ค.

Galley Istio Configuration ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ํ•œ๋‹ค.

Data Plane

Data Plane์€ Envoy Proxy๋ฅผ ์‚ฌ์šฉํ•ด ์„œ๋น„์Šค ๋ฉ”์‰ฌ๋ฅผ ๊ตฌ์„ฑํ•œ๋‹ค.

Envoy Proxy ์„œ๋น„์Šค๊ฐ„ ํ†ต์‹  ๋ฐ ํŠธ๋ž˜ํ”ฝ์„ ์ œ์–ด, URL ๊ธฐ๋ฐ˜ ๋ผ์šฐํŒ…(L7), ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ, Dynamic Configuration ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค.

์ด์Šคํ‹ฐ์˜ค ํŠธ๋ž˜ํ”ฝ ๊ด€๋ฆฌ ์ •์ฑ… (Istio Traffic Management)

์ด์Šคํ‹ฐ์˜ค๋Š” Gateway, VirtualService, DestinationRule, Service Entry ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŠธ๋ž˜ํ”ฝ ๊ด€๋ฆฌ ์ •์ฑ…์„ ์ •์˜ํ•œ๋‹ค.

Gateway

Ingress Gatway์— ์ ์šฉ๋˜๋ฉฐ, ์„œ๋น„์Šค ๋ฉ”์‰ฌ๋กœ ๋“ค์–ด์˜ค๋Š” ์™ธ๋ถ€ ํŠธ๋ž˜ํ”ฝ ํ—ˆ์šฉ ์ •์ฑ…(ํ”„๋กœํ† ์ฝœ, ํ˜ธ์ŠคํŠธ, ํฌํŠธ)์„ ์„ค์ •ํ•œ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ์ด์Šคํ‹ฐ์˜ค๋Š” ๋ชจ๋“  ์™ธ๋ถ€ ํŠธ๋ž˜ํ”ฝ์„ ์ฐจ๋‹จํ•œ๋‹ค.

VirtualService

Sidecar Proxy์— ์ ์šฉ๋˜๋ฉฐ Gateway์ •์ฑ…๊ณผ ๋งตํ•‘ํ•˜์—ฌ ์„ค์ •ํ•œ๋‹ค. ํŠธ๋ž˜ํ”ฝ์„ ์–ด๋””๋กœ ๋ณด๋‚ผ์ง€ ๋ผ์šฐํŒ… ์ •์ฑ… ์„ค์ •ํ•˜๋ฉฐ, ๋“ค์–ด์˜จ ํŠธ๋ž˜ํ”ฝ์„ ๋ผ์šฐํŒ… ๊ทœ์น™์— ๋”ฐ๋ผ ์ ์ ˆํ•œ ์„œ๋น„์Šค๋กœ ๋ผ์šฐํŒ… ํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. Kubernetes์˜ Service๊ฐ€ ๋ชฉ์ ์ง€๊ฐ€ ๋˜๋ฉฐ, ์‹ค์ œ๋กœ Virtual Service์˜ ๊ธฐ๋Šฅ์€ URI๋‚˜ Header ๊ธฐ๋ฐ˜์œผ๋กœ ๋ผ์šฐํŒ…ํ•˜๋Š” Ingress์™€ ์œ ์‚ฌํ•˜๋‹ค. ๊ฐ€์ค‘์น˜๋ฅผ ๋น„์œจ์„ ์ ์šฉํ•˜์—ฌ ํŠธ๋ž˜ํ”ฝ์„ ์ œ์–ดํ•˜๋Š” ๊ธฐ๋Šฅ๋„ ์žˆ์–ด A/B ํ…Œ์ŠคํŠธ์— ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฐธ๊ณ ๋กœ, Ingress๋Š” ๊ฐ€์ค‘์น˜ ๋น„์œจ๋กœ ํŠธ๋ž™ํ”ฝ์„ ์ œ์–ดํ•  ์ˆ˜ ์—†๋‹ค.

DestinationRule

Sidcar Proxy์— ์ ์šฉ๋˜๋ฉฐ, VirtualService ์ •์ฑ…๊ณผ ๋งตํ•‘ํ•˜์—ฌ ์„ค์ •ํ•œ๋‹ค. VirtualService๊ฐ€ ๋ผ์šฐํŒ…ํ•ด์„œ Service๋กœ ํŠธ๋ž˜ํ”ฝ์„ ๋ณด๋‚ด๋ฉด, ์‹ค์ œ๋กœ๋Š” ๊ทธ ์•ˆ์—์„œ ์žˆ๋Š” Pod์— ๋ผ์šฐํŒ…์ด ๋˜๋Š”๋ฐ, ์–ด๋А Pod์— ์–ด๋–ป๊ฒŒ ํŠธ๋ž˜ํ”ฝ์„ ๋ณด๋‚ผ์ง€ ์ •์˜ํ•œ๋‹ค. ์„œ๋น„์Šค์— ํŠธ๋ž˜ํ”ฝ์„ ๋ณด๋‚ด๋”๋ผ๋„ Pod์— ๊ธฐ์ˆ ๋œ Label์— ๋”ฐ๋ผ ์„œ๋น„์Šค ๋‚ด์˜ Pod๋ฅผ ๊ณจ๋ผ์„œ ํŠธ๋ž˜ํ”ฝ์„ ๋ณด๋‚ด๊ฑฐ๋‚˜, Pod๊ฐ„์˜ ๋กœ๋“œ๋ฐธ๋Ÿฐ์‹ฑ ๋“ฑ ๋ผ์šฐํŒ… ์ •์ฑ… ์„ค์ •์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

ServiceEntry

Egress Gateway์— ์ ์šฉ๋˜๋ฉฐ, ์™ธ๋ถ€๋กœ ๋‚˜๊ฐ€๋Š” ํŠธ๋ž˜ํ”ฝ ํ—ˆ์šฉ ์ •์ฑ… ์„ค์ •์„ ํ•œ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ์ด์Šคํ‹ฐ์˜ค๋Š” ๋ชจ๋“  ์™ธ๋ถ€ ํŠธ๋ž˜ํ”ฝ์„ ์ฐจ๋‹จํ•œ๋‹ค.

์ถœ์ฒ˜: https://medium.com/google-cloud/back-to-microservices-with-istio-p1-827c872daa53

Istio๊ฐ€ Ingress ๋Œ€๋น„ ์žฅ์ ์€ ๋ฐฑ๋ถ„์œจ ๊ธฐ๋ฐ˜ ๋ผ์šฐํŒ…, ํŠธ๋ž˜ํ”ฝ ์†๋„ ์ œํ•œ ๋“ฑ์ด ์žˆ์œผ๋ฉฐ, ๋ฉ”ํŠธ๋ฆญ ์ˆ˜์ง‘๋„ ๋งค์šฐ ์‰ฝ๋‹ค.

Nginx Ingress Controller

Ingress๋Š” ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ๋กœ ๋“ค์–ด์˜ค๋Š” ํŠธ๋ž˜ํ”ฝ์„ ๊ด€๋ฆฌํ•˜๋ฉฐ, Front์— Load Balancer ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค./etc/nginx/nginx.conf ํŒŒ์ผ์— ๋ผ์šฐํŒ… ์ •๋ณด๋ฅผ ์„ค์ •ํ•œ๋‹ค.

์ด์Šคํ‹ฐ์˜ค ๊ธฐ๋ฐ˜ A/B ํ…Œ์ŠคํŠธ ์˜ˆ์ œ

์šฉ์–ด

Service Mesh ๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค ํ†ต์‹ ๊ณ„์ธต์œผ๋กœ ์„œ๋น„์Šค๊ฐ„ ๋ชจ๋“  ํ†ต์‹ ์ด ๋ฉ”์‰ฌ๋ฅผ ํ†ตํ•ด ์ด๋ฃจ์–ด์ง„๋‹ค.

SSL(Secure Sockets Layer) ๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™”ํ•˜์—ฌ ์•ˆ์ „ํ•˜๊ฒŒ ์ „์†กํ•˜๊ธฐ ์œ„ํ•œ ์ธํ„ฐ๋„ท ํ†ต์‹  ํ”„๋กœํ† ์ฝœ

TLS(Transport Layer Security) SSL์˜ ์ฐจ์„ธ๋Œ€ ๋ฒ„์ „์œผ๋กœ ๋ชจ๋“  ์ข…๋ฅ˜์˜ ์ธํ„ฐ๋„ท ํŠธ๋ž˜ํ”ฝ์„ ์•”ํ˜ธํ™”

์ฐธ๊ณ ์ž๋ฃŒ

https://istio.io/latest/docs/ops/deployment/architecture/ https://medium.com/google-cloud/back-to-microservices-with-istio-p1-827c872daa53 https://github.com/istio/istio/tree/master/samples https://www.mirantis.com/blog/your-app-deserves-more-than-kubernetes-ingress-kubernetes-ingress-vs-istio-gateway-webinar/

Last updated

Was this helpful?