๊ตญ์ ์ ์ธ ๋ฏธ์คํฐ๋ฆฌ ์ธ๋ฌผ์ธ ์ค์คํด ํ์์ค๋ โ์ํ์ด ๋์ ์ค๊ฐ ์ด๋ฆ์ด๋คโ๋ผ๊ณ ๋งํ๊ณค ํ์ต๋๋ค. ๊ทธ๋ฌ๋ ์ํผ ์์ด์ ํธ์ ์ ๋ณด ๊ธฐ๊ด์ด ๋์ด ํ๊ฐํ๋ ๊ฒ์ ์ง๋ฃจํจ์ด ์ํ๋ณด๋ค ํจ์ฌ ๋์ ์ปดํจํฐ ์๋น์ค์๋ ์ ํ ์ ํฉํ์ง ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ Istio๋ OpenShift ๋ฐ Kubernetes์ ํจ๊ป ๋ง์ดํฌ๋ก์๋น์ค ๋ฐฐํฌ๋ฅผ ์ ๋ง ์ง๋ฃจํ๊ณ ์์ธก ๊ฐ๋ฅํ๊ฒ ๋ง๋ญ๋๋ค. ์ ๋ง ์ข์ต๋๋ค. Istio ์๋ฆฌ์ฆ์ ๋ค ๋ฒ์งธ์ด์ ๋ง์ง๋ง ๊ฒ์๋ฌผ์์ ์ด์ ๋ํด ๋ ์์ธํ ์ด์ผ๊ธฐํ๊ฒ ์ต๋๋ค.
์ง๋ฃจํจ์ด ๋ง์ ๋
์ฐ๋ฆฌ์ ๊ฒฝ์ฐ ์ง๋ฃจํจ์ ๋ง์ง๋ง ๋จ๊ณ์์๋ง ๋ฐ์ํฉ๋๋ค. ๋จ์ ๊ฒ์ ์์์ ๊ณผ์ ์ ์ง์ผ๋ณด๋ ๊ฒ๋ฟ์ ๋๋ค. ํ์ง๋ง ์ด๋ฅผ ์ํด์๋ ๋จผ์ ๋ชจ๋ ๊ฒ์ ๊ตฌ์ฑํด์ผ ํ๋ฉฐ ์ฌ๊ธฐ์๋ ๋ง์ ํฅ๋ฏธ๋ก์ด ๊ฒ๋ค์ด ์ฌ๋ฌ๋ถ์ ๊ธฐ๋ค๋ฆฌ๊ณ ์์ต๋๋ค.
์ ๋ฒ์ ์ ์ํํธ์จ์ด๋ฅผ ๋ฐฐํฌํ ๋๋ ์ํ์ ์ต์ํํ๊ธฐ ์ํ ๋ชจ๋ ์ต์ ์ ๊ณ ๋ คํด ๋ณผ ๊ฐ์น๊ฐ ์์ต๋๋ค. ๋ณ๋ ฌ ์คํ์ ๋งค์ฐ ๊ฐ๋ ฅํ๊ณ ์ ์ฆ๋ ํ ์คํธ ๋ฐฉ๋ฒ์ด๋ฉฐ, Istio๋ฅผ ์ฌ์ฉํ๋ฉด "๋น๋ฐ ์๋น์ค"(๋ง์ดํฌ๋ก์๋น์ค์ ์จ๊ฒจ์ง ๋ฒ์ )๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ก๋์ ์์คํ ์ ๋ฐฉํดํ์ง ์๊ณ ์ด๋ฅผ ์ํํ ์ ์์ต๋๋ค. ์ด์ ๋ํ ํน๋ณํ ์ฉ์ด์ธ "Dark Launch"๋ ์๋๋ฐ, ์ด๋ ๋์ผํ ์คํ์ด ์ด๋ฆ์ธ "ํธ๋ํฝ ๋ฏธ๋ฌ๋ง"์ ๊ฐ์ง ๊ธฐ๋ฅ์ ์ํด ํ์ฑํ๋ฉ๋๋ค.
์ด์ ๋จ๋ฝ์ ์ฒซ ๋ฒ์งธ ๋ฌธ์ฅ์์๋ "๋ฆด๋ฆฌ์ค" ๋์ "๋ฐฐํฌ"๋ผ๋ ์ฉ์ด๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ์ํ๋ ๋งํผ ์์ฃผ ๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ๋ฐฐํฌํ๊ณ ์ฌ์ฉํ ์ ์์ด์ผ ํฉ๋๋ค. ์ด ์๋น์ค๋ ํธ๋ํฝ์ ์์ ๋ฐ ์ฒ๋ฆฌํ๊ณ , ๊ฒฐ๊ณผ๋ฅผ ์์ฑํ๊ณ , ๋ก๊ทธ์ ๊ธฐ๋กํ๊ณ ๋ชจ๋ํฐ๋งํ ์ ์์ด์ผ ํฉ๋๋ค. ๊ทธ๋ฌ๋ ๋์์ ์ด ์๋น์ค ์์ฒด๊ฐ ๋ฐ๋์ ํ๋ก๋์ ํ๊ฒฝ์ผ๋ก ์ถ์๋ ํ์๋ ์์ต๋๋ค. ์ํํธ์จ์ด ๋ฐฐํฌ์ ์ถ์๊ฐ ํญ์ ๊ฐ์ ๊ฒ์ ์๋๋๋ค. ์ํ ๋๋ง๋ค ๋ฐฐํฌํ ์ ์์ง๋ง ์ค๋น๊ฐ ๋์์ ๋๋ง ๋ฆด๋ฆฌ์คํ์ธ์.
์ง๋ฃจํจ์ ์ ๋ฆฌํ๋ ๊ฒ์ ํฅ๋ฏธ๋กญ๋ค
๋ชจ๋ HTTP ์์ฒญ์ ๋ง์ดํฌ๋ก์๋น์ค ๊ถ์ฅ์ฌํญ v1๋ก ๋ผ์ฐํ
ํ๋ ๋ค์ Istio ๋ผ์ฐํ
๊ท์น์ ์ดํด๋ณด์ธ์(๋ชจ๋ ์๋ ๋ค์์์ ๊ฐ์ ธ์ด).
๋ผ๋ฒจ์ ์ฃผ์ํ์ธ์ mirror:
ํ๋ฉด ํ๋จ - ํธ๋ํฝ ๋ฏธ๋ฌ๋ง์ ์ค์ ํ๋ ๊ฒ์
๋๋ค. ์, ์ ๋ง ๊ฐ๋จํฉ๋๋ค!
์ด ๊ท์น์ ๊ฒฐ๊ณผ๋ ํ๋ก๋์ ์์คํ (v1)์ด ๋ค์ด์ค๋ ์์ฒญ์ ๊ณ์ ์ฒ๋ฆฌํ์ง๋ง ์์ฒญ ์์ฒด๋ v2์ ๋น๋๊ธฐ์์ผ๋ก ๋ฏธ๋ฌ๋ง๋๋ ๊ฒ์ ๋๋ค. ์ฆ, ์์ ํ ๋ณต์ ๋ณธ์ด v2๋ก ์ด๋ํ๊ฒ ๋ฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ํ๋ก๋์ ์์คํ ์ ์๋์ ์ด๋ค ์์ผ๋ก๋ ๋ฐฉํดํ์ง ์๊ณ ์ค์ ์กฐ๊ฑด(์ค์ ๋ฐ์ดํฐ ๋ฐ ํธ๋ํฝ)์์ vXNUMX๋ฅผ ํ ์คํธํ ์ ์์ต๋๋ค. ์ด๋ก ์ธํด ํ ์คํธ ๊ตฌ์ฑ์ด ์ง๋ฃจํด ์ง๋๊น? ๋ค, ๋ฌผ๋ก ์ด์ฃ . ๊ทธ๋ฌ๋ ๊ทธ๊ฒ์ ํฅ๋ฏธ๋ก์ด ๋ฐฉ์์ผ๋ก ์ด๋ฃจ์ด์ก์ต๋๋ค.
๋๋ผ๋ง๋ฅผ ์ถ๊ฐํ์
v2 ์ฝ๋์์๋ ๋ค์ด์ค๋ ์์ฒญ์ผ๋ก ์ธํด ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋ ์ ์๋ ์ํฉ์ ์ ๊ณตํด์ผ ํฉ๋๋ค. ์์ฒญ ์์ฒด๋ ์ฝ๊ณ ํฌ๋ช ํ๊ฒ ๋ฏธ๋ฌ๋ง๋์ง๋ง ํ ์คํธ์์ ์ฒ๋ฆฌ ๋ฐฉ๋ฒ์ ์ ํํ๋ ๊ฒ์ ๊ทํ์๊ฒ ๋ฌ๋ ค ์์ผ๋ฉฐ ์ด๋ ์ฝ๊ฐ ๊ฑฑ์ ์ค๋ฝ์ต๋๋ค.
์ค์ํ ์ ์ ๋ค์ ๋ง์๋๋ฆฌ๊ฒ ์ต๋๋ค
ํธ๋ํฝ ๋ฏธ๋ฌ๋ง(Dark Launch/Request Mirroring)์ ์ฌ์ฉํ ๋น๋ฐ ์คํ์ ์ด๋ค ๋ฐฉ์์ผ๋ก๋ ์ฝ๋์ ์ํฅ์ ์ฃผ์ง ์๊ณ ์ํํ ์ ์์ต๋๋ค.
์๊ฐํ ๊ฑฐ๋ฆฌ
์์ฒญ์ด ๋ฏธ๋ฌ๋ง๋๋ ๊ณณ์์ ์์ฒญ ์ค ์ผ๋ถ๋ฅผ v1์ด ์๋ v2๋ก ๋ณด๋ด๋ฉด ์ด๋ป๊ฒ ๋๋์? ์๋ฅผ ๋ค์ด ์ ์ฒด ์์ฒญ์ 2% ๋๋ ํน์ ์ฌ์ฉ์ ๊ทธ๋ฃน์ ์์ฒญ๋ง ํด๋น๋ฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ v1์ ์๋ ๋ฐฉ์์ ์ด๋ฏธ ์ดํด๋ณด๊ณ ์ ์ฐจ์ ์ผ๋ก ๋ชจ๋ ์์ฒญ์ ์ ๋ฒ์ ์ผ๋ก ์ ์กํฉ๋๋ค. ๋๋ ๊ทธ ๋ฐ๋๋ก v2์ ๋ฌธ์ ๊ฐ ์์ผ๋ฉด ๋ชจ๋ ๊ฒ์ vXNUMX๋ก ๋๋๋ฆฝ๋๋ค. ์นด๋๋ฆฌ์ ๋ฐฐํฌ๋ผ๊ณ ํ๋ ๊ฒ ๊ฐ์์.
Istio์ Canary ๋ฐฐํฌ: ์ปค๋ฏธ์ ๋ ๋จ์ํ
์กฐ์ฌ์ค๋ฝ๊ฒ ์ฐจ๊ทผ์ฐจ๊ทผ
Canary ๋ฐฐํฌ ๋ฐฐํฌ ๋ชจ๋ธ์ ๋ณธ์ง์ ๋งค์ฐ ๊ฐ๋จํฉ๋๋ค. ์ํํธ์จ์ด์ ์ ๋ฒ์ (์ด ๊ฒฝ์ฐ ๋ง์ดํฌ๋ก์๋น์ค)์ ์์ํ ๋ ๋จผ์ ์๊ท๋ชจ ์ฌ์ฉ์ ๊ทธ๋ฃน์๊ฒ ํด๋น ๋ฒ์ ์ ๋ํ ์ก์ธ์ค ๊ถํ์ ๋ถ์ฌํฉ๋๋ค. ๋ชจ๋ ๊ฒ์ด ์์กฐ๋กญ๊ฒ ์งํ๋๋ฉด ์ ๋ฒ์ ์ด ์๋ํ๊ธฐ ์์ํ ๋๊น์ง ์ด ๊ทธ๋ฃน์ ์ฒ์ฒํ ๋๋ฆฌ๊ฑฐ๋, ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ ๊ฒฐ๊ตญ ๋ชจ๋ ์ฌ์ฉ์๋ฅผ ํด๋น ๊ทธ๋ฃน์ผ๋ก ๋ง์ด๊ทธ๋ ์ด์ ํฉ๋๋ค. ์ ์คํ๊ณ ์ ์ง์ ์ผ๋ก ์ ๋ฒ์ ์ ๋์ ํ๊ณ ํต์ ๋ ๋ฐฉ์์ผ๋ก ์ฌ์ฉ์๋ฅผ ํด๋น ๋ฒ์ ์ผ๋ก ์ ํํ๋ฉด ์ํ์ ์ค์ด๊ณ ํผ๋๋ฐฑ์ ๊ทน๋ํํ ์ ์์ต๋๋ค.
๋ฌผ๋ก Istio๋ ์ง๋ฅํ ์์ฒญ ๋ผ์ฐํ ์ ์ํ ๋ช ๊ฐ์ง ์ข์ ์ต์ ์ ์ ๊ณตํ์ฌ Canary ๋ฐฐํฌ๋ฅผ ๋จ์ํํฉ๋๋ค. ๊ทธ๋ ์ต๋๋ค. ์ด ๋ชจ๋ ์์ ์ ์ด๋ค ๋ฐฉ์์ผ๋ก๋ ์์ค ์ฝ๋๋ฅผ ๊ฑด๋๋ฆฌ์ง ์๊ณ ๋ ์ํํ ์ ์์ต๋๋ค.
๋ธ๋ผ์ฐ์ ํํฐ๋ง
๊ฐ์ฅ ๊ฐ๋จํ ๋ผ์ฐํ ๊ธฐ์ค ์ค ํ๋๋ ๋ธ๋ผ์ฐ์ ๊ธฐ๋ฐ ๋ฆฌ๋๋ ์ ์ ๋๋ค. Safari ๋ธ๋ผ์ฐ์ ์ ์์ฒญ๋ง v2๋ก ์ด๋ํ๋ ค๊ณ ํ๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค. ์ํ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ด ๋ผ์ฐํ
๊ท์น์ ์ ์ฉํ ํ ๋ค์ ๋ช
๋ น์ ์ฌ์ฉํด ๋ณด๊ฒ ์ต๋๋ค. curl
๋ฃจํ์์ ๋ง์ดํฌ๋ก์๋น์ค์ ๋ํ ์ค์ ์์ฒญ์ ์๋ฎฌ๋ ์ด์
ํฉ๋๋ค. ์คํฌ๋ฆฐ์ท์์ ๋ณผ ์ ์๋ฏ์ด ๋ชจ๋ v1๋ก ์ด๋ํฉ๋๋ค.
v2์ ํธ๋ํฝ์ ์ด๋์ ์๋์? ์ด ์์์๋ ๋ชจ๋ ์์ฒญ์ด ์์ฒด ๋ช
๋ น์ค์์๋ง ์๊ธฐ ๋๋ฌธ์ ๋จ์ํ ์กด์ฌํ์ง ์์ต๋๋ค. ํ์ง๋ง ์ ํ๋ฉด์ ๊ฒฐ๋ก ์ ์ฃผ์ํ์ธ์. ์ด๋ Safari ๋ธ๋ผ์ฐ์ ์์ ์์ฒญ์ ์คํํ๋ค๋ ์ฌ์ค์ ๋ํ ๋ฐ์์ด๋ฉฐ ๊ฒฐ๊ณผ์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๋ฌด์ ํ์ ํ
์ฐ๋ฆฌ๋ ์ ๊ท์์ด ์์ฒญ ๋ผ์ฐํ ์ ์ํ ๋งค์ฐ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค๊ณ ์ด๋ฏธ ์์ฑํ์ต๋๋ค. ๋ค์ ์๋ฅผ ์ดํด๋ณด์ญ์์ค(๋ฌด์จ ์ผ์ ํ๋์ง ์ดํดํ์ค ๊ฒ์ ๋๋ค).
์ด์ ๋น์ ์ ์๋ง๋ ์ ๊ท ํํ์์ด ๋ฌด์์ ํ ์ ์๋์ง์ ๋ํด ์๊ฒ ๋ ๊ฒ์
๋๋ค.
ํ๋ช ํ๊ฒ ํ๋ํ๋ผ
ํนํ ์ ๊ท์์ ์ฌ์ฉํ์ฌ ํจํท ํค๋๋ฅผ ์ฒ๋ฆฌํ๋ ์ค๋งํธ ๋ผ์ฐํ ์ ์ฌ์ฉํ๋ฉด ์ํ๋ ๋ฐฉ์์ผ๋ก ํธ๋ํฝ์ ์กฐ์ ํ ์ ์์ต๋๋ค. ์ด๋ ์ ์ฝ๋์ ๊ตฌํ์ ํฌ๊ฒ ๋จ์ํํฉ๋๋ค. ๊ฐ๋จํ๊ณ ์ฝ๋ ์์ฒด๋ฅผ ๋ณ๊ฒฝํ ํ์๊ฐ ์์ผ๋ฉฐ ํ์ํ ๊ฒฝ์ฐ ๋ชจ๋ ๊ฒ์ ์๋๋๋ก ์ ์ํ๊ฒ ๋ฐํํ ์ ์์ต๋๋ค.
๊ด์ฌ์ด ์์ผ์ญ๋๊น?
์ปดํจํฐ์์ Istio, Kubernetes ๋ฐ OpenShift๋ฅผ ์คํํ๊ณ ์ถ์ผ์ญ๋๊น? ํ
โ
Istio Egress: ๊ธฐ๋ ํ ๊ฐ๊ฒ๋ฅผ ํตํด ์ถ๊ตฌ
Istio๋ฅผ Red Hat OpenShift ๋ฐ Kubernetes์ ํจ๊ป ์ฌ์ฉํ๋ฉด ๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ํจ์ฌ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์์ต๋๋ค. Istio์ ์๋น์ค ๋ฉ์๋ Kubernetes ํฌ๋ ๋ด๋ถ์ ์จ๊ฒจ์ ธ ์์ผ๋ฉฐ ์ฝ๋๋ (๋๋ถ๋ถ) ๊ฒฉ๋ฆฌ๋ ์ํ๋ก ์คํ๋ฉ๋๋ค. ์ฑ๋ฅ, ๋ณ๊ฒฝ ์ฉ์ด์ฑ, ์ถ์ ๋ฑ - ์ฌ์ด๋์นด ์ปจํ ์ด๋๋ฅผ ์ฌ์ฉํ๋ฉด ์ด ๋ชจ๋ ๊ธฐ๋ฅ์ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์์ต๋๋ค. ํ์ง๋ง ๋ง์ดํฌ๋ก์๋น์ค๊ฐ OpenShift-Kubernetes ์์คํ ์ธ๋ถ์ ์๋ ๋ค๋ฅธ ์๋น์ค์ ํต์ ํด์ผ ํ๋ค๋ฉด ์ด๋ป๊ฒ ๋ ๊น์?
์ด๊ฒ์ด ๋ฐ๋ก Istio Egress๊ฐ ๊ตฌ์ถ๋๋ ๊ณณ์ ๋๋ค. ๊ฐ๋จํ ๋งํด์, Kubernetes ํฌ๋ ์์คํ ์ ์ผ๋ถ๊ฐ ์๋ ๋ฆฌ์์ค("์๋น์ค" ์ฝ๊ธฐ)์ ์ก์ธ์คํ ์ ์๊ฒ ํด์ค๋๋ค. ์ถ๊ฐ ๊ตฌ์ฑ์ ์ํํ์ง ์์ผ๋ฉด Istio Egress ํ๊ฒฝ์์ ํธ๋ํฝ์ Pod ํด๋ฌ์คํฐ ๋ด์์๋ง ๋ด๋ถ IP ํ ์ด๋ธ์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ํด๋ฌ์คํฐ ๊ฐ์ ๋ผ์ฐํ ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ฌํ ๋ฒ๋ฐ๊ธฐ๋ ์ธ๋ถ ์๋น์ค์ ์ก์ธ์คํ ํ์๊ฐ ์๋ ํ ํ๋ฅญํ๊ฒ ์๋ํฉ๋๋ค.
์ก์ ์ ์ฌ์ฉํ๋ฉด ์ก์ ๊ท์น์ด๋ IP ์ฃผ์ ๋ฒ์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์์ IP ํ ์ด๋ธ์ ์ฐํํ ์ ์์ต๋๋ค.
httpbin.org/headers์ GET ์์ฒญ์ ๋ณด๋ด๋ Java ํ๋ก๊ทธ๋จ์ด ์๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค.
(httpbin.org๋ ๋๊ฐ๋ ์๋น์ค ์์ฒญ์ ํ ์คํธํ๊ธฐ ์ํ ํธ๋ฆฌํ ๋ฆฌ์์ค์ผ ๋ฟ์ ๋๋ค.)
๋ช
๋ น์ค์ ์
๋ ฅํ๋ฉด curl http://httpbin.org/headers
, ๋ค์ ๋ด์ฉ์ ๋ณผ ์ ์์ต๋๋ค.
๋๋ ๋ธ๋ผ์ฐ์ ์์ ๋์ผํ ์ฃผ์๋ฅผ ์ด ์ ์์ต๋๋ค.
๋ณด์๋ค์ํผ, ํด๋น ์๋น์ค๋ ๋จ์ํ ์ ๋ฌ๋ ํค๋๋ฅผ ๋ฐํํฉ๋๋ค.
์์ ๋์ฒด ์ ๋ฉด์น๋ถ
์ด์ ์์คํ
์ธ๋ถ์ ์๋ ์ด ์๋น์ค์ Java ์ฝ๋๋ฅผ ๊ฐ์ ธ์ Istio๊ฐ ์ค์น๋ ์์ฒด์ ์ผ๋ก ์คํํด ๋ณด๊ฒ ์ต๋๋ค. (์ด ์์
์ ์ง์ ๋ฌธ์ํ์ฌ ์ํํ ์ ์์ต๋๋ค. curl egresshttpbin-istioegress.$(minishift ip).nip.io
, ๊ทธ ํ์ ํ๋ฉด์ ๋ค์์ด ํ์๋ฉ๋๋ค.
์ด๋ฐ, ๋ฌด์จ ์ผ์ด ์ผ์ด๋ฌ๋์? ๋ชจ๋ ๊ฒ์ด ์ ์๋ํ์ต๋๋ค. ์ฐพ์ ์ ์์์ ๋ฌด์์ ์๋ฏธํ๋์? ์ฐ๋ฆฌ๊ฐ ๊ทธ ์ฌ๋์ ์ํด ๊ทธ๋ฌ์ ๋ฟ์ด์ผ curl
.
IP ํ ์ด๋ธ์ ์ ์ฒด ์ธํฐ๋ท์ผ๋ก ํ์ฅ
์ด์ ๋ํด Istio๋ฅผ ๋น๋(๋๋ ๊ฐ์ฌ)ํด์ผ ํฉ๋๋ค. ๊ฒฐ๊ตญ Istio๋ ํ์ง ๋ฐ ๋ผ์ฐํ (๊ทธ๋ฆฌ๊ณ ์์ ์ด์ผ๊ธฐํ ๋ค๋ฅธ ๋ง์ ์ฌํญ)์ ๋ด๋นํ๋ ์ฌ์ด๋์นด ์ปจํ ์ด๋์ผ ๋ฟ์ ๋๋ค. ์ด๋ฌํ ์ด์ ๋ก IP ํ ์ด๋ธ์ ํด๋ฌ์คํฐ ์์คํ ๋ด๋ถ์ ๋ด์ฉ๋ง ์๊ณ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ httpbin.org๋ ์ธ๋ถ์ ์์ผ๋ฏ๋ก ์ ๊ทผ์ด ๋ถ๊ฐ๋ฅํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ด ์์ค ์ฝ๋๋ฅผ ์กฐ๊ธ๋ ๋ณ๊ฒฝํ์ง ์๊ณ Istio Egress๊ฐ ๊ตฌ์ถ๋๋ ๊ณณ์ ๋๋ค.
์๋ Egress ๊ท์น์ Istio๊ฐ ํ์ํ ์๋น์ค(์ด ๊ฒฝ์ฐ httpbin.org)๋ฅผ ๊ฒ์ํ๋๋ก ๊ฐ์ ํฉ๋๋ค(ํ์ํ ๊ฒฝ์ฐ ์ ์ฒด ์ธํฐ๋ท์ ํตํด). ์ด ํ์ผ(egress_httpbin.yml)์์ ๋ณผ ์ ์๋ฏ์ด ์ฌ๊ธฐ์ ๊ธฐ๋ฅ์ ๋งค์ฐ ๊ฐ๋จํฉ๋๋ค.
๋จ์ ๊ฒ์ ์ด ๊ท์น์ ์ ์ฉํ๋ ๊ฒ๋ฟ์
๋๋ค.
istioctl create -f egress_httpbin.yml -n istioegress
๋ค์ ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ์ด๊ทธ๋ ์ค ๊ท์น์ ๋ณผ ์ ์์ต๋๋ค. istioctl get egressrules
:
๋ง์ง๋ง์ผ๋ก ๋ช
๋ น์ ๋ค์ ์คํํฉ๋๋ค. ์ปฌ โ ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ๋ชจ๋ ๊ฒ์ด ์๋ํ๋ ๊ฒ์ ๋ด
๋๋ค:
์ฐ๋ฆฌ๋ ๊ณต๊ฐ์ ์ผ๋ก ์๊ฐํฉ๋๋ค
๋ณด์๋ค์ํผ Istio๋ฅผ ์ฌ์ฉํ๋ฉด ์ธ๋ถ ์ธ๊ณ์์ ์ํธ ์์ฉ์ ๊ตฌ์ฑํ ์ ์์ต๋๋ค. ์ฆ, ์ฌ์ ํ OpenShift ์๋น์ค๋ฅผ ์์ฑํ๊ณ Kubernetes๋ฅผ ํตํด ๊ด๋ฆฌํ ์ ์์ผ๋ฉฐ ํ์์ ๋ฐ๋ผ ํ์ฅ ๋ฐ ์ถ์๋๋ ๋ชจ๋ ๊ฒ์ ํฌ๋์ ์ ์งํ ์ ์์ต๋๋ค. ๋์์ ํ๊ฒฝ ์ธ๋ถ์ ์๋น์ค์๋ ์์ ํ๊ฒ ์ก์ธ์คํ ์ ์์ต๋๋ค. ๊ทธ๋ ์ต๋๋ค. ์ด ๋ชจ๋ ์์ ์ ์ด๋ค ๋ฐฉ์์ผ๋ก๋ ์ฝ๋๋ฅผ ๊ฑด๋๋ฆฌ์ง ์๊ณ ๋ ์ํํ ์ ์๋ค๋ ์ ์ ๋ค์ ํ ๋ฒ ๋ฐ๋ณตํฉ๋๋ค.
์ด๊ฒ์ Istio ์๋ฆฌ์ฆ์ ๋ง์ง๋ง ๊ฒ์๋ฌผ์ด์์ต๋๋ค. ๊ณ์ ์ง์ผ๋ด ์ฃผ์๊ธฐ ๋ฐ๋๋๋ค. ์์ผ๋ก ํฅ๋ฏธ๋ก์ด ์ผ์ด ๋ง์ด ์์ ๊ฒ์
๋๋ค!
์ถ์ฒ : habr.com