์ ์ด๋ฆ์ Viktor Yagofarov์ด๊ณ DomClick์์ Ops(์ด์) ํ์ ๊ธฐ์ ๊ฐ๋ฐ ๊ด๋ฆฌ์๋ก Kubernetes ํ๋ซํผ์ ๊ฐ๋ฐํ๊ณ ์์ต๋๋ค. ์ ๋ Dev <-> Ops ํ๋ก์ธ์ค์ ๊ตฌ์กฐ, ๋ฌ์์์์ ๊ฐ์ฅ ํฐ k8s ํด๋ฌ์คํฐ ์ค ํ๋๋ฅผ ์ด์ํ๋ ๊ธฐ๋ฅ, ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ ํ์ด ์ ์ฉํ๋ DevOps/SRE ๋ฐฉ์์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ์ถ์ต๋๋ค.
์์ ํ
์ด์ํ์ ํ์ฌ 15๋ช ์ผ๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค. ๊ทธ ์ค XNUMX๋ช ์ ์ฌ๋ฌด์ค์ ๋ด๋นํ๊ณ , XNUMX๋ช ์ ๋ค๋ฅธ ์๊ฐ๋์์ ๊ทผ๋ฌดํ๋ฉฐ ๋ฐค์๋ ๊ทผ๋ฌด ๊ฐ๋ฅํฉ๋๋ค. ๋ฐ๋ผ์ Ops์ ๋๊ตฐ๊ฐ๋ ํญ์ ๋ชจ๋ํฐ ์์ ์์ ๋ณต์กํ ์ฌ๊ณ ์ ๋์ํ ์ค๋น๊ฐ ๋์ด ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ์ ์ ์ ๋ณด์กดํ๊ณ ๋ชจ๋ ์ฌ๋์๊ฒ ์ถฉ๋ถํ ์๋ฉด์ ์ทจํ๊ณ ์ปดํจํฐ๋ฟ๋ง ์๋๋ผ ์ฌ๊ฐ ์๊ฐ์ ๋ณด๋ผ ์์๋ ์ผ๊ฐ ๊ทผ๋ฌด๊ฐ ์์ต๋๋ค.
๋คํธ์ํฌ ๋ด๋น์, DBA, ELK ์คํ ์ ๋ฌธ๊ฐ, Kubernetes ๊ด๋ฆฌ์/๊ฐ๋ฐ์, ๋ชจ๋ํฐ๋ง, ๊ฐ์ํ, ํ๋์จ์ด ์ ๋ฌธ๊ฐ ๋ฑ ๋ชจ๋ ์ฌ๋์ ์๋ก ๋ค๋ฅธ ์ญ๋์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ํ ๊ฐ์ง๊ฐ ๋ชจ๋๋ฅผ ํ๋๋ก ๋ฌถ์ต๋๋ค. ๋๊ตฌ๋ ์ด๋ ์ ๋ ์ฐ๋ฆฌ ์ค ๋๊ตฌ๋ผ๋ ๋์ฒดํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด k8s ํด๋ฌ์คํฐ์ ์ ๋
ธ๋ ๋์
, PostgreSQL ์
๋ฐ์ดํธ, CI/CD + Ansible ํ์ดํ๋ผ์ธ ์์ฑ, Python/Bash/Go์์ ์๋ํ, ํ๋์จ์ด ์ฐ๊ฒฐ ๋ฑ์ด ์์ต๋๋ค. ๋ฐ์ดํฐ ์ผํฐ. ์ด๋ค ์์ญ์์๋ ๊ฐ๋ ฅํ ์ญ๋์ด ์๋ค๊ณ ํด์ ํ๋ ๋ฐฉํฅ์ ๋ฐ๊พธ๊ณ ๋ค๋ฅธ ์์ญ์์ ๊ฐ์ ์ ์์ํ๋ ๊ฒ์ ๋ฐฉํดํ์ง๋ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ์ ๋ PostgreSQL ์ ๋ฌธ๊ฐ๋ก ํ์ฌ์ ์
์ฌํ๋๋ฐ ํ์ฌ ์ ๊ฐ ์ฃผ๋ก ๋ด๋นํ๋ ๋ถ์ผ๋ Kubernetes ํด๋ฌ์คํฐ์
๋๋ค. ํ์์๋ ์ด๋ค ํค๋ ํ์ํ๋ฉฐ ๋ ๋ฒ๋ฆฌ์ง ๊ฐ๊ฐ์ด ๋งค์ฐ ๋ฐ๋ฌ๋์ด ์์ต๋๋ค.
๊ทธ๊ฑด ๊ทธ๋ ๊ณ , ์ฐ๋ฆฌ๋ ์ฌ๋ฅ ์ค์ ๋๋ค. ํ๋ณด์์ ๋ํ ์๊ตฌ ์ฌํญ์ ๋งค์ฐ ํ์ค์ ์ ๋๋ค. ๊ฐ์ธ์ ์ผ๋ก ์ฌ๋์ด ํ์ ์ ์ํ๊ณ ๊ฐ๋ฑ์ด ์์ผ๋ฉฐ ์์ ์ ๊ด์ ์ ๋ฐฉ์ดํ๋ ๋ฐฉ๋ฒ์ ์๊ณ ๋ฐ์ ํ๊ธฐ๋ฅผ ์ํ๋ฉฐ ์๋ก์ด ์ผ์ ๋๋ ค์ํ์ง ์๊ณ ์์ด๋์ด๋ฅผ ์ ๊ณตํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ๋ํ, ์คํฌ๋ฆฝํ ์ธ์ด์ ๋ํ ํ๋ก๊ทธ๋๋ฐ ๋ฅ๋ ฅ, Linux ๋ฐ ์์ด์ ๋ํ ๊ธฐ์ด ์ง์์ด ํ์ํฉ๋๋ค. fakap์ด ๋ฐ์ํ ๊ฒฝ์ฐ 10๋ถ์ด ์๋ 10์ด ์์ ๋ฌธ์ ์ ๋ํ ํด๊ฒฐ์ฑ ์ Google์ ๊ฒ์ํ ์ ์๋๋ก ์์ด๊ฐ ํ์ํฉ๋๋ค. ์ด์ Linux์ ๋ํ ๊น์ ์ง์์ ๊ฐ์ถ ์ ๋ฌธ๊ฐ๋ฅผ ์ฐพ๋ ๊ฒ์ด ๋งค์ฐ ์ด๋ ต์ต๋๋ค. ์ฐ์ค์ด ์ผ์ด์ง๋ง ํ๋ณด์ XNUMX๋ช ์ค XNUMX๋ช ์ "๋ก๋ ํ๊ท ์ด๋ ๋ฌด์์ ๋๊น?"๋ผ๋ ์ง๋ฌธ์ ๋๋ตํ ์ ์์ต๋๋ค. ๋ฌด์์ผ๋ก ๋ง๋ค์ด์ก๋์?โ, โC ํ๋ก๊ทธ๋จ์์ ์ฝ์ด ๋คํ๋ฅผ ์กฐ๋ฆฝํ๋ ๋ฐฉ๋ฒโ์ด๋ผ๋ ์ง๋ฌธ์ ์ํผ๋งจ์ด๋ ๊ณต๋ฃก์ ์ธ๊ณ์์ ๋์ค๋ ์ง๋ฌธ์ผ๋ก ๊ฐ์ฃผ๋ฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ฌ๋๋ค์ ๋ค๋ฅธ ์ญ๋์ ๊ณ ๋๋ก ๋ฐ๋ฌ์์ผฐ์ง๋ง ์ฐ๋ฆฌ๋ Linux๋ฅผ ๊ฐ๋ฅด์น ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ์ฐ๋ฆฌ๋ ์ด๊ฒ์ ์ฐธ์์ผ ํฉ๋๋ค. "ํ๋ ํด๋ผ์ฐ๋ ์ธ๊ณ์์ DevOps ์์ง๋์ด๊ฐ ์ด ๋ชจ๋ ๊ฒ์ ์์์ผ ํ๋ ์ด์ "๋ผ๋ ์ง๋ฌธ์ ๋ํ ๋๋ต์ ๊ธฐ์ฌ ๋ฒ์์์ ๋ฒ์ด๋์ผ ํ์ง๋ง ์ธ ๋จ์ด๋ก ๋งํ๋ฉด ์ด ๋ชจ๋ ๊ฒ์ด ํ์ํฉ๋๋ค.
ํ ๋๊ตฌ
๋๊ตฌ ํ์ ์๋ํ์์ ์ค์ํ ์ญํ ์ ํฉ๋๋ค. ๊ทธ๋ค์ ์ฃผ์ ์๋ฌด๋ ๊ฐ๋ฐ์๋ฅผ ์ํ ํธ๋ฆฌํ ๊ทธ๋ํฝ ๋ฐ CLI ๋๊ตฌ๋ฅผ ๋ง๋๋ ๊ฒ์ ๋๋ค. ์๋ฅผ ๋ค์ด, ๋ด๋ถ ๊ฐ๋ฐ Confer๋ฅผ ์ฌ์ฉํ๋ฉด ๋ช ๋ฒ์ ๋ง์ฐ์ค ํด๋ฆญ๋ง์ผ๋ก ๋ฌธ์ ๊ทธ๋๋ก Kubernetes์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋กค์์ํ๊ณ ๋ฆฌ์์ค, ์ ์ฅ์์ ํค ๋ฑ์ ๊ตฌ์ฑํ ์ ์์ต๋๋ค. ์ด์ ์๋ Jenkins + Helm 2๊ฐ ์์์ง๋ง ๋ณต์ฌ-๋ถ์ฌ๋ฃ๊ธฐ๋ฅผ ์ ๊ฑฐํ๊ณ ์ํํธ์จ์ด ์๋ช ์ฃผ๊ธฐ์ ํต์ผ์ฑ์ ๊ฐ์ ธ์ค๊ธฐ ์ํด ์์ฒด ๋๊ตฌ๋ฅผ ๊ฐ๋ฐํด์ผ ํ์ต๋๋ค.
Ops ํ์ ๊ฐ๋ฐ์๋ฅผ ์ํ ํ์ดํ๋ผ์ธ์ ์์ฑํ์ง ์์ง๋ง ์์ฑ ์ ๋ชจ๋ ๋ฌธ์ ์ ๋ํด ์กฐ์ธ์ ์ ๊ณตํ ์ ์์ต๋๋ค(์ผ๋ถ ์ฌ๋๋ค์ ์ฌ์ ํ โโHelm 3๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค).
๊ฐ๋ฐ์
DevOps์ ๊ฒฝ์ฐ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๊ฐ๋ฐํ์ ์ฝ๋๋ฅผ ์์ฑํ๊ณ Confer to dev -> qa/stage -> prod๋ฅผ ํตํด ์ด๋ฅผ ์ถ์ํฉ๋๋ค. ์ฝ๋๊ฐ ๋๋ ค์ง์ง ์๊ณ ์ค๋ฅ๊ฐ ์๋์ง ํ์ธํ๋ ์ฑ ์์ Dev ๋ฐ Ops ํ์ ์์ต๋๋ค. ๋ฎ์๋ Opsํ ๋น์ง์๊ฐ ๋จผ์ ์ ํ๋ฆฌ์ผ์ด์ ์ผ๋ก ์ฌ๊ฑด์ ๋์ํด์ผ ํ๊ณ , ์ ๋ ๊ณผ ๋ฐค์๋ ๋น์ง ๊ด๋ฆฌ์(Ops)๊ฐ ์๋ฉด ๋น์ง ๊ฐ๋ฐ์๋ฅผ ๊นจ์์ผ ํ๋ค. ๋ฌธ์ ๊ฐ ์ธํ๋ผ์ ์์ง ์์์ง ํ์ธํ์ญ์์ค. ๋ชจ๋ํฐ๋ง์ ๋ชจ๋ ์งํ์ ๊ฒฝ๊ณ ๋ ์๋ ๋๋ ๋ฐ์๋์ผ๋ก ๋ํ๋ฉ๋๋ค.
Ops์ ์ฑ ์ ์์ญ์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ํ๋ก๋์ ์ ์ถ์๋๋ ์๊ฐ๋ถํฐ ์์๋์ง๋ง Dev์ ์ฑ ์์ ๊ฑฐ๊ธฐ์ ๋๋์ง ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ๋์ผํ ์์ ์ ์ํํ๋ฉฐ ๋์ผํ ๋ณดํธ์ ์์ต๋๋ค.
๊ฐ๋ฐ์๋ ๊ด๋ฆฌ ๋ง์ดํฌ๋ก์๋น์ค(์: Go ๋ฐฑ์๋ + HTML5)๋ฅผ ์์ฑํ๋ ๋ฐ ๋์์ด ํ์ํ ๊ฒฝ์ฐ ๊ด๋ฆฌ์์๊ฒ ์กฐ์ธํ๊ณ , ๊ด๋ฆฌ์๋ ์ธํ๋ผ ๋ฌธ์ ๋๋ k8s์ ๊ด๋ จ๋ ๋ฌธ์ ์ ๋ํด ๊ฐ๋ฐ์์๊ฒ ์กฐ์ธํฉ๋๋ค.
๊ทธ๊ฑด ๊ทธ๋ ๊ณ , ์ฐ๋ฆฌ๋ ๋ชจ๋๋ฆฌ์ค๊ฐ ์ ํ ์๊ณ ๋ง์ดํฌ๋ก์๋น์ค๋ง ์์ต๋๋ค. ์ซ์๋ก ์ธก์ ํ๋ฉด ์ง๊ธ๊น์ง prod k900s ํด๋ฌ์คํฐ์์ ๊ทธ ์๋ 1000์์ 8 ์ฌ์ด์์ ๋ณ๋ํฉ๋๋ค. ๋ฐฐํฌ. Pod ์๋ 1700~2000๊ฐ ์ฌ์ด์์ ๋ณ๋ํฉ๋๋ค. ํ์ฌ prod ํด๋ฌ์คํฐ์๋ ์ฝ 2000๊ฐ์ Pod๊ฐ ์์ต๋๋ค.
๋ถํ์ํ ๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ๋ชจ๋ํฐ๋งํ๊ณ ๋ฐ์๋์ผ๋ก ์๋ผ๋ด๊ธฐ ๋๋ฌธ์ ์ ํํ ์์น๋ฅผ ๋ง์๋๋ฆด ์๋ ์์ต๋๋ค. K8์ ๋ถํ์ํ ์ํฐํฐ๋ฅผ ์ถ์ ํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
์์ ๊ด๋ฆฌ
๋ชจ๋ํฐ๋ง
์ฒด๊ณ์ ์ด๊ณ ์ ์ตํ ๋ชจ๋ํฐ๋ง์ ๋๊ท๋ชจ ํด๋ฌ์คํฐ ์ด์์ ์ด์์ด ๋ฉ๋๋ค. ์ฐ๋ฆฌ๋ ์์ง ๋ชจ๋ ๋ชจ๋ํฐ๋ง ์๊ตฌ ์ฌํญ์ 100% ์ถฉ์กฑํ ์ ์๋ ๋ฒ์ฉ ์๋ฃจ์ ์ ์ฐพ์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ ์ด ํ๊ฒฝ์์ ์ ๊ธฐ์ ์ผ๋ก ๋ค์ํ ๋ง์ถคํ ์๋ฃจ์ ์ ๋ง๋ญ๋๋ค.
- ์ ๋น์ธ . ์ฃผ๋ก ์ธํ๋ผ์ ์ ๋ฐ์ ์ธ ์ํ๋ฅผ ์ถ์ ํ๊ธฐ ์ํ ์ค๋๋ ๋ชจ๋ํฐ๋ง์
๋๋ค. ์ฒ๋ฆฌ, ๋ฉ๋ชจ๋ฆฌ, ๋์คํฌ, ๋คํธ์ํฌ ๋ฑ์ ์ธก๋ฉด์์ ๋
ธ๋๊ฐ ์ข
๋ฃ๋๋ ์๊ธฐ๋ฅผ ์๋ ค์ค๋๋ค. ์ด์์ฐ์ ์ธ ๊ฒ์ ์๋์ง๋ง ๋ณ๋์ ์์ด์ ํธ DaemonSet๋ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ํด๋ฌ์คํฐ์ DNS ์ํ๋ฅผ ๋ชจ๋ํฐ๋งํฉ๋๋ค. ์ด๋ฆฌ์์ coredns ํฌ๋๋ฅผ ์ฐพ๊ณ ์ธ๋ถ ํธ์คํธ์ ๊ฐ์ฉ์ฑ์ ํ์ธํฉ๋๋ค. ์ ์ด๊ฒ์ ๊ท์ฐฎ๊ฒ ํ๋ ๊ฒ์ฒ๋ผ ๋ณด์ด์ง๋ง ํธ๋ํฝ์ด ๋ง์ ๊ฒฝ์ฐ ์ด ๊ตฌ์ฑ ์์๋ ์ฌ๊ฐํ ์คํจ ์ง์ ์
๋๋ค. ์ด๋ฏธ ๋๋
์ค๋ช , ํด๋ฌ์คํฐ์์ DNS ์ฑ๋ฅ์ผ๋ก ์ธํด ์ด๋ ค์์ ๊ฒช์ ๋ฐฉ๋ฒ. - ํ๋ก๋ฉํ ์ฐ์ค ์คํผ๋ ์ดํฐ. ๋ค์ํ ๋ด๋ณด๋ด๊ธฐ ์ธํธ๋ ํด๋ฌ์คํฐ์ ๋ชจ๋ ๊ตฌ์ฑ ์์์ ๋ํ ๋๊ท๋ชจ ๊ฐ์๋ฅผ ์ ๊ณตํฉ๋๋ค. ๋ค์์ผ๋ก, Grafana์ ๋๊ท๋ชจ ๋์๋ณด๋์์ ์ด ๋ชจ๋ ๊ฒ์ ์๊ฐํํ๊ณ ๊ฒฝ๊ณ ๋ฅผ ์ํด Alertmanager๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์ฐ๋ฆฌ์๊ฒ ๋ ๋ค๋ฅธ ์ ์ฉํ ๋๊ตฌ๋
ํ๋ธ์ ํ ๋ฆฌ์์ค
์์ ์ ๋ค์ด๊ฐ๊ธฐ ์ ์ ๋ฆฌ์์ค๋ฅผ ํ ๋นํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ๋ง์ดํฌ๋ก์๋น์ค.
์ด๋ค ํ์ด ์ผ๋ง๋ ๋ง์ ์์ ์ฌ์ฉํ๋์ง ์ดํดํ๋ ค๋ฉด ัะตััััั (ํ๋ก์ธ์, ๋ฉ๋ชจ๋ฆฌ, ๋ก์ปฌ SSD), ๊ฐ ๋ช ๋ น์ ์์ฒด์ ์ผ๋ก ํ ๋นํฉ๋๋ค. ๋ค์ ์คํ์ด์ค ์ด์ ์ ํ์ ์๊ตฌ ์ฌํญ์ ๋ ผ์ํ ํ "ํ๋ธ"์์ ํ๋ก์ธ์, ๋ฉ๋ชจ๋ฆฌ ๋ฐ ๋์คํฌ ์ธก๋ฉด์์ ์ต๋ ์ฑ๋ฅ์ ์ ํํฉ๋๋ค. ๋ฐ๋ผ์ ์ผ๋ฐ์ ์ผ๋ก ํ๋์ ๋ช ๋ น์ ๋ฐฐํฌ๋ฅผ ์ํด ์ ์ฒด ํด๋ฌ์คํฐ๋ฅผ ์ฐจ๋จํ์ง ์๊ณ ์์ฒ ๊ฐ์ ์ฝ์ด์ ํ ๋ผ๋ฐ์ดํธ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํฉ๋๋ค. ๋ค์์คํ์ด์ค์ ๋ํ ์ก์ธ์ค๋ AD(RBAC ์ฌ์ฉ)๋ฅผ ํตํด ๋ถ์ฌ๋ฉ๋๋ค. ๋ค์์คํ์ด์ค์ ํด๋น ์ ํ์ ํ ์์ฒญ์ ํตํด GIT ์ ์ฅ์์ ์ถ๊ฐ๋ ๋ค์ ๋ชจ๋ ๊ฒ์ด Ansible ํ์ดํ๋ผ์ธ์ ํตํด ์๋์ผ๋ก ๋กค์์๋ฉ๋๋ค.
ํ์ ๋ฆฌ์์ค๋ฅผ ํ ๋นํ๋ ์:
namespaces:
chat-team:
pods: 23
limits:
cpu: 11
memory: 20Gi
requests:
cpu: 11
memory: 20Gi
์์ฒญ ๋ฐ ํ๋
ํ๋ธํ" ์๋ขฐ ๋ณด์ฅ๋ ์์ฝ ๋ฆฌ์์ค ์์ ๋๋ค. ํฌ๋ (ํ๋ ์ด์์ Docker ์ปจํ ์ด๋)๋ฅผ ํด๋ฌ์คํฐ์ ํฌํจํฉ๋๋ค. ํ๋๋ ๋ณด์ฅ๋์ง ์๋ ์ต๋๊ฐ์ ๋๋ค. ์ผ๋ถ ํ์ด ๋ชจ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ํด ๋๋ฌด ๋ง์ ์์ฒญ์ ์ค์ ํ๊ณ ํด๋น ๋ค์์คํ์ด์ค ์๋์ ๋ชจ๋ ์์ฒญ์ด ์ด๋ฏธ "์ฌ์ฉ"๋์๊ธฐ ๋๋ฌธ์ ์ ํ๋ฆฌ์ผ์ด์ ์ "ํ๋ธ"์ ๋ฐฐํฌํ ์ ์๋ ๋ฐฉ๋ฒ์ ๊ทธ๋ํ์์ ์์ฃผ ๋ณผ ์ ์์ต๋๋ค.
์ด๋ฌํ ์ํฉ์ ํด๊ฒฐํ๋ ์ฌ๋ฐ๋ฅธ ๋ฐฉ๋ฒ์ ์ค์ ๋ฆฌ์์ค ์๋น๋์ ์ดํด๋ณด๊ณ ์ด๋ฅผ ์์ฒญํ ์(์์ฒญ)๊ณผ ๋น๊ตํ๋ ๊ฒ์ ๋๋ค.
์์ ์คํฌ๋ฆฐ์ท์์ "์์ฒญ๋" CPU๊ฐ ์ค์ ์ค๋ ๋ ์์ ์ผ์นํ๊ณ ์ ํ์ด ์ค์ CPU ์ค๋ ๋ ์๋ฅผ ์ด๊ณผํ ์ ์์์ ์ ์ ์์ต๋๋ค =)
์ด์ ์ผ๋ถ ๋ค์์คํ์ด์ค๋ฅผ ์์ธํ ์ดํด๋ณด๊ณ (์ ๋ "ํ๋ธ" ์์ฒด์ ๊ตฌ์ฑ ์์์ ๋ํ ์์คํ ๋ค์์คํ์ด์ค์ธ kube-system ๋ค์์คํ์ด์ค๋ฅผ ์ ํํ์ต๋๋ค) ์ค์ ๋ก ์ฌ์ฉ๋ ํ๋ก์ธ์ ์๊ฐ๊ณผ ๋ฉ๋ชจ๋ฆฌ ๋ ์์ฒญ๋ ์๊ฐ์ ๋น์จ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
์ค์ ๋ก ์ฌ์ฉ๋๋ ๊ฒ๋ณด๋ค ํจ์ฌ ๋ ๋ง์ ๋ฉ๋ชจ๋ฆฌ์ CPU๊ฐ ์์คํ
์๋น์ค์ฉ์ผ๋ก ์์ฝ๋์ด ์๋ค๋ ๊ฒ์ ๋ถ๋ช
ํฉ๋๋ค. kube-system์ ๊ฒฝ์ฐ ์ด๋ ์ ๋นํฉ๋๋ค. nginx ์์ ์ปจํธ๋กค๋ฌ ๋๋ nodelocaldns๊ฐ ์ต๊ณ ์กฐ์ ๋ฌํ์ ๋ CPU์ ๋๋ฌํ๊ณ ๋ง์ RAM์ ์๋นํ๊ธฐ ๋๋ฌธ์ ์ฌ๊ธฐ์๋ ๊ทธ๋ฌํ ์์ฝ์ด ์ ๋นํฉ๋๋ค. ๋ํ ์ง๋ 3์๊ฐ ๋์์ ์ฐจํธ์ ์์กดํ ์ ์์ต๋๋ค. ์ฅ๊ธฐ๊ฐ์ ๊ฑธ์น ๊ธฐ๋ก ์ธก์ ํญ๋ชฉ์ ๋ณด๋ ๊ฒ์ด ๋ฐ๋์งํฉ๋๋ค.
"๊ถ์ฅ์ฌํญ" ์์คํ ์ด ๊ฐ๋ฐ๋์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์ฌ๊ธฐ์๋ "์ ํ"(ํ์ฉ๋๋ ์์ ๋ง๋)์ ๋์ฌ "์ ํ"์ด ๋ฐ์ํ์ง ์๋๋ก ํ๋ ๊ฒ์ด ๋ ๋์ ๋ฆฌ์์ค๋ฅผ ํ์ธํ ์ ์์ต๋๋ค. ์ฆ, ๋ฆฌ์์ค๊ฐ ํ ๋น๋ ์๊ฐ ๋ถํ ์์ CPU ๋๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ด๋ฏธ ์ฌ์ฉํ ์๊ฐ ๋ฐ "๊ณ ์ ํด์ "๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๊ณ ์์ต๋๋ค.
์์์ ์ต์ ํด์ผ ํ๋ ๊ผฌํฌ๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ฝ ์กฐ์ + ๋ฆฌ์์ค ๋ชจ๋ํฐ๋ง์ผ๋ก ๊ธ์ XNUMX๊ฐ ์ด์ ์์ฑํ ์ ์์ผ๋ ๊ถ๊ธํ ์ ์ ๋๊ธ๋ก ์ง๋ฌธํด์ฃผ์ธ์. ๊ฐ๋จํ ๋งํด์, ์ด๋ฌํ ์ธก์ ํญ๋ชฉ์ ์๋ํํ๋ ์์
์ ๋งค์ฐ ์ด๋ ต๊ณ ๋ง์ ์๊ฐ์ด ํ์ํ๋ฉฐ "์ฐฝ" ๊ธฐ๋ฅ ๋ฐ "CTE" Prometheus/VictoriaMetrics์์ ๊ท ํ ์์
์ด ํ์ํ๋ค๊ณ ๋งํ ์ ์์ต๋๋ค. PromQL์์๋ ์ด์ ๊ฐ์ ๊ฒ์ด ์์ผ๋ฉฐ ๋ฌด์์ด ์ฟผ๋ฆฌ๋ฅผ ์ฌ๋ฌ ํ
์คํธ ํ๋ฉด์ผ๋ก ๋๋์ด ์ต์ ํํด์ผ ํฉ๋๋ค.
๊ฒฐ๊ณผ์ ์ผ๋ก ๊ฐ๋ฐ์๋ Cube์์ ์์ ์ ๋ค์์คํ์ด์ค๋ฅผ ๋ชจ๋ํฐ๋งํ ์ ์๋ ๋๊ตฌ๋ฅผ ๊ฐ๊ฒ ๋๋ฉฐ, ์ด๋ ์์ฉ ํ๋ก๊ทธ๋จ์ด ๋ฆฌ์์ค๋ฅผ "์ ๋จ"ํ ์ ์๋์ง, ๋ฐค์๋๋ก ์ ์ฒด CPU๋ฅผ ์ ๊ณตํ ์ ์๋ ์๋ฒ๋ฅผ ์ธ์ , ์ด๋์ ์ค์ค๋ก ์ ํํ ์ ์์ต๋๋ค.
๋ฐฉ๋ฒ๋ก
ํ์ฌ์์๋ ์ง๊ธ์ฒ๋ผ ์ ํ์, ์ฐ๋ฆฌ๋ DevOps๋ฅผ ์ค์ํฉ๋๋ค. SRE- ์ค๋ฌด์ ํ์ฌ์ 1000๊ฐ์ ๋ง์ดํฌ๋ก์๋น์ค, ์ ์ฒด ์ธํ๋ผ์ ๋ํ ์ฝ 350๋ช ์ ๊ฐ๋ฐ์ ๋ฐ 15๋ช ์ ๊ด๋ฆฌ์๊ฐ ์๋ ๊ฒฝ์ฐ "์ ํ"ํด์ผ ํฉ๋๋ค. ์ด๋ฌํ ๋ชจ๋ "๊ธฐ๋ณธ" ๋ค์๋ ๋ชจ๋ ๊ฒ๊ณผ ๋ชจ๋ ์ฌ๋์ ์๋ํํด์ผ ํ๋ ๊ธด๊ธํ ํ์์ฑ์ด ์์ผ๋ฉฐ ๊ด๋ฆฌ์๋ ๋ณ๋ชฉ ํ์์ด ์์ด์๋ ์ ๋ฉ๋๋ค. ํ๋ก์ธ์ค์์.
Ops๋ก์ ์ฐ๋ฆฌ๋ ๊ฐ๋ฐ์์๊ฒ ์๋น์ค ์๋ต๋ฅ ๋ฐ ์ค๋ฅ์ ๊ด๋ จ๋ ๋ค์ํ ์งํ์ ๋์๋ณด๋๋ฅผ ์ ๊ณตํฉ๋๋ค.
์ฐ๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ์ ๋ฐฉ๋ฒ๋ก ์ ์ฌ์ฉํฉ๋๋ค.
ํ ๋ฌ ๋์ ๊ทธ๋ํ๋ฅผ ๊ทธ๋ฆฌ์ง ์์์ต๋๋ค. ์ด๋ ์๋ง๋ ์ข์ ์ ํธ์ผ ๊ฒ์ ๋๋ค. ์ด๋ ๋๋ถ๋ถ์ "์ํ๋ ๊ฒ"์ด โโ์ด๋ฏธ ์คํ๋์์์ ์๋ฏธํฉ๋๋ค. ์ฃผ์ค์๋ ์ ์ด๋ ํ๋ฃจ์ ํ ๋ฒ์ฉ ์๋ก์ด ๊ทธ๋ํ๋ฅผ ๊ทธ๋ฆฌ๋ ์ผ์ด ์ผ์ด๋ฌ์ต๋๋ค.
์ด์ ๊ฐ๋ฐ์๊ฐ ๊ด๋ฆฌ์์๊ฒ "์ด๋ค ์ข
๋ฅ์ ์ธก์ ํญ๋ชฉ์ ๋ณผ ์ ์๋์ง"์ ๋ํ ์ง๋ฌธ์ ํ๋ ๊ฒฝ์ฐ๊ฐ ๊ฑฐ์ ์๊ธฐ ๋๋ฌธ์ ๊ฒฐ๊ณผ ๊ฒฐ๊ณผ๋ ๊ฐ์น๊ฐ ์์ต๋๋ค.
๊ตฌํ ์๋น์ค ๋ฉ์ ๊ณง ์ถ์๋ ์์ ์ด๋ฉฐ ๋ชจ๋ ์ฌ๋์ ์ถ์ด ํจ์ฌ ๋ ์ฌ์์ง ๊ฒ์ ๋๋ค. Tools์ ๋๋ฃ๋ค์ ์ด๋ฏธ ์ถ์์ ์ธ "๊ฑด๊ฐํ ์ฌ๋์ Istio" ๊ตฌํ์ ๊ฐ๊น์์ก์ต๋๋ค. ๊ฐ HTTP(s) ์์ฒญ์ ์๋ช ์ฃผ๊ธฐ๋ ๋ชจ๋ํฐ๋ง์์ ๋ณผ ์ ์์ผ๋ฉฐ ์๋น์ค ๊ฐ(๋ฟ๋ง ์๋๋ผ) ์ํธ ์์ฉ ์ค์ "๋ชจ๋ ๋จ๊ณ์์ ๋ชจ๋ ๊ฒ์ด ์ค๋จ๋์๋์ง"๋ฅผ ํญ์ ์ดํดํ ์ ์์ต๋๋ค. DomClick ํ๋ธ์ ๋ด์ค๋ฅผ ๊ตฌ๋ ํ์ธ์. =)
Kubernetes ์ธํ๋ผ ์ง์
์ญ์ฌ์ ์ผ๋ก ์ฐ๋ฆฌ๋ ํจ์น ๋ฒ์ ์ ์ฌ์ฉํฉ๋๋ค ํ๋ธ์คํ๋ ์ด โ Kubernetes ๋ฐฐํฌ, ํ์ฅ, ์ ๋ฐ์ดํธ๋ฅผ ์ํ Ansible ์ญํ ์ ๋๋ค. ์ด๋ค ์์ ์์๋ kubeadm์ด ์๋ ์ค์น์ ๋ํ ์ง์์ด ๋ฉ์ธ ๋ธ๋์น์์ ์ค๋จ๋์๊ณ kubeadm์ผ๋ก ์ ํํ๋ ํ๋ก์ธ์ค๊ฐ ์ ์๋์ง ์์์ต๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก Southbridge ํ์ฌ๋ ์์ฒด ํฌํฌ๋ฅผ ๋ง๋ค์์ต๋๋ค(kubeadm ์ง์ ๋ฐ ์ค์ํ ๋ฌธ์ ์ ๋ํ ๋น ๋ฅธ ์์ ํฌํจ).
๋ชจ๋ k8s ํด๋ฌ์คํฐ๋ฅผ ์ ๋ฐ์ดํธํ๋ ํ๋ก์ธ์ค๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์ฐ๋ฆฌ๋ ํ๋ธ์คํ๋ ์ด Southbridge์์ Merjim์ด๋ผ๋ ์ค๋ ๋๋ฅผ ํ์ธํด๋ณด์ธ์.
- ๋ค์ ์ ๋ฐ์ดํธ๋ฅผ ์ถ์ํ๊ณ ์์ต๋๋ค. ์คํธ๋ ์ค- "ํ๋ธ".
- ํ ๋ฒ์ ํ ๋ ธ๋์ฉ ์ ๋ฐ์ดํธ๋ฅผ ๋กค์์ํฉ๋๋ค(Ansible์์๋ "์ง๋ ฌ: 1"์). ๋ฐ๋ธ- "ํ๋ธ".
- ์ ๋ฐ์ดํธํ๋ค ์๊ทนํ๋ค ํ ์์ผ ์ ๋ ์๋ ํ ๋ฒ์ ํ ๋ ธ๋์ฉ.
์ถํ์ ๊ต์ฒดํ โโ๊ณํ์ด ์์ต๋๋ค ํ๋ธ์คํ๋ ์ด ๋ ๋นจ๋ฆฌ ๋ญ๊ฐ๋ฅผ ์ํด ๊ฐ์ญ์์ค kubeadm.
์ ์ฒด์ ์ผ๋ก Stress, Dev ๋ฐ Prod์ ์ธ ๊ฐ์ง "ํ๋ธ"๊ฐ ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ๋ ๋ค๋ฅธ ์ ํ์ ์ถ์ํ ๊ณํ์ ๋๋ค(ํซ ๋๊ธฐ) ๋ ๋ฒ์งธ ๋ฐ์ดํฐ ์ผํฐ์ Prod-โCubeโ. ์คํธ๋ ์ค ะธ ๋ฐ๋ธ "๊ฐ์ ๋จธ์ "(Stress์ฉ oVirt ๋ฐ Dev์ฉ VMWare ํด๋ผ์ฐ๋)์ ์ด๊ณ ์์ต๋๋ค. ์๊ทนํ๋ค- "ํ๋ธ"๋ "๋ฒ ์ด ๋ฉํ"์ ์์ต๋๋ค. ์ด๋ CPU ์ค๋ ๋ 32๊ฐ, ๋ฉ๋ชจ๋ฆฌ 64~128GB, SSD RAID 300 10GB๋ฅผ ๊ฐ์ถ ๋์ผํ ๋ ธ๋์ ๋๋ค. ์ด 50๊ฐ๊ฐ ์์ต๋๋ค. XNUMX๊ฐ์ "์ฌ" ๋ ธ๋๊ฐ "๋ง์คํฐ" ์ ์ฉ์ ๋๋ค. ์๊ทนํ๋ค- "์ฟ ๋ฐ": 16GB ๋ฉ๋ชจ๋ฆฌ, 12๊ฐ CPU ์ค๋ ๋.
ํ๋งค๋ฅผ ์ํด์๋ "๋ฒ ์ด๋ฉํ"์ ์ฌ์ฉํ๊ณ ๋ค์๊ณผ ๊ฐ์ ๋ถํ์ํ ๋ ์ด์ด๋ฅผ ํผํ๋ ๊ฒ์ ์ ํธํฉ๋๋ค. OpenStack: "์๋๋ฌ์ด ์ด์"๊ณผ CPU๊ฐ ํ์ํ์ง ์์ต๋๋ค. ์๊ฐ์ ํ์น๋ค. ๊ทธ๋ฆฌ๊ณ ์ฌ๋ด OpenStack์ ๊ฒฝ์ฐ ๊ด๋ฆฌ ๋ณต์ก์ฑ์ด ์ฝ ๋ ๋ฐฐ๋ก ๋์ด๋ฉ๋๋ค.
CI/CD "Cubic" ๋ฐ ๊ธฐํ ์ธํ๋ผ ๊ตฌ์ฑ ์์์ ๊ฒฝ์ฐ ๋ณ๋์ GIT ์๋ฒ์ธ Helm 3์ ์ฌ์ฉํฉ๋๋ค(Helm 2์์ ์ ํํ๋ ๊ฒ์ ๋ค์ ๊ณ ํต์ค๋ฌ์ ์ง๋ง ์ต์ ์ ๋งค์ฐ ๋ง์กฑํฉ๋๋ค) ์์์), ์ ํจ์ค, ์ค์๋ธ, ๋์ปค. ์ฐ๋ฆฌ๋ ํ๋์ ์ ์ฅ์์์ ๊ธฐ๋ฅ ๋ถ๊ธฐ์ ๋ค์ํ ํ๊ฒฝ์ผ๋ก์ ๋ฐฐํฌ๋ฅผ ์ข์ํฉ๋๋ค.
๊ฒฐ๋ก
์ด๋ ์ผ๋ฐ์ ์ผ๋ก ์ด์ ์์ง๋์ด์ ๊ด์ ์์ DomClick์ DevOps ํ๋ก์ธ์ค๊ฐ ์ด๋ป๊ฒ ๋ณด์ด๋์ง ๋ณด์ฌ์ค๋๋ค. ๊ธฐ์ฌ๋ ๋ด๊ฐ ์์ํ๋ ๊ฒ๋ณด๋ค ๋ ๊ธฐ์ ์ ์ธ ๊ฒ์ผ๋ก ํ๋ช
๋์์ต๋๋ค. ๋ฐ๋ผ์ Habrรฉ์ DomClick ๋ด์ค๋ฅผ ๋ฐ๋ฅด์ธ์. Kubernetes ๋ฑ์ ๋ํ ๋ ๋ง์ "ํ๋์ฝ์ด" ๊ธฐ์ฌ๊ฐ ์์ ๊ฒ์
๋๋ค.
์ถ์ฒ : habr.com