Istio
Istio
Last updated
Was this helpful?
Istio
Last updated
Was this helpful?
๋ง์ดํฌ๋ก์๋น์ค๋ ์๋น์ค๊ฐ์ ์ฐ๊ฒฐ ๊ตฌ์กฐ๊ฐ ๋ณต์กํด์ ์๋น์ค๋ค์ด ์๋ก ์ง์ ํธ์ถํ๋ฉด ์ฅ์ ๊ฐ ๋ฐ์ํ ๋ ์ถ์ ์ด ์ด๋ ต๊ณ , ๋ก๋๋ฐธ๋ฐ์, ํธ๋ํฝ ๊ด๋ฆฌ, ์ธ์ฆ, ๊ถํ ๋ถ์ฌ ๋ฑ์ ๊ด๋ฆฌํ๋ ๊ฒ์ด ๋ณต์กํด์ง๋ค. ์ด๋ฌํ ๋ง์ดํฌ๋ก ์๋น์ค์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ง์ ํธ์ถํ๋ ๊ฒ์ด ์๋๋ผ, ์๋น์ค ๋ง๋ค ํ๋ก์๋ฅผ ๋๊ณ ํ๋ก์๋ฅผ ํตํด ์๋น์ค๋ฅผ ํธ์ถํ์ฌ ํธ๋ํฝ์ ํต์ ํด์ผ ํ๋ค.
๋ณดํต ํ๋ก์๋ ์๋น์ค ๋ด๋ถ๊ฐ ์๋๋ผ ์๋น์ค ์ปจํ ์ด๋์ ๋ถ๋ฆฌ๋ ์ฌ์ด๋์นด(Sidecar) ํํ๋ก ์คํ๋๋๋ฐ, ์๋น์ค๊ฐ ์ฆ๊ฐํจ์ ๋ฐ๋ผ ํ๋ก์๋ ์ฆ๊ฐํ๊ธฐ ๋๋ฌธ์, ํ๋ก์ ๊ด๋ฆฌ๊ฐ ์ด๋ ค์์ง๋ค. ๊ทธ๋์ ํ๋ก์ ๊ด๋ฆฌ ์ด๋ ค์์ ์ค์ด๊ธฐ ์ํด ํ๋ก์ ์ค์ ๊ฐ์ ์ ์ฅํ๋ Control Plane๊ณผ ์ค์ ๊ฐ์ ๋ฐ๋ผ ํธ๋ํฝ์ ์ ์ดํ๋ Data Plane์ผ๋ก ๋๋ ์ ํ๋ก์๋ฅผ ๊ด๋ฆฌํ ํ์๊ฐ ์๋ค. ์ด๋ฌํ Service Mesh* ๊ตฌ์กฐ๋ก ๋คํธ์ํฌ ํธ๋ํฝ ๊ด๋ฆฌํ๋ ์คํ์์ค ๋๊ตฌ ์ค์ Istio๊ฐ ์๋ค.
Ingress๋ ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ๋ก ๋ค์ด์ค๋ ํธ๋ํฝ์ ๊ด๋ฆฌํ๊ณ , ์ด์คํฐ์ค๋ ์ฟ ๋ฒํ ๋์ค ํด๋ฌ์คํฐ ๋ด์ Service Mesh๋ก ๋ค์ด์ค๊ณ ๋๊ฐ๋ ํธ๋ํฝ์ ๊ด๋ฆฌํ๊ธฐ ์ํ Gateway๋ฅผ ์ ๊ณตํ์ฌ, ํธ๋ํฝ ๋ผ์ฐํ , ๋ก๋๋ฐธ๋ฐ์ฑ, ์๋น์ค-์๋น์ค ๊ฐ ์ธ์ฆ, ๋ชจ๋ํฐ๋ง ๊ธฐ๋ฅ์ ์ํํ๋ค.
์ด์คํฐ์ค๋ Data Plane๊ณผ Control Plane 2๊ฐ์ ์์ญ์ผ๋ก ๊ตฌ๋ถ๋๋ฉฐ, Data Plane์ผ๋ก Envoy Proxy๋ฅผ ์ฌ์ฉํ๊ณ Control Plane์ istiod๊ฐ ๋ด๋นํ๋ค.
Control Plane์ ์๋น์ค ๋ฉ์ฌ ์ปจํธ๋กค๋ฌ๋ก Pilot, Mixer, Citadel, Galley ๋ก ์ด๋ฃจ์ด์ ธ ์๋ค.
Pilot Envoy Proxy ์ค์ ๊ด๋ฆฌ๋ก ์๋น์ค๊ฐ ํต์ ๋ฐ ํธ๋ํฝ ๊ด๋ฆฌ๋ฅผ ์ํด Policy๋ฅผ ๊ตฌ์ฑํ๋ค.
Mixer ๊ฐ์ข ๋ชจ๋ํฐ๋ง ์งํ๋ฅผ ์์งํ๋ฉฐ, Policy๋ฅผ ์ฒดํฌํ๋ ์ญํ ์ ํ๋ค.
Citadel ์๋น์ค ๊ฐ์ ์ธ์ฆ ๊ด๋ฆฌ TLS* ์ํธํ, ์ธ์ฆ์ ๊ด๋ฆฌ๋ฅผ ํ๋ค.
Galley Istio Configuration ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ํ๋ค.
Data Plane์ Envoy Proxy๋ฅผ ์ฌ์ฉํด ์๋น์ค ๋ฉ์ฌ๋ฅผ ๊ตฌ์ฑํ๋ค.
Envoy Proxy ์๋น์ค๊ฐ ํต์ ๋ฐ ํธ๋ํฝ์ ์ ์ด, URL ๊ธฐ๋ฐ ๋ผ์ฐํ (L7), ๋ก๋ ๋ฐธ๋ฐ์ฑ, Dynamic Configuration ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
์ด์คํฐ์ค๋ 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์ ์ ์ฉ๋๋ฉฐ, ์ธ๋ถ๋ก ๋๊ฐ๋ ํธ๋ํฝ ํ์ฉ ์ ์ฑ ์ค์ ์ ํ๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ์ด์คํฐ์ค๋ ๋ชจ๋ ์ธ๋ถ ํธ๋ํฝ์ ์ฐจ๋จํ๋ค.
Istio๊ฐ Ingress ๋๋น ์ฅ์ ์ ๋ฐฑ๋ถ์จ ๊ธฐ๋ฐ ๋ผ์ฐํ , ํธ๋ํฝ ์๋ ์ ํ ๋ฑ์ด ์์ผ๋ฉฐ, ๋ฉํธ๋ฆญ ์์ง๋ ๋งค์ฐ ์ฝ๋ค.
Ingress๋ ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ๋ก ๋ค์ด์ค๋ ํธ๋ํฝ์ ๊ด๋ฆฌํ๋ฉฐ, Front์ Load Balancer ์ฐ๊ฒฐํ ์ ์๋ค./etc/nginx/nginx.conf ํ์ผ์ ๋ผ์ฐํ ์ ๋ณด๋ฅผ ์ค์ ํ๋ค.
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/