์ธํฐ๋ท์์
์ ๋ XNUMX๊ฐ๊ฐ ๋๋ ๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌ์ถ๋๊ณ ์์ฒ ๊ฐ์ ์ปจํ
์ด๋ํ๋ ์ ํ๋ฆฌ์ผ์ด์
์ ์ง์ํ๋ dotCloud ํ๋ซํผ์ ๋ํด ์ด์ผ๊ธฐํ๊ฒ ์ต๋๋ค. ์ด๋ฅผ ๊ฐ๋ฐํ๊ณ ์ถ์ํ๋ ๊ณผ์ ์์ ์ง๋ฉดํ ๊ณผ์ ์ ์๋น์ค ๋ฉ์๊ฐ ์ด๋ป๊ฒ ๋์์ด ๋ ์ ์๋์ง(๋๋ ๋์์ด ๋ ์ ์๋์ง) ์ค๋ช
ํ๊ฒ ์ต๋๋ค.
๋ทํด๋ผ์ฐ๋์ ์ญ์ฌ
๋๋ dotCloud์ ์ญ์ฌ์ ์ด ํ๋ซํผ์ ์ํคํ
์ฒ ์ ํ์ ๋ํด ๊ธ์ ์ผ์ง๋ง ๋คํธ์ํฌ ๊ณ์ธต์ ๋ํด์๋ ๋ง์ด ์ด์ผ๊ธฐํ์ง ์์์ต๋๋ค. ๋
์์ ๋น ์ ธ๋ค๊ณ ์ถ์ง ์๋ค๋ฉด
dotCloud ํ๋ซํผ์ผ๋ก ํธ๋ํฝ์ด ์ด๋ป๊ฒ ์ ๋ฌ๋์๋์ง ์๋ ค๋๋ฆฌ๊ฒ ์ต๋๋ค. ํน๋ณํ ๋ฉ์ก๊ธฐ ๋๋ฌธ์ด ์๋๋ผ(๋น๋ก ์์คํ ์ด ๊ทธ ๋น์์๋ ์ ์๋ํ์์๋ ๋ถ๊ตฌํ๊ณ ), ์ฃผ๋ก ์ต์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฌด๋ฆฌ ๊ฐ์ ํธ๋ํฝ์ ๋ผ์ฐํ ํ๋ ๋ฐฉ๋ฒ์ด ํ์ํ ๊ฒฝ์ฐ ๊ฒธ์ํ ํ์ด ์งง์ ์๊ฐ ๋ด์ ์ด๋ฌํ ๋์์ธ์ ์ฝ๊ฒ ๊ตฌํํ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋ง์ดํฌ๋ก์๋น์ค ๋๋ ์ฌ๋ฌ ์ ํ๋ฆฌ์ผ์ด์ . ์ด๋ ๊ฒ ํ๋ฉด ์ต์ ์ ๋น๊ตํ ์ ์์ต๋๋ค. ๋ชจ๋ ๊ฒ์ ์ง์ ๊ฐ๋ฐํ๊ฑฐ๋ ๊ธฐ์กด ์๋น์ค ๋ฉ์๋ฅผ ์ฌ์ฉํ๋ฉด ์ด๋ป๊ฒ ๋ ๊น์? ํ์ค ์ ํ์ ์ง์ ๋ง๋ค๊ฑฐ๋ ๊ตฌ์ ํ๋ ๊ฒ์ ๋๋ค.
ํธ์คํ ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ํ ํธ๋ํฝ ๋ผ์ฐํ
dotCloud์ ์ ํ๋ฆฌ์ผ์ด์ ์ HTTP ๋ฐ TCP ์๋ํฌ์ธํธ๋ฅผ ๋ ธ์ถํ ์ ์์ต๋๋ค.
HTTP ์๋ํฌ์ธํธ ๋ก๋ ๋ฐธ๋ฐ์ ํด๋ฌ์คํฐ ๊ตฌ์ฑ์ ๋์ ์ผ๋ก ์ถ๊ฐ๋จ
๋๋ฉ์ธ ์ด๋ฆ์ด dotCloud ๋ก๋ ๋ฐธ๋ฐ์๋ฅผ ๊ฐ๋ฆฌํค๋ ๊ฒฝ์ฐ ํด๋ผ์ด์ธํธ๋ ์ ์ ํ ๋๋ฉ์ธ์ ํตํด HTTP ์๋ํฌ์ธํธ์ ์ฐ๊ฒฐ๋ฉ๋๋ค. ํน๋ณํ ๊ฒ์ ์์ต๋๋ค.
TCP ์๋ํฌ์ธํธ ํฌํธ ๋ฒํธ์ ์ฐ๊ฒฐ๋์ด ํ๊ฒฝ ๋ณ์๋ฅผ ํตํด ํด๋น ์คํ์ ๋ชจ๋ ์ปจํ ์ด๋์ ์ ๋ฌ๋ฉ๋๋ค.
ํด๋ผ์ด์ธํธ๋ ์ ์ ํ ํธ์คํธ ์ด๋ฆ(gateway-X.dotcloud.com ๋ฑ)๊ณผ ํฌํธ ๋ฒํธ๋ฅผ ์ฌ์ฉํ์ฌ TCP ์๋ํฌ์ธํธ์ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค.
์ด ํธ์คํธ ์ด๋ฆ์ "nats" ์๋ฒ ํด๋ฌ์คํฐ๋ก ํ์ธ๋ฉ๋๋ค(๋ค์๊ณผ ๊ด๋ จ ์์).
Kubernetes์ ์ต์ํ๋ค๋ฉด ์๋ง๋ ์๋น์ค๊ฐ ์๊ฐ๋ ๊ฒ์
๋๋ค.
dotCloud ํ๋ซํผ์๋ ์ด์ ์์ํ๋ ์๋น์ค๊ฐ ์์์ต๋๋ค.
๋ชจ๋ ๊ฒ์ด ๋งค์ฐ ๊ฐ๋จํ๊ฒ ๊ตฌ์ฑ๋์์ต๋๋ค. HTTP ๋ฐ TCP ๋ผ์ฐํ ๋คํธ์ํฌ์ ์ด๊ธฐ ๊ตฌํ์ ์๋ง๋ ๊ฐ๊ฐ ์๋ฐฑ ์ค์ Python์ ๋ถ๊ณผํ์ ๊ฒ์ ๋๋ค. ํ๋ซํผ์ด ์ฑ์ฅํ๊ณ ์ถ๊ฐ ์๊ตฌ ์ฌํญ์ด ๋ํ๋๋ฉด์ ๊ฐ์ ๋ ๊ฐ๋จํ(์์งํ๋ค๊ณ ๋งํ๊ณ ์ถ์ต๋๋ค) ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค.
๊ธฐ์กด ์ฝ๋์ ๋ํ ๊ด๋ฒ์ํ ๋ฆฌํฉํ ๋ง์ด ํ์ํ์ง ์์์ต๋๋ค. ํนํ,
์ด๊ฒ์ด ์ต์ ์๋น์ค ๋ฉ์์ ์ด๋ป๊ฒ ๋ค๋ฆ ๋๊น?
์ ํ๋ ์๊ณ. TCP ๋ผ์ฐํ ๋ฉ์์ ๋ํ ์ธก์ ํญ๋ชฉ์ด ์ ํ ์์์ต๋๋ค. HTTP ๋ผ์ฐํ ์ ๊ฒฝ์ฐ ์ดํ ๋ฒ์ ์์๋ ์ค๋ฅ ์ฝ๋ ๋ฐ ์๋ต ์๊ฐ์ด ํฌํจ๋ ์์ธํ HTTP ์ธก์ ํญ๋ชฉ์ ๋์ ํ์ง๋ง ์ต์ ์๋น์ค ๋ฉ์๋ ๋ ๋์๊ฐ Prometheus์ ๊ฐ์ ์ธก์ ํญ๋ชฉ ์์ง ์์คํ ๊ณผ์ ํตํฉ์ ์ ๊ณตํฉ๋๋ค.
๊ฐ์์ฑ์ ์ด์ ๊ด์ (๋ฌธ์ ํด๊ฒฐ์ ๋๊ธฐ ์ํด)๋ฟ๋ง ์๋๋ผ ์๋ก์ด ๊ธฐ๋ฅ์ ์ถ์ํ ๋์๋ ์ค์ํฉ๋๋ค. ์์ ์ ๊ดํ ๊ฒ์
๋๋ค
๋ผ์ฐํ ํจ์จ์ฑ ๋ํ ์ ํ๋์ด ์์ต๋๋ค. dotCloud ๋ผ์ฐํ ๋ฉ์์์ ๋ชจ๋ ํธ๋ํฝ์ ์ ์ฉ ๋ผ์ฐํ ๋ ธ๋ ํด๋ฌ์คํฐ๋ฅผ ํต๊ณผํด์ผ ํ์ต๋๋ค. ์ด๋ ์ ์ฌ์ ์ผ๋ก ์ฌ๋ฌ AZ(๊ฐ์ฉ์ฑ ์์ญ) ๊ฒฝ๊ณ๋ฅผ ๋์ด ๋๊ธฐ ์๊ฐ์ด ํฌ๊ฒ ์ฆ๊ฐํ๋ค๋ ๊ฒ์ ์๋ฏธํ์ต๋๋ค. ํ์ด์ง๋น XNUMX๊ฐ๊ฐ ๋๋ SQL ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ๊ณ ๊ฐ ์ฟผ๋ฆฌ์ ๋ํด SQL ์๋ฒ์ ๋ํ ์๋ก์ด ์ฐ๊ฒฐ์ ์ฌ๋ ๋ฌธ์ ํด๊ฒฐ ์ฝ๋๊ฐ ๊ธฐ์ต๋ฉ๋๋ค. ๋ก์ปฌ๋ก ์คํํ๋ฉด ํ์ด์ง๊ฐ ์ฆ์ ๋ก๋๋์ง๋ง dotCloud์์๋ ๊ฐ TCP ์ฐ๊ฒฐ(๋ฐ ํ์ SQL ์ฟผ๋ฆฌ)์ ์์ญ ๋ฐ๋ฆฌ์ด๊ฐ ๊ฑธ๋ฆฌ๊ธฐ ๋๋ฌธ์ ๋ก๋ํ๋ ๋ฐ ๋ช ์ด๊ฐ ๊ฑธ๋ฆฝ๋๋ค. ์ด ํน๋ณํ ๊ฒฝ์ฐ์๋ ์ง์์ ์ธ ์ฐ๊ฒฐ๋ก ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์์ต๋๋ค.
์ต์ ์๋น์ค ๋ฉ์๋ ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ๋ ์ ์ฒ๋ฆฌํฉ๋๋ค. ์ฐ์ ์ฐ๊ฒฐ์ด ๋ผ์ฐํ
๋์๋์ง ํ์ธํฉ๋๋ค. ์์ค์์. ๋
ผ๋ฆฌ์ ํ๋ฆ์ ๋์ผํฉ๋๋ค. ะบะปะธะตะฝั โ ะผะตั โ ัะตัะฒะธั
ํ์ง๋ง ์ด์ ๋ฉ์๋ ์๊ฒฉ ๋
ธ๋๊ฐ ์๋ ๋ก์ปฌ๋ก ์๋ํ๋ฏ๋ก ์ฐ๊ฒฐ์ด ะบะปะธะตะฝั โ ะผะตั
๋ก์ปฌ์ด๋ฉฐ ๋งค์ฐ ๋น ๋ฆ
๋๋ค(๋ฐ๋ฆฌ์ด๊ฐ ์๋ ๋ง์ดํฌ๋ก์ด).
์ต์ ์๋น์ค ๋ฉ์๋ ๋์ฑ ์ค๋งํธํ ๋ก๋ ๋ฐธ๋ฐ์ฑ ์๊ณ ๋ฆฌ์ฆ๋ ๊ตฌํํฉ๋๋ค. ๋ฐฑ์๋ ์ํ๋ฅผ ๋ชจ๋ํฐ๋งํ๋ฉด ๋ ๋น ๋ฅธ ๋ฐฑ์๋๋ก ๋ ๋ง์ ํธ๋ํฝ์ ๋ณด๋ผ ์ ์์ด ์ ๋ฐ์ ์ธ ์ฑ๋ฅ์ด ํฅ์๋ฉ๋๋ค.
ะะตะทะพะฟะฐัะฝะพััั ๊ทธ๊ฒ๋ ๋ ์ข์. dotCloud ๋ผ์ฐํ ๋ฉ์๋ ์ ์ ์ผ๋ก EC2 Classic์์ ์คํ๋์์ผ๋ฉฐ ํธ๋ํฝ์ ์ํธํํ์ง ์์์ต๋๋ค(๋๊ตฐ๊ฐ EC2 ๋คํธ์ํฌ ํธ๋ํฝ์ ์ค๋ํผ๋ฅผ ์ค์นํ๋ค๋ฉด ์ด๋ฏธ ํฐ ๋ฌธ์ ์ ๋ด์ฐฉํ๋ค๋ ๊ฐ์ ํ์). ์ต์ ์๋น์ค ๋ฉ์๋ ์ํธ TLS ์ธ์ฆ ๋ฐ ํ์ ์ํธํ ๋ฑ์ ํตํด ๋ชจ๋ ํธ๋ํฝ์ ํฌ๋ช ํ๊ฒ ๋ณดํธํฉ๋๋ค.
ํ๋ซํผ ์๋น์ค์ ๋ํ ๋ผ์ฐํ ํธ๋ํฝ
์ข์์, ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ์ ํธ๋ํฝ์ ๋ํด ๋ ผ์ํ์ต๋๋ค. ๊ทธ๋ฐ๋ฐ dotCloud ํ๋ซํผ ์์ฒด๋ ์ด๋ป์ต๋๊น?
ํ๋ซํผ ์์ฒด๋ ๋ค์ํ ๊ธฐ๋ฅ์ ๋ด๋นํ๋ ์ฝ XNUMX๊ฐ์ ๋ง์ดํฌ๋ก์๋น์ค๋ก ๊ตฌ์ฑ๋์์ต๋๋ค. ์ผ๋ถ๋ ๋ค๋ฅธ ์ฌ๋์ ์์ฒญ์ ์๋ฝํ๊ณ ์ผ๋ถ๋ ๋ค๋ฅธ ์๋น์ค์ ์ฐ๊ฒฐํ์ง๋ง ์ฐ๊ฒฐ ์์ฒด๋ฅผ ์๋ฝํ์ง ์์ ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ์์์ต๋๋ค. ์ด๋ค ๊ฒฝ์ฐ๋ ๊ฐ ์๋น์ค๋ ์ฐ๊ฒฐํด์ผ ํ๋ ์ฃผ์์ ๋์ ์ ์์์ผ ํฉ๋๋ค.
๋ง์ ์์ ์์ค ์๋น์ค๋ ์์์ ์ค๋ช ํ ๋ผ์ฐํ ๋ฉ์๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ค์ ๋ก dotCloud์ XNUMX๊ฐ๊ฐ ๋๋ ๋ง์ดํฌ๋ก์๋น์ค ์ค ์๋น์๊ฐ dotCloud ํ๋ซํผ ์์ฒด์ ์ผ๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ผ๋ก ๋ฐฐํฌ๋์์ต๋๋ค. ๊ทธ๋ฌ๋ ์์์ ๋ฎ์ ์์ค ์๋น์ค(ํนํ ์ด ๋ผ์ฐํ ๋ฉ์๋ฅผ ๊ตฌํํ๋ ์๋น์ค)์๋ ๋ ๊ฐ๋จํ๊ณ ์ข ์์ฑ์ด ์ ์ ์๋น์ค๊ฐ ํ์ํ์ต๋๋ค(๊ทธ๋ค์ ์๋ํ๊ธฐ ์ํด ์ค์ค๋ก ์์กดํ ์ ์์๊ธฐ ๋๋ฌธ์ - ์ค๋๋ ๋ญ๊ณ ๊ธฐ์ ๋ฌ๊ฑ ๋ฌธ์ ).
์ด๋ฌํ ๋ฎ์ ์์ค์ ๋ฏธ์
ํฌ๋ฆฌํฐ์ปฌ ์๋น์ค๋ ๋ช ๊ฐ์ ์ฃผ์ ๋
ธ๋์์ ์ง์ ์ปจํ
์ด๋๋ฅผ ์คํํ์ฌ ๋ฐฐํฌ๋์์ต๋๋ค. ์ด ๊ฒฝ์ฐ ๋ง์ปค, ์ค์ผ์ค๋ฌ, ๋ฌ๋ ๋ฑ ํ์ค ํ๋ซํผ ์๋น์ค๋ ์ฌ์ฉ๋์ง ์์์ต๋๋ค. ์ต์ ์ปจํ
์ด๋ ํ๋ซํผ๊ณผ ๋น๊ตํ๊ณ ์ถ๋ค๋ฉด ๋ค์์ ์ฌ์ฉํ์ฌ ์ ์ด ํ๋ฉด์ ์คํํ๋ ๊ฒ๊ณผ ๊ฐ์ต๋๋ค. docker run
์์
์ Kubernetes์ ์์ํ๋ ๋์ ๋
ธ๋์์ ์ง์ ์ํํฉ๋๋ค. ์ปจ์
์ด๋ ๊ฝค ๋น์ทํ๋ค์
์ด๋ฌํ ์๋น์ค๋ ๊ฐ๋จํ๊ณ ์กฐ์ ํ ๋ฐฉ์์ผ๋ก ๋ ธ์ถ๋์์ต๋๋ค. YAML ํ์ผ์๋ ํด๋น ์ด๋ฆ๊ณผ ์ฃผ์๊ฐ ๋์ด๋์ด ์์ต๋๋ค. ๊ฐ ํด๋ผ์ด์ธํธ๋ ๋ฐฐํฌ๋ฅผ ์ํด ์ด YAML ํ์ผ์ ๋ณต์ฌ๋ณธ์ ๊ฐ์ ธ์์ผ ํ์ต๋๋ค.
ํํธ์ผ๋ก๋ Zookeeper์ ๊ฐ์ ์ธ๋ถ ํค/๊ฐ ์ ์ฅ์์ ์ง์์ด ํ์ํ์ง ์๊ธฐ ๋๋ฌธ์ ๋งค์ฐ ์์ ์ ์ ๋๋ค(๊ธฐ์ตํ์ธ์, ๋น์์๋ etcd๋ Consul์ด ์กด์ฌํ์ง ์์์ต๋๋ค). ๋ฐ๋ฉด์ ์๋น์ค ์ด๋์ ์ด๋ ต๊ฒ ๋ง๋ค์์ต๋๋ค. ์ด๋์ด ์ด๋ฃจ์ด์ง ๋๋ง๋ค ๋ชจ๋ ํด๋ผ์ด์ธํธ๋ ์ ๋ฐ์ดํธ๋ YAML ํ์ผ์ ์์ ํ๊ฒ ๋ฉ๋๋ค(๊ทธ๋ฆฌ๊ณ ์ฌ๋ถํ ๋ ์๋ ์์). ๋ณ๋ก ํธํ์ง ์์์!
๊ทธ ํ, ์ฐ๋ฆฌ๋ ๊ฐ ํด๋ผ์ด์ธํธ๊ฐ ๋ก์ปฌ ํ๋ก์ ์๋ฒ์ ์ฐ๊ฒฐ๋๋ ์๋ก์ด ์ฒด๊ณ๋ฅผ ๊ตฌํํ๊ธฐ ์์ํ์ต๋๋ค. ์ฃผ์์ ํฌํธ ๋์ ์๋น์ค์ ํฌํธ ๋ฒํธ๋ง ์๊ณ ๋ค์์ ํตํด ์ฐ๊ฒฐํ๋ฉด ๋ฉ๋๋ค. localhost
. ๋ก์ปฌ ํ๋ก์๋ ์ด ์ฐ๊ฒฐ์ ์ฒ๋ฆฌํ๊ณ ์ด๋ฅผ ์ค์ ์๋ฒ๋ก ์ ๋ฌํฉ๋๋ค. ์ด์ ๋ฐฑ์๋๋ฅผ ๋ค๋ฅธ ๋จธ์ ์ผ๋ก ์ด๋ํ๊ฑฐ๋ ํ์ฅํ ๋ ๋ชจ๋ ํด๋ผ์ด์ธํธ๋ฅผ ์
๋ฐ์ดํธํ๋ ๋์ ์ด๋ฌํ ๋ชจ๋ ๋ก์ปฌ ํ๋ก์๋ง ์
๋ฐ์ดํธํ๋ฉด ๋ฉ๋๋ค. ์ฌ๋ถํ
์ด ๋ ์ด์ ํ์ํ์ง ์์ต๋๋ค.
(๋ํ TLS ์ฐ๊ฒฐ์์ ํธ๋ํฝ์ ์บก์ํํ๊ณ ์์ ์ธก์ ๋ค๋ฅธ ํ๋ก์ ์๋ฒ๋ฅผ ๋ฐฐ์นํ ๋ฟ๋ง ์๋๋ผ ์์ ์๋น์ค์ ์ฐธ์ฌ ์์ด TLS ์ธ์ฆ์๋ฅผ ํ์ธํ ๊ณํ์ด์์ต๋๋ค. localhost
. ์ด์ ๋ํด์๋ ๋์ค์ ์์ธํ ์ค๋ช
ํฉ๋๋ค.)
์ด๋ ๋ค์๊ณผ ๋งค์ฐ ์ ์ฌํฉ๋๋ค.
์ ๋ ๊ฐ์ธ์ ์ผ๋ก SmartStack์ด Istio, Linkerd ๋ฐ Consul Connect์ ๊ฐ์ ์์คํ ์ ์ ์ ์ค ํ๋๋ก ์๊ฐํฉ๋๋ค. ์๋ํ๋ฉด ๋ชจ๋ ๋์ผํ ํจํด์ ๋ฐ๋ฅด๊ธฐ ๋๋ฌธ์ ๋๋ค.
- ๊ฐ ๋ ธ๋์์ ํ๋ก์๋ฅผ ์คํํฉ๋๋ค.
- ํด๋ผ์ด์ธํธ๊ฐ ํ๋ก์์ ์ฐ๊ฒฐ๋ฉ๋๋ค.
- ์ ์ด ์์ญ์ ๋ฐฑ์๋๊ฐ ๋ณ๊ฒฝ๋๋ฉด ํ๋ก์ ๊ตฌ์ฑ์ ์ ๋ฐ์ดํธํฉ๋๋ค.
- ... ์ด์ต!
์๋น์ค ๋ฉ์์ ์ต์ ๊ตฌํ
์ค๋๋ ์ ์ฌํ ๊ทธ๋ฆฌ๋๋ฅผ ๊ตฌํํด์ผ ํ๋ค๋ฉด ์ ์ฌํ ์์น์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ์๋น์ค ์ด๋ฆ์ ๊ณต๊ฐ์ ์ฃผ์์ ๋งคํํ์ฌ ๋ด๋ถ DNS ์์ญ์ ๊ตฌ์ฑํฉ๋๋ค. 127.0.0.0/8
. ๊ทธ๋ฐ ๋ค์ ํด๋ฌ์คํฐ์ ๊ฐ ๋
ธ๋์์ HAProxy๋ฅผ ์คํํ๊ณ ๊ฐ ์๋น์ค ์ฃผ์(ํด๋น ์๋ธ๋ท์)์์ ์ฐ๊ฒฐ์ ์๋ฝํฉ๋๋ค. 127.0.0.0/8
) ์ ์ ํ ๋ฐฑ์๋๋ก ๋ถํ๋ฅผ ๋ฆฌ๋๋ ์
/๊ท ํ ์กฐ์ ํฉ๋๋ค. HAProxy ๊ตฌ์ฑ์ ์ ์ดํ ์ ์์ต๋๋ค.
์ด๊ฒ์ด ๋ฐ๋ก Istio์ ์๋ ๋ฐฉ์์ ๋๋ค! ํ์ง๋ง ๋ช ๊ฐ์ง ์ฐจ์ด์ ์ด ์์ต๋๋ค.
- ์ฉ๋
ํน์ฌ ํ๋ก์ HAProxy ๋์ . - etcd ๋๋ Consul ๋์ Kubernetes API๋ฅผ ํตํด ๋ฐฑ์๋ ๊ตฌ์ฑ์ ์ ์ฅํฉ๋๋ค.
- ์๋น์ค์๋ 127.0.0.0/8 ๋์ ๋ด๋ถ ์๋ธ๋ท(Kubernetes ClusterIP ์ฃผ์)์ ์ฃผ์๊ฐ ํ ๋น๋ฉ๋๋ค.
- ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ์ ์ํธ TLS ์ธ์ฆ์ ์ถ๊ฐํ๋ ์ถ๊ฐ ๊ตฌ์ฑ ์์(Citadel)๊ฐ ์์ต๋๋ค.
- ํ๋ก ์ฐจ๋จ, ๋ถ์ฐ ์ถ์ , ์นด๋๋ฆฌ์ ๋ฐฐํฌ ๋ฑ๊ณผ ๊ฐ์ ์๋ก์ด ๊ธฐ๋ฅ์ ์ง์ํฉ๋๋ค.
๋ช ๊ฐ์ง ์ฐจ์ด์ ์ ๊ฐ๋จํ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
ํน์ฌ ํ๋ก์
Envoy Proxy๋ Lyft(ํ์ ์์ฅ์์ Uber์ ๊ฒฝ์์)๊ฐ ์์ฑํ์ต๋๋ค. ๋ ์ธ]. ๋ค๋ฅธ ํ๋ก์(์: HAProxy, Nginx, Traefik...)์ ์ฌ๋ฌ ๋ฉด์์ ์ ์ฌํ์ง๋ง Lyft๋ ๋ค๋ฅธ ํ๋ก์์ ์๋ ๊ธฐ๋ฅ์ด ํ์ํ๊ธฐ ๋๋ฌธ์ ํ๋ก์๋ฅผ ์์ฑํ์ผ๋ฉฐ ๊ธฐ์กด ํ๋ก์๋ฅผ ํ์ฅํ๋ ๊ฒ๋ณด๋ค ์ ํ๋ก์๋ฅผ ๋ง๋๋ ๊ฒ์ด ๋ ๋๋ํด ๋ณด์์ต๋๋ค.
Envoy๋ ๋จ๋ ์ผ๋ก ์ฌ์ฉ๋ ์ ์์ต๋๋ค. ๋ค๋ฅธ ์๋น์ค์ ์ฐ๊ฒฐํด์ผ ํ๋ ํน์ ์๋น์ค๊ฐ ์๋ ๊ฒฝ์ฐ ์ด๋ฅผ Envoy์ ์ฐ๊ฒฐํ๋๋ก ๊ตฌ์ฑํ ๋ค์ ๋ค๋ฅธ ์๋น์ค์ ์์น๋ก Envoy๋ฅผ ๋์ ์ผ๋ก ๊ตฌ์ฑ ๋ฐ ์ฌ๊ตฌ์ฑํ๋ ๋์์ ๊ฐ์์ฑ๊ณผ ๊ฐ์ ๋ค์ํ ์ถ๊ฐ ๊ธฐ๋ฅ์ ์ป์ ์ ์์ต๋๋ค. ์ฌ์ฉ์ ์ ์ ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ ํธ์ถ ์ถ์ ์ ์ฝ๋์ ์ฝ์ ํ๋ ๋์ Envoy๋ก ํธ๋ํฝ์ ๋ณด๋ด๊ณ Envoy๊ฐ ์ธก์ ํญ๋ชฉ์ ์์งํฉ๋๋ค.
๊ทธ๋ฌ๋ Envoy๋ ๋ค์๊ณผ ๊ฐ์ ์์ ๋ ์ํํ ์ ์์ต๋๋ค. ๋ฐ์ดํฐ ํ๋ฉด (๋ฐ์ดํฐ ํ๋ฉด) ์๋น์ค ๋ฉ์์ฉ. ์ด๋ ์ด์ Envoy๊ฐ ์ด ์๋น์ค ๋ฉ์์ ๋ํด ๊ตฌ์ฑ๋์์์ ์๋ฏธํฉ๋๋ค. ์ ์ด ํ๋ฉด (์ ์ด ํ๋ฉด).
์ ์ด ์์ญ
์ ์ด ์์ญ์ ๊ฒฝ์ฐ Istio๋ Kubernetes API๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ด๋ confd๋ฅผ ์ฌ์ฉํ๋ ๊ฒ๊ณผ ํฌ๊ฒ ๋ค๋ฅด์ง ์์ต๋๋ค., ์ด๋ etcd ๋๋ Consul์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ ์ ์ฅ์์ ํค ์ธํธ๋ฅผ ๋ด ๋๋ค. Istio๋ Kubernetes API๋ฅผ ์ฌ์ฉํ์ฌ Kubernetes ๋ฆฌ์์ค ์ธํธ๋ฅผ ๋ด ๋๋ค.
์ด ์ฌ์ด์: ๊ฐ์ธ์ ์ผ๋ก ์ด ๋ด์ฉ์ด ์ ์ฉํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
Kubernetes API ์๋ฒ๋ API ๋ฆฌ์์ค์ ๋ํ ์ ์ฅ, ๋ฒ์ ๊ด๋ฆฌ, ๊ฒ์ฆ, ์ ๋ฐ์ดํธ ๋ฐ ์๋ฏธ ์ฒด๊ณ๋ฅผ ์ ๊ณตํ๋ "๋ฉ์ฒญํ ์๋ฒ"์ ๋๋ค.
Istio๋ Kubernetes์ ํจ๊ป ์๋ํ๋๋ก ์ค๊ณ๋์์ต๋๋ค. Kubernetes ์ธ๋ถ์์ ์ฌ์ฉํ๋ ค๋ฉด Kubernetes API ์๋ฒ(๋ฐ etcd ๋์ฐ๋ฏธ ์๋น์ค)์ ์ธ์คํด์ค๋ฅผ ์คํํด์ผ ํฉ๋๋ค.
์๋น์ค ์ฃผ์
Istio๋ Kubernetes๊ฐ ํ ๋นํ๋ ClusterIP ์ฃผ์๋ฅผ ์ฌ์ฉํ๋ฏ๋ก Istio ์๋น์ค๋ ๋ด๋ถ ์ฃผ์(๋ฒ์์ ์ํ์ง ์์)๋ฅผ ๋ฐ์ต๋๋ค. 127.0.0.0/8
).
Istio๊ฐ ์๋ Kubernetes ํด๋ฌ์คํฐ์ ํน์ ์๋น์ค์ ๋ํ ClusterIP ์ฃผ์์ ๋ํ ํธ๋ํฝ์ kube-proxy์ ์ํด ๊ฐ๋ก์ฑ์ด ํด๋น ํ๋ก์์ ๋ฐฑ์๋๋ก ์ ์ก๋ฉ๋๋ค. ๊ธฐ์ ์ ์ธ ์ธ๋ถ ์ฌํญ์ ๊ด์ฌ์ด ์๋ค๋ฉด kube-proxy๋ iptables ๊ท์น(๋๋ ๊ตฌ์ฑ ๋ฐฉ๋ฒ์ ๋ฐ๋ผ IPVS ๋ก๋ ๋ฐธ๋ฐ์)์ ์ค์ ํ์ฌ ClusterIP ์ฃผ์๋ก ๊ฐ๋ ์ฐ๊ฒฐ์ ๋์ IP ์ฃผ์๋ฅผ ๋ค์ ์๋๋ค.
Istio๊ฐ Kubernetes ํด๋ฌ์คํฐ์ ์ค์น๋๋ฉด ์ปจํ
์ด๋๋ฅผ ๋์
ํ์ฌ ํน์ ์๋น์ ๋๋ ์ ์ฒด ๋ค์์คํ์ด์ค์ ๋ํด ๋ช
์์ ์ผ๋ก ํ์ฑํ๋ ๋๊น์ง ์๋ฌด ๊ฒ๋ ๋ณ๊ฒฝ๋์ง ์์ต๋๋ค. sidecar
์ฌ์ฉ์ ์ ์ ํฌ๋์ ๋ฃ์ต๋๋ค. ์ด ์ปจํ
์ด๋๋ Envoy ์ธ์คํด์ค๋ฅผ ๊ฐ๋ํ๊ณ ๋ค๋ฅธ ์๋น์ค๋ก ์ด๋ํ๋ ํธ๋ํฝ์ ๊ฐ๋ก์ฑ์ ํด๋น ํธ๋ํฝ์ Envoy๋ก ๋ฆฌ๋๋ ์
ํ๋ iptables ๊ท์น ์งํฉ์ ์ค์ ํฉ๋๋ค.
Kubernetes DNS์ ํตํฉ๋๋ฉด ์ด๋ ์ฐ๋ฆฌ ์ฝ๋๊ฐ ์๋น์ค ์ด๋ฆ์ผ๋ก ์ฐ๊ฒฐ๋ ์ ์๊ณ ๋ชจ๋ ๊ฒ์ด "์ ๋๋ก ์๋"ํ ์ ์์์ ์๋ฏธํฉ๋๋ค. ์ฆ, ์ฐ๋ฆฌ ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ์ ์ฟผ๋ฆฌ๋ฅผ ๋ฐํํฉ๋๋ค. http://api/v1/users/4242
๋ค์ api
์์ฒญ ํด๊ฒฐ 10.97.105.48
, iptables ๊ท์น์ 10.97.105.48์ ์ฐ๊ฒฐ์ ๊ฐ๋ก์ฑ์ ๋ก์ปฌ Envoy ํ๋ก์๋ก ์ ๋ฌํ๊ณ ํด๋น ๋ก์ปฌ ํ๋ก์๋ ์์ฒญ์ ์ค์ ๋ฐฑ์๋ API๋ก ์ ๋ฌํฉ๋๋ค. ํด!
์ถ๊ฐ ํ๋ฆด
Istio๋ ๋ํ mTLS(์ํธ TLS)๋ฅผ ํตํด ์๋ํฌ์๋ ์ํธํ ๋ฐ ์ธ์ฆ์ ์ ๊ณตํฉ๋๋ค. ๋ผ๋ ๊ตฌ์ฑ ์์ ์ฑ.
๊ตฌ์ฑํ๋ ์์ด์ ๋ฏน์Envoy๊ฐ ์์ฒญํ ์ ์๋ ๊ฐ ํค๋, ๋ฐฑ์๋ ๋ก๋ ๋ฑ๊ณผ ๊ฐ์ ๋ค์ํ ์์ธ์ ๋ฐ๋ผ ํด๋น ์์ฒญ์ ๋ํด ํน๋ณํ ๊ฒฐ์ ์ ๋ด๋ฆฌ๋๋ก ์์ฒญํฉ๋๋ค. (๊ฑฑ์ ํ์ง ๋ง์ธ์. Mixer๋ฅผ ๊ณ์ ์คํํ๋ ๋ฐฉ๋ฒ์ ๋ค์ํ๋ฉฐ, ์ถฉ๋์ด ๋ฐ์ํ๋๋ผ๋ Envoy๋ ๊ณ์ ์๋ํฉ๋๋ค. ํ๋ก์๋ก ์ฌ์ฉ ๊ฐ๋ฅ).
๋ฌผ๋ก ๊ฐ์์ฑ์ ๋ํด์๋ ์ธ๊ธํ์ต๋๋ค. Envoy๋ ๋ถ์ฐ ์ถ์ ์ ์ ๊ณตํ๋ ๋์์ ์์ฒญ๋ ์์ ์ธก์ ํญ๋ชฉ์ ์์งํฉ๋๋ค. ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ ์ฒ์์ ๋จ์ผ API ์์ฒญ์ด ๋ง์ดํฌ๋ก์๋น์ค A, B, C ๋ฐ D๋ฅผ ํต๊ณผํด์ผ ํ๋ ๊ฒฝ์ฐ ๋ก๊ทธ์ธ ์ ๋ถ์ฐ ์ถ์ ์ ์์ฒญ์ ๊ณ ์ ์๋ณ์๋ฅผ ์ถ๊ฐํ๊ณ ํ์ ์์ฒญ์ ํตํด ์ด๋ฌํ ๋ชจ๋ ๋ง์ดํฌ๋ก์๋น์ค์ ๋ํ ์ด ์๋ณ์๋ฅผ ์ ์ฅํฉ๋๋ค. ์บก์ฒํ ๋ชจ๋ ๊ด๋ จ ํตํ, ์ง์ฐ ๋ฑ
๊ฐ๋ฐ ๋๋ ๊ตฌ๋งค
Istio๋ ๋ณต์กํ๋ค๋ ํํ์ ๊ฐ๊ณ ์์ต๋๋ค. ๋์กฐ์ ์ผ๋ก, ์ด ๊ฒ์๋ฌผ์ ์์ ๋ถ๋ถ์์ ์ค๋ช ํ ๋ผ์ฐํ ๋ฉ์๋ฅผ ๊ตฌ์ถํ๋ ๊ฒ์ ๊ธฐ์กด ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋น๊ต์ ๊ฐ๋จํฉ๋๋ค. ๊ทธ๋ ๋ค๋ฉด ๋์ ์์ฒด ์๋น์ค ๋ฉ์๋ฅผ ๋ง๋๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์ผ๊น์?
์ ๋นํ ์๊ตฌ์ฌํญ(๊ฐ์์ฑ, ํ๋ก ์ฐจ๋จ๊ธฐ ๋ฐ ๊ธฐํ ์ธ๋ถ ์ฌํญ์ด ํ์ํ์ง ์์)์ด ์๋ ๊ฒฝ์ฐ ์์ฒด ๋๊ตฌ๋ฅผ ๊ฐ๋ฐํด์ผ ํ๋ค๋ ์๊ฐ์ด ๋ญ๋๋ค. ๊ทธ๋ฌ๋ Kubernetes๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ Kubernetes๊ฐ ์ด๋ฏธ ์๋น์ค ๊ฒ์ ๋ฐ ๋ก๋ ๋ฐธ๋ฐ์ฑ์ ์ํ ๊ธฐ๋ณธ ๋๊ตฌ๋ฅผ ์ ๊ณตํ๋ฏ๋ก ํ์ํ์ง ์์ ์๋ ์์ต๋๋ค.
๊ทธ๋ฌ๋ ๊ณ ๊ธ ์๊ตฌ ์ฌํญ์ด ์๋ ๊ฒฝ์ฐ ์๋น์ค ๋ฉ์๋ฅผ "๊ตฌ๋งค"ํ๋ ๊ฒ์ด ํจ์ฌ ๋ ๋์ ์ ํ์ธ ๊ฒ ๊ฐ์ต๋๋ค. (Istio๋ ์คํ ์์ค์ด๊ธฐ ๋๋ฌธ์ ํญ์ "๊ตฌ๋งค"ํ๋ ๊ฒ์ ์๋์ง๋ง ์ด๋ฅผ ์ดํดํ๊ณ ๋ฐฐํฌํ๊ณ ๊ด๋ฆฌํ๋ ค๋ฉด ์ฌ์ ํ ์์ง๋์ด๋ง ์๊ฐ์ ํฌ์ํด์ผ ํฉ๋๋ค.)
Istio, Linkerd ๋๋ Consul Connect๋ฅผ ์ ํํด์ผ ํฉ๋๊น?
์ง๊ธ๊น์ง ์ฐ๋ฆฌ๋ Istio์ ๋ํด์๋ง ์ด์ผ๊ธฐํ์ง๋ง ์ด๊ฒ์ด ์ ์ผํ ์๋น์ค ๋ฉ์๋ ์๋๋๋ค. ์ธ๊ธฐ ์๋ ๋์ -
๋ฌด์์ ์ ํ?
์์งํ ๋ชจ๋ฅด๊ฒ ์ด์. ํ์ฌ ๋๋ ๋ด ์์ ์ด ์ด ์ง๋ฌธ์ ๋ตํ ๋งํผ ์ ๋ฅํ๋ค๊ณ ์๊ฐํ์ง ์์ต๋๋ค. ๋ช ๊ฐ์ง๊ฐ ์์ต๋๋ค
ํ ๊ฐ์ง ์ ๋งํ ์ ๊ทผ ๋ฐฉ์์ ๋ค์๊ณผ ๊ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์
๋๋ค.
๋๋ Istio์ SuperGloo๋ฅผ ์กฐ๊ธ ๋ค๋ฃจ์๊ณ ๋ค์ ๊ธฐ์ฌ์์๋ SuperGloo๋ฅผ ์ฌ์ฉํ์ฌ ๊ธฐ์กด ํด๋ฌ์คํฐ์ Istio ๋๋ Linkerd๋ฅผ ์ถ๊ฐํ๋ ๋ฐฉ๋ฒ๊ณผ ํ์๊ฐ ์์
์ ์ํํ๋ ๋ฐฉ๋ฒ, ์ฆ ๊ตฌ์ฑ์ ๋ฎ์ด์ฐ์ง ์๊ณ ํ ์๋น์ค ๋ฉ์๋ฅผ ๋ค๋ฅธ ์๋น์ค ๋ฉ์์ ์ ์ฉํ ์ ์์ต๋๋ค.
์ถ์ฒ : habr.com