
ํ๋ก์ ํธ์์ ๊ณ ๊ฐ์ฌ์ ์๊ตฌ์ฌํญ์ ๋ง์ถ๊ธฐ ์ํด Istio๋ฅผ ์ฌ์ฉํด์ผ ํ ์ผ์ด ์๊ฒผ์ต๋๋ค.
๊ธฐ์กด์๋ NGINX Ingress Controller๋ฅผ ์ฌ์ฉํด ์๋๋ฐ, ์ด๋ฅผ ๋์ฒดํ๊ธฐ ์ํ ์์
์ด ํ์ํ์ต๋๋ค.
Istio๋ฅผ ์ค๋ฌด์์ ์ฌ์ฉํด ๋ณธ ์ ์ ์ฒ์์ด์ด์ ์ํ์ฐฉ์ค๊ฐ ๋ง์์ต๋๋ค.
์ด ๊ณผ์ ์์ ๊ฒช์๋ ๊ณผ์ ๋ค๊ณผ ๋ฌธ์ ๋ค์ ์ ๋ฆฌํด ๋ณด๋ ค๊ณ ํฉ๋๋ค.
:::info ๋ค์ด๊ฐ๊ธฐ ์ ์
์์ฝ๊ฒ๋, Service Mesh์ Sidecar ๊ด๋ จ ๋ด์ฉ์ ๊ฑฐ์ ๋ค๋ฃจ์ง ์์ต๋๋ค.
์ด ๋ถ๋ถ์ ๊ธฐํ๊ฐ ๋๋ฉด 2ํธ์ผ๋กโฆ
:::
Istio?
Istio๋ ์ปจํ
์ด๋ ํ๊ฒฝ์์ ์ฌ์ฉํ ์ ์๋ Service Mesh ์๋ฃจ์
์
๋๋ค.
Istio๋ Sidecar ํจํด์ ์ฌ์ฉํด ๊ถํ๊ณผ ์ธ์ฆ์ ๊ด๋ฆฌํ ์ ์๊ณ , L7 ๋ก๋ ๋ฐธ๋ฐ์ฑ์ ์ ๊ณตํ์ฌ gRPC๋ HTTP/2 ํธ๋ํฝ์ ๋ถ์ฐ๋ ํจ๊ณผ์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
ํ์ง๋ง ์์์ ๋งํ ๊ฒ์ฒ๋ผ ์ฌ๊ธฐ์๋ NGINX Ingress Controller๋ฅผ ๋์ฒดํ์ฌ ์๋น์ค๋ฅผ ์ธ๋ถ์ ๋ ธ์ถ์ํค๋ ๊ฒ์ด Istio์ ๋์ ๋ชฉ์ ์ด์์ต๋๋ค. ์ด๋ฅผ ์ํด Istio๋ฅผ ์ค์นํ๊ณ , ์ถ๊ฐ๋ก Gateway์ VirtualService๋ฅผ ์ค์ ํด ์๋น์ค๋ฅผ ๋ ธ์ถ์ํค๋ ๊ณผ์ ์ ์งํํ์ต๋๋ค.
Istio๋ฅผ ์ ์ฉํ๋ฉฐ ๊ฒช์ ๋ฌธ์ ๋ค
์ ๊ท์ Rewrite ๋ฌธ์
๊ธฐ์กด์ ์ฌ์ฉํ๋ NGINX Ingress Controller ์ค์ ์ ๊ฒฝ๋ก๋ฅผ ์ ๊ท์์ ์ฌ์ฉํด ์ฌ์์ฑํ๋ ๋ถ๋ถ์ด ์์์ต๋๋ค. ์ด๋ฅผ Istio์์ ์ฌ์ฉํ๋ ค๋ฉด v1.19 ์ด์์ ๋ฒ์ ์ ์ฌ์ฉํด์ผ ํ๋๋ฐ, ์ต์ ๋ฒ์ ์ ์ฌ์ฉํ๊ธฐ ์ํด์๋ Helm chart๋ฅผ ํตํ ์ค์น๊ฐ ํ์ํฉ๋๋ค.
Istio Helm chart๋ ์ด 3๊ฐ๊ฐ ์๋๋ฐ, ์ฐจ๋ก๋๋ก ์ค์น๊ฐ ํ์ํฉ๋๋ค.
istio/base: ๊ธฐ๋ณธ ์ค์ ์ ๋ด๋นํ๋ Helm chart์ ๋๋ค.istio/istiod: ์ปจํธ๋กค ํ๋ ์ธ์ ๋ด๋นํ๋ Helm chart์ ๋๋ค.istio/gateway: ๊ฒ์ดํธ์จ์ด๋ฅผ ๋ด๋นํ๋ Helm chart์ ๋๋ค.
์ดํ์๋ ์๋ง๊ฒ ์ ๊ท์ ๊ฒฝ๋ก๋ฅผ ์ฌ์์ฑํด ์ฃผ๋ฉด ๋๋๋ฐ, ์๋ฃ๋ฅผ ์ฐพ์๋ ์ ๋์ค์ง ์์๊ณ ํด๋น ๋งํฌ์ฒ๋ผ ์ ์ฉํด ํด๊ฒฐํ์ต๋๋ค.
์ธ๋ถ ๋ ธ์ถ์ ์ด๋ป๊ฒ ํ์ง?
istio/gateway๊น์ง ์ค์นํ ์ดํ์๋ ์ธ๋ถ์ ๋
ธ์ถ์ํค๊ธฐ ์ํ ์ค์ ์ด ํ์ํฉ๋๋ค.
ํต์์ ์ธ ์๋น์ค ๋
ธ์ถ๊ณผ ๋น์ทํ๊ฒ ์งํ์ ํ๋ฉด ๋๋๋ฐ, ๊ฐ์ฅ ํ์คํ ๋ฐฉ๋ฒ์ istio/gateway ์ฐจํธ์ values.yaml ํ์ผ์ ์์ ํ๋ ๊ฒ์
๋๋ค.
# ...
defaults:
service:
type: LoadBalancer
loadBalancerIP: "์ฌ๊ธฐ์ ์ธ๋ถ์ฉ IP ์
๋ ฅ"
๋ณดํต์ ์์ ๊ฐ์ด ์ค์ ํ๊ฑฐ๋, ํด๋ผ์ฐ๋ ํ๊ฒฝ์ ๋ฐ๋ผ Annotation์ ์ถ๊ฐํ์ฌ ํด๊ฒฐ์ด ๊ฐ๋ฅํฉ๋๋ค.
์์ฃผ ํน์ํ ๊ฒฝ์ฐ, externalIPs๋ฅผ ์ฌ์ฉํด IP๋ฅผ ์ง์ ํ๋ ๊ฒฝ์ฐ๋ ์์์ต๋๋ค.
Argo CD๋ก Istio ๋ฐฐํฌํ๊ธฐ
์ค์ ํ๋ก์ ํธ์์๋ Argo CD๋ฅผ ์ฌ์ฉํด ๋ชจ๋ ์ฑ์ ๋ฐฐํฌํ๊ณ , ๋น์ฐํ Istio๋ ํฌํจ๋์์ต๋๋ค.
ํ์ง๋ง ์์์ ์ด์ผ๊ธฐํ ๊ฒ์ฒ๋ผ Istio Helm chart๋ ์์กด์ฑ์ด ์๊ธฐ ๋๋ฌธ์ ์์ฐจ ๋ฐฐํฌ๋ฅผ ์ํ ๊ณ ๋ฏผ์ด ํ์ํ์ต๋๋ค.
์ด๋ฅผ ์ํด ์๊ฐํ ๋ฐฉ๋ฒ์ ๋ค์ 2๊ฐ์ง์์ต๋๋ค.
- Helmfile ์ฌ์ฉํด ์์กด์ฑ ๋ถ์ฌํ๊ธฐ
์ ๊ฐ ์๊ฐํ๋ ๊ฐ์ฅ ํ์คํ ๋ฐฉ๋ฒ์ ๋๋ค. ์ด ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ฉด ์์กด์ฑ์ ๋ถ์ฌํ์ฌ Istio๋ฅผ ์์๋๋ก ๋ฐฐํฌํ ์ ์์ ๊ฒ ๊ฐ์์ต๋๋ค. ํ์ง๋ง ๊ฒ์ฆ ์์ด ๋์ ํ๊ธฐ์๋ ๋ฌด๋ฆฌ๊ฐ ์์ด ์ฑ์ฉํ์ง ์์์ต๋๋ค. - Subchart ์ฌ์ฉํ๊ธฐ
Istio๋ฅผ ๊ตฌ์ฑํ๋ 3๊ฐ์ Helm chart๋ฅผ ํฌํจํ ์์ Helm chart๋ฅผ ๋ง๋ค์ด ์ฌ์ฉํ์ต๋๋ค. Helm์์๋ Chart dependency๋ฅผ ํตํด ํน์ Subchart๋ฅผ ํ์ฑํ ๋๋ ๋นํ์ฑํํ ์ ์๋๋ฐ, ์ด ๋ถ๋ถ์ ์ด์ฉํ์ต๋๋ค. ๊ฒฐ๊ตญ ์ต์ด ์ค์น ๋ ๋ฌธ์ ๊ฐ ์๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ์ฒ์์๋istio/base๋ง ํ์ฑํํ์ฌ ์ค์นํ๊ณ , ์ดํ์๋values.yamlํ์ผ์ ์์ ํด ์ฐจ๋ก๋๋ก ํ์ฑํํ์ฌ ์ค์นํ๋ ๋ฐฉ์์ผ๋ก ์งํํ์ต๋๋ค.
๊ทธ ์ธ
- TLS๋ฅผ ์ ์ฉํด์ผ ํ๋ ๊ฒฝ์ฐ, TLS Secret์ Istio๊ฐ ์ค์น๋ Namespace์ ์์ฑํด ์ฃผ์ด์ผ ํฉ๋๋ค.
(๊ธฐ๋ณธ๊ฐ์istio-system)
๊ณต์ ๋ฌธ์์๋ ์ ํ ์๋๋ฐ, ๊ด๋ จํด์ ์ํ์ฐฉ์ค๊ฐ ์กฐ๊ธ ์์์ต๋๋ค. istio/gateway์ฐจํธ์ ์ด๋ฆ์ Gateway ์ ์์์๋ ์ฐธ์กฐํ๊ธฐ ๋๋ฌธ์ ์ฃผ์ํด์ผ ํฉ๋๋ค. ์ด๋ก ์ธํด ๋คํธ์ํฌ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ ์ด๋ฅผ ๋ง์ถฐ์ผ ํฉ๋๋ค.- Azure ํ๊ฒฝ์์ Argo CD๋ก Istio๋ฅผ ๋ฐฐํฌํ ํ์, ์ผ๋ถ ๋ฆฌ์์ค๊ฐ OutOfSync ์ํ๊ฐ ๋๋ ๊ฒฝ์ฐ๊ฐ ์์์ต๋๋ค. ๊ด๋ จ๋ ์ด์๋ฅผ 2๊ฑด ์ฐพ์๋ณผ ์ ์์๋๋ฐ, ๋๋ถ๋ถ์ AKS์ Istio ์์ฒด ๋ฌธ์ ๋ก ํ๋จ๋์์ต๋๋ค. ๋ฐ๋ผ์ ์ด ๋ถ๋ถ์ ์์๋ก OutOfSync ์์ธ์ฒ๋ฆฌ๋ฅผ ์ ์ฉํด ๋์์ต๋๋ค.
๋ง์น๋ฉฐ
์์ ๊ฐ์ ๊ณผ์ ์ ๊ฑฐ์ณ, ํ์ฌ๋ 2~3๊ฐ ์ ๋์ ํ๋ก์ ํธ์์ Istio๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
์์ง ๊ณ ๊ธ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ ๋จ๊ณ๋ ์๋์ง๋ง, Istio๋ ์ ์๋ ค์ง ๋๊ตฌ์ด๊ณ ๊ธฐ๋ฅ ์ง์๋ ์ ๋๊ธฐ ๋๋ฌธ์ ์ดํ์๋ ๋ฌด๋ฆฌ ์์ด ์ ์งํ ์ ์์ ๊ฒ ๊ฐ์ต๋๋ค.
์ถํ์ Istio๋ฅผ ๋ ๊น๊ฒ ์ฌ์ฉํด ๋ณผ ์ ์๋ค๋ฉด, ๋ ๋ง์ ๋ด์ฉ์ ์ ์ด ๋ณด๋ ค๊ณ ํฉ๋๋ค.
์ฐธ๊ณ ์๋ฃ
- Istio ๊ณต์ ๋ฌธ์
- How to use uriRegexRewrite in Istio VirtualService?
- ValidationWebhook โfailurePolicyโ is changed to โFailโ after deployment - GitHub
- Whoโs modifying the istio-sidecar-injector MutatingWebhookConfiguration? - GitHub