[k8s] EgressGateway๊ณผ NAT
๊ณต์ธ IP๊ฐ ์ฌ๋ฌ๊ฐ์ธ ํ๊ฒฝ์์ ์ปจํ
์ด๋์ ์์๋ฐ์ด๋ ํธ๋ํฝ์ ํน์ IP๋ก ๊ณ ์ ํ๊ณ ์ถ์ ์ ์๋ค. ์ฝ๊ฒ ๋งํด์ NAT ํจํด ๋ง์ด๋ค.
์๋ํํฐ์์ ์ ๋ขฐ๊ด๊ณ๋ฅผ ์ํด์์ผ ์๋ ์๊ณ , ํฌ๋กค๋ง ๊ฐ์ ์ด๋ ์ ๊ธฐ์ ์ ์ํด์์ผ ์๋ ์์ง๋ง ์๋ฌดํผ ์ค์ํ๊ฑด ์ด๋ฐ ํ์์ฑ์ด ์กด์ฌํ๋ค๋ ๊ฒ์ด๋ค.
์ฟ ๋ฒ์์ pod๋ค์ด ๋ฐ๊นฅ ์ธํฐ๋ท๊ณผ ํต์ ํ ๋๋, ๋ฐ๋ก ์ค์ ํ์ง ์์๋ค๋ฉด ๊ทธ๋ฅ ํด๋น ๋ ธ๋์ ๊ธฐ๋ณธ ๋ผ์ฐํ ์ ๋ฐ๋ผ์ ์๋ฌต์ ์ผ๋ก ์ฒ๋ฆฌ๊ฐ ๋๋ค. ํ์ง๋ง ์๋ํํฐ ํจํค์ง๋ค์ ์ฌ์ฉํ๋ฉด ์ด Egress ํต์ ๊ฒฝ๋ก๋ฅผ ์๋๋๋ก ์กฐ์ ํ ์ ์๋ค.
์ฌ์ค ์ฟ ๋ฒ๋คํฐ์ค ์ฝ์ด ์์ฒด๋ ์ด Egress์ ๋ํ ํ์ค ์ธํฐํ์ด์ค๋ ๊ฒ์ ์ ๊ณตํ์ง ์๋๋ค. ์ฌ๊ธฐ์ ๋ค๋ฃจ๋ Egress๋ ์๋ํํฐ๋ค์์ ์๋ฌต์ ์ผ๋ก ํฉ์๋ ๋ฆฌ์์ค ํจํด์ ๋งํ๋ค.
์ ํ์ง
Egress Gateway ํจํด์ ์ง์ํ๋ ๊ตฌํ์ฒด๋ก๋ cillium, istio, antrea, calico(enterprise) ๋ฑ์ด ์๋ค.
calico๋ ์ง์์ ํ๊ธด ํ๋๋ฐ, ์คํ์์ค ๋ฒ์ ์์๋ ์ง์ํ์ง ์์์ ํ๊ณ๊ฐ ์๋ค.
istio๋ L3/L4 NAT์ด ์๋๋ผ envoy๋ก ํต๊ณผ์ํค๋ L4/L7 ๋ฉ์ ๊ฒฝ๋ก์ ๊ฐ๊น์์ NAT ์ฌ์ฉํจํด๊ณผ ์์ฃผ ์ ๋ง์ง๋ ์๋๋ค. ์ฑ๋ฅ ์์ค๋ ์๊ณ , ์ ์ด์ ์ด๋ฐ ์ฉ๋๊ฐ ์๋๋ค.
๊ทธ๋์ ์ด ์ค์์๋ cillium์ ๊ฐ์ฅ ๊ถ์ฅํ๋ค. ํ๊ฒฝ๋ ๋ฌด๋ฅด์ต์๊ณ , ์ฑ๋ฅ์ด๋ ์์ ์ฑ๋ ๊ฐ์ฅ ๊ด์ฐฎ์ ํธ์ ์ํ๋ค.
์ฌ๊ธฐ์๋ cillium์ ๊ธฐ์ค์ผ๋ก ์ค๋ช
ํ๋ค.
๋์ ์๋ฆฌ์ tradeoff ์ง์
Egress IP ์นํ์ ๋ณดํต SNAT์ ํตํด ๋์ํ๋ค.
Egress๊ฐ ์ง์ ๋ Pod์์ ์์ฒญ์ ํ๋ ๋ ๋ฆฌ๋ฉด, cillium์ด ๊ทธ ์์ฒญ์ Egress Gateway๋ก ๋๊ธด๋ค.
๊ทธ๋ฌ๋ฉด ์ํ๋ WAN IP์ Egress์ฉ LAN IP๋ก SNAT ์นํ์ ํ๊ณ , ๊ทธ ์ํ๋ก ๋ผ์ฐํฐ๋ก ๋๊ฐ๋ ๊ฒ์ด๋ค. ๊ทธ๋ฌ๋ฉด ๋ผ์ฐํฐ๊ฐ ๊ฑฐ๊ธฐ์ ๋งค์นญ๋๋ WAN -> ๊ณต์ธIP๋ก ๋ฐ๊ฟ์ ๋ด๋ณด๋ด์ค๋ค.
์ฌ๊ธฐ์ Egress Gateway๋ ํน์ ๋ ธ๋ ํ๋๋ฅผ ๊ณ ์ ํด์ ์ธ ์๋ ์๊ณ , 2๋ ์ด์. ํน์ ๋ชจ๋ ์์ปค๋ ธ๋๋ฅผ ๊ฒ์ดํธ์จ์ด๋ก ์ฌ์ฉํ๋ ๊ฒ๋ ๊ฐ๋ฅํ๋ค. ๊ทผ๋ฐ ๊ฒ์ดํธ์จ์ด๋ฅผ ๊ณผ๋ํ๊ฒ ๊ตฌ์ฑํ๋ ๊ฒ๋ ์ด์๋ถ๋ด์ด ํฌ๋ค. ๋ ธ๋๋ง๋ค ๊ณ ์ ํ Egress LAN<>WAN ๋งคํ์ ๊ตฌ์ฑํ๊ณ , ๊ฐ๊ฐ์ LAN์ ์ ๋ถ ์ค์ผ์ค๋งํด๊ฐ๋ฉฐ ์จ์ผํ๊ธฐ ๋๋ฌธ์ด๋ค.
๊ทธ๋์ ์ผ๋ฐ์ ์ธ ๊ท๋ชจ์์๋ Egress Gateway๋ฅผ 2๊ฐ ์ ๋๋ง ๊ตฌ์ฑํ๋ ๊ฒ์ด ์ฑ๋ฅ-๊ฐ์ฉ์ฑ-์ด์ ํธ์์ฑ ์ธก๋ฉด์์ ๊ด์ฐฎ์ ํธ์ด๋ค.
์ฐธ์กฐ
https://kubernetes.io/ko/docs/concepts/services-networking/network-policies/
https://m.blog.naver.com/sssang97/224176429255
https://cilium.io/use-cases/egress-gateway/
https://istio.io/latest/docs/tasks/traffic-management/egress/egress-gateway/
https://tech.kakaopay.com/post/cilium-egress-gateway/