๋จ์ผ ๋ฆฌํฌ์งํ ๋ฆฌ์ ์ฃผ์ ๋ ํ ๋ฒ ์ด์ ๋
ผ์๋์์ผ๋ฉฐ ์ผ๋ฐ์ ์ผ๋ก ๋งค์ฐ ํ๋ฐํ ๋
ผ๋์ ์ผ์ผ ํต๋๋ค. ์์ฑํ์ฌ
werf์ ์ต๊ทผ ๋ชจ๋
ธ ๋ ํฌ ์ง์์ด ์ด์ ๋ํ ์ข์ ์์
๋๋ค. ๊ทธ๋ฌ๋ ๋จผ์ ์ด ์ง์์ด ์ผ๋ฐ์ ์ผ๋ก werf ์ฌ์ฉ๊ณผ ์ด๋ค ๊ด๋ จ์ด ์์ผ๋ฉฐ Docker ๋ ์ง์คํธ๋ฆฌ๊ฐ ๊ทธ๊ฒ๊ณผ ์ด๋ค ๊ด๋ จ์ด ์๋์ง ์์๋ด
์๋ค...
๋ฌธ์
๊ทธ๋ฐ ์ํฉ์ ์์ํด ๋ด
์๋ค. ์ด ํ์ฌ์๋ ๋
๋ฆฝ์ ์ธ ํ๋ก์ ํธ๋ฅผ ์ํํ๋ ๋ง์ ๊ฐ๋ฐ ํ์ด ์์ต๋๋ค. ๋๋ถ๋ถ์ ์ ํ๋ฆฌ์ผ์ด์
์ Kubernetes์์ ์คํ๋๋ฏ๋ก ์ปจํ
์ด๋ํ๋ฉ๋๋ค. ์ปจํ
์ด๋, ์ด๋ฏธ์ง๋ฅผ ์ ์ฅํ๊ธฐ ์ํด์๋ ๋ ์ง์คํธ๋ฆฌ(registry)๊ฐ ํ์ํฉ๋๋ค. ์ด๋ฌํ ๋ ์ง์คํธ๋ฆฌ๋ก์ ํ์ฌ๋ ๋จ์ผ ๊ณ์ ์ผ๋ก Docker Hub๋ฅผ ์ฌ์ฉํฉ๋๋ค. COMPANY
. ๋๋ถ๋ถ์ ์์ค ์ฝ๋ ์ ์ฅ ์์คํ
๊ณผ ์ ์ฌํ๊ฒ, Docker Hub๋ ์ค์ฒฉ๋ ์ ์ฅ์ ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ํ์ฉํ์ง ์์ต๋๋ค., ์ ๊ฐ์ COMPANY/PROJECT/IMAGE
. ์ด ๊ฒฝ์ฐโฆ ๊ฐ ํ๋ก์ ํธ์ ๋ํด ๋ณ๋์ ๊ณ์ ์ ์์ฑํ์ง ์๊ณ ์ด๋ฌํ ์ ํ์ด ์๋ ๋ ์ง์คํธ๋ฆฌ์ ๋น๋ชจ๋๋ฆฌ์ ์ ํ๋ฆฌ์ผ์ด์
์ ์ด๋ป๊ฒ ์ ์ฅํ ์ ์์ต๋๊น?
์๋ง๋ ์ค๋ช
๋ ์ํฉ์ ๋๊ตฐ๊ฐ์๊ฒ ์ง์ ์ต์ํ์ง๋ง ์ผ๋ฐ์ ์ผ๋ก ์ ํ๋ฆฌ์ผ์ด์
์คํ ๋ฆฌ์ง ๊ตฌ์ฑ ๋ฌธ์ ๋ฅผ ๊ณ ๋ คํด ๋ด
์๋ค. ์์ ์์ Docker Hub๋ฅผ ์ฐธ์กฐํ์ง ์๊ณ .
์๋ฃจ์
์ ์ฒญํ๋ ๊ฒฝ์ฐ ๋จ๋จํ ์ง์ฌ ํ๋๋ก ๋์ด ์๋, ํ๋์ ์ด๋ฏธ์ง๋ก ์ ๊ณต๋๋ฉด ์ง๋ฌธ์ด ์์ผ๋ฉฐ ์ด๋ฏธ์ง๋ฅผ ํ๋ก์ ํธ์ ์ปจํ ์ด๋ ๋ ์ง์คํธ๋ฆฌ์ ์ ์ฅํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.
์์ฉ ํ๋ก๊ทธ๋จ์ด ์ฌ๋ฌ ๊ตฌ์ฑ ์์๋ก ํ์๋๋ ๊ฒฝ์ฐ ๋ง์ดํฌ๋ก์๋น์ค, ํน์ ์ ๊ทผ ๋ฐฉ์์ด ํ์ํฉ๋๋ค. ๋ ๊ฐ์ ์ด๋ฏธ์ง๋ก ๊ตฌ์ฑ๋ ์ผ๋ฐ์ ์ธ ์น ์ ํ๋ฆฌ์ผ์ด์
์ ์: frontend
ะธ backend
- ๊ฐ๋ฅํ ์ต์
์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ๋ณ๋์ ์ค์ฒฉ ์ ์ฅ์์ ์ด๋ฏธ์ง ์ ์ฅ:
- ๋ชจ๋ ๊ฒ์ ํ๋์ ๋ฆฌํฌ์งํ ๋ฆฌ์ ์ ์ฅํ๊ณ ์๋ฅผ ๋ค์ด ๋ค์๊ณผ ๊ฐ์ด ํ๊ทธ์ ์ด๋ฏธ์ง ์ด๋ฆ์ ๊ณ ๋ คํ์ญ์์ค.
NB: ์ฌ์ค ๋ค๋ฅธ ์ ์ฅ์์ ์ ์ฅํ๋ ๋ ๋ค๋ฅธ ์ต์
์ด ์์ต๋๋ค. PROJECT-frontend
ะธ PROJECT-backend
, ๊ทธ๋ฌ๋ ์ง์, ์กฐ์ง ๋ฐ ์ฌ์ฉ์ ๊ฐ์ ๊ถ๋ฆฌ ๋ถ๋ฐฐ์ ๋ณต์ก์ฑ ๋๋ฌธ์ ๊ณ ๋ คํ์ง ์์ ๊ฒ์
๋๋ค.
๋๋ ์ง์
์ฒ์์ werf๋ ์ค์ฒฉ๋ ๋ฆฌํฌ์งํ ๋ฆฌ๋ก ์ ํํ์ต๋๋ค. ๋คํํ๋ ๋๋ถ๋ถ์ ๋ ์ง์คํธ๋ฆฌ์์ ์ด ๊ธฐ๋ฅ์ ์ง์ํฉ๋๋ค. ๋ฒ์ ๋ถํฐ ์์
์ต์
์ผ๋ก ๊ตฌํ ๊ฐ๋ฅ --images-repo-mode=multirepo|monorepo
(๊ธฐ๋ณธ multirepo
, ์ฆ. ์ค์ฒฉ๋ ์ ์ฅ์์ ์ ์ฅ). ์ด๋ฏธ์ง๊ฐ ๋ ์ง์คํธ๋ฆฌ์ ์ ์ฅ๋๋ ํจํด์ ์ ์ํฉ๋๋ค. ๊ธฐ๋ณธ ๋ช
๋ น์ ์ฌ์ฉํ ๋ ์ํ๋ ๋ชจ๋๋ฅผ ์ ํํ๋ ๊ฒ์ผ๋ก ์ถฉ๋ถํ๋ฉฐ ๋ค๋ฅธ ๋ชจ๋ ๊ฒ์ ๋ณ๊ฒฝ๋์ง ์์ต๋๋ค.
๋๋ถ๋ถ์ werf ์ต์
์ ์ค์ ํ ์ ์๊ธฐ ๋๋ฌธ์ ํ๊ฒฝ ๋ณ์, CI / CD ์์คํ
์์ ์ ์ฅ ๋ชจ๋๋ ์ผ๋ฐ์ ์ผ๋ก ์ ์ฒด ํ๋ก์ ํธ์ ๋ํด ์ ์ญ์ ์ผ๋ก ์ฝ๊ฒ ์ค์ ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๊น๋ฉ์ ๊ฒฝ์ฐ ํ๋ก์ ํธ ์ค์ ์์ ํ๊ฒฝ ๋ณ์๋ฅผ ์ถ๊ฐํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค. ์ค์ -> CI/CD -> ๋ณ์: WERF_IMAGES_REPO_MODE: multirepo|monorepo
.
์ด๋ฏธ์ง ๊ฒ์ ๋ฐ ์ ํ๋ฆฌ์ผ์ด์
๋กค์์์ ๋ํด ์ด์ผ๊ธฐํ๋ ๊ฒฝ์ฐ(๊ด๋ จ ๋ฌธ์ ๋ฌธ์์์ ์ด๋ฌํ ํ๋ก์ธ์ค์ ๋ํด ์์ธํ ์ฝ์ ์ ์์ต๋๋ค.
์ ๋ง๊ฐ ์ธ๋ถ ์ฌํญ์์๋ค.
์๋ก์ด ์ ์ฅ ๋ฐฉ๋ฒ์ ์ถ๊ฐํ ๋์ ์ฐจ์ด์ ๊ณผ ์ฃผ์ ์ด๋ ค์์ ๋ ์ง์คํธ๋ฆฌ๋ฅผ ์ ๋ฆฌํ๋ ๊ณผ์ ์ ์์ต๋๋ค. (werf์์ ์ง์ํ๋ ์ ๊ฑฐ ๊ธฐ๋ฅ์ ๋ค์์ ์ฐธ์กฐํ์ญ์์ค.
์ ๋ฆฌํ ๋ werf๋ Kubernetes ํด๋ฌ์คํฐ์์ ์ฌ์ฉ๋๋ ์ด๋ฏธ์ง์ ์ฌ์ฉ์๊ฐ ๊ตฌ์ฑํ ์ ์ฑ ์ ๊ณ ๋ คํฉ๋๋ค. ์ ์ฑ ์ ํ๊ทธ๋ฅผ ์ ๋ต์ผ๋ก ๋๋๋ ๊ฒ์ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค. ํ์ฌ ์ง์๋๋ ์ ๋ต:
- ํ๊ทธ, ๋ถ๊ธฐ ๋ฐ ์ปค๋ฐ๊ณผ ๊ฐ์ Git ํ๋ฆฌ๋ฏธํฐ๋ธ๋ก ์ฐ๊ฒฐ๋ 3๊ฐ์ง ์ ๋ต;
- ์์์ ์ฌ์ฉ์ ์ง์ ํ๊ทธ์ ๋ํ 1๊ฐ์ง ์ ๋ต.
์ต์ข ์ด๋ฏธ์ง์ ๋ ์ด๋ธ์ ์ด๋ฏธ์ง๋ฅผ ๊ฒ์ํ ๋ ํ๊ทธ ์ ๋ต์ ๋ํ ์ ๋ณด๋ฅผ ์ ์ฅํฉ๋๋ค. ์๋ฏธ ์์ฒด๋ ์์ ๋ฉํ ํ๊ทธ - ์ผ๋ถ ์ ์ฑ ์ ์ ์ฉํ๊ธฐ ์ํด ํ์ํฉ๋๋ค. ์๋ฅผ ๋ค์ด Git ๋ฆฌํฌ์งํ ๋ฆฌ์์ ๋ธ๋์น๋ ํ๊ทธ๋ฅผ ์ญ์ ํ ๋ ๊ด๋ จ ํญ๋ชฉ์ ์ญ์ ํ๋ ๊ฒ์ด ๋ ผ๋ฆฌ์ ์ ๋๋ค. ๋ฏธ์ฌ์ฉ Google ์ ์ฑ ์ ์ผ๋ถ๊ฐ ์ ์ฉ๋๋ ๋ ์ง์คํธ๋ฆฌ์ ์ด๋ฏธ์ง.
ํ๋์ ์ ์ฅ์(monorepo
) ์ด๋ฏธ์ง ํ๊ทธ์๋ ๋ฉํ ํ๊ทธ ์ธ์ ์ด๋ฏธ์ง ์ด๋ฆ๋ ์ ์ฅํ ์ ์์ต๋๋ค. PROJECT:frontend-META-TAG
. ์ด๋ฅผ ๊ตฌ๋ถํ๊ธฐ ์ํด ๋ณ๋์ ๊ตฌ๋ถ์๋ฅผ ๋์
ํ์ง ์๊ณ , ํผ๋ธ๋ฆฌ์ฑ ์ ์ต์ข
์ด๋ฏธ์ง์ ๋ ์ด๋ธ์ ํ์ํ ๊ฐ์ ์ถ๊ฐํ์ ๋ฟ์
๋๋ค.
NB: werf ์์ค ์ฝ๋์ ์ค๋ช
๋ ๋ชจ๋ ๋ด์ฉ์ ์ดํด๋ณด๊ณ ์ถ๋ค๋ฉด ์์์ ์ด ๋ ์ ์์ต๋๋ค.
์ด ๊ธฐ์ฌ์์๋ ํ๊น
์ ๋ต, ๋ ์ด๋ธ์ ๋ฐ์ดํฐ ์ ์ฅ ๋ฐ ์ ์ฒด ๊ฒ์ ํ๋ก์ธ์ค์ ๊ฐ์ ์ ๊ทผ ๋ฐฉ์์ ๋ฌธ์ ์ ์ ๋น์ฑ์ ๋ ๋ง์ ๊ด์ฌ์ ๊ธฐ์ธ์ด์ง ์์ ๊ฒ์
๋๋ค. ์ด ๋ชจ๋ ๊ฒ์ Dmitry Stolyarov์ ์ต๊ทผ ๋ณด๊ณ ์์ ์์ธํ ์ค๋ช
๋์ด ์์ต๋๋ค.
์์ฝ
์ค์ฒฉ๋์ง ์์ ๋ ์ง์คํธ๋ฆฌ์ ๋ํ ์ง์ ๋ถ์กฑ์ ์ฐ๋ฆฌ ๋๋ ์ฐ๋ฆฌ์๊ฒ ์๋ ค์ง werf ์ฌ์ฉ์์๊ฒ ์ฐจ๋จ ์์ธ์ด ์๋์์ต๋๋ค. ๊ฒฐ๊ตญ ์ธ์ ๋ ์ง ๋ณ๋์ ์ด๋ฏธ์ง ๋ ์ง์คํธ๋ฆฌ๋ฅผ ์ฌ๋ฆด ์ ์์ต๋๋ค(๋๋ Google Cloud์ ์กฐ๊ฑด๋ถ Container Registry๋ก ์ ํ)... ๊ทธ๋ฌ๋, ๋๊ตฌ๊ฐ ๋ ๋์ DevOps ์ปค๋ฎค๋ํฐ์์ ๋ ํธ๋ฆฌํด์ง๊ธฐ ์ํด์๋ ์ด๋ฌํ ์ ํ์ ์ ๊ฑฐํ๋ ๊ฒ์ด ๋ ผ๋ฆฌ์ ์ผ๋ก ๋ณด์์ต๋๋ค. ์ด๋ฅผ ๊ตฌํํ๋ฉด์ ์ปจํ ์ด๋ ๋ ์ง์คํธ๋ฆฌ ์ ๋ฆฌ ๋ฉ์ปค๋์ฆ์ ์ฌ์์ ํ๋ ๋ฐ ์ฃผ์ ์ด๋ ค์์ ์ง๋ฉดํ์ต๋๋ค. ์ด์ ๋ชจ๋ ๊ฒ์ด ์ค๋น๋์์ผ๋ฏ๋ก ๋๊ตฐ๊ฐ์๊ฒ ๋ ์ฌ์์ก๋ค๋ ๊ฒ์ ๊นจ๋ซ๋ ๊ฒ์ด ์ข์ผ๋ฉฐ ์ฐ๋ฆฌ(ํ๋ก์ ํธ์ ์ฃผ์ ๊ฐ๋ฐ์)๋ ์ด ๊ธฐ๋ฅ์ ์ถ๊ฐ๋ก ์ง์ํ๋ ๋ฐ ๋์ ๋๋ ์ด๋ ค์์ด ์์ ๊ฒ์ ๋๋ค.
์ฐ๋ฆฌ์ ํจ๊ป ์์ผ๋ฉด ๊ณง ๋ค๋ฅธ ํ์ ์ ๋ํด ์๋ ค ๋๋ฆฌ๊ฒ ์ต๋๋ค.
PS
๋ธ๋ก๊ทธ์์๋ ์ฝ์ด๋ณด์ธ์.
- ยซ
์ด์ ์ผ๋ฐ Dockerfile์ ์ฌ์ฉํ์ฌ werf์์ Docker ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ ์ ์์ต๋๋ค. "; - ยซ
werf - Kubernetes์ CI/CD์ฉ ๋๊ตฌ(๊ฐ์ ๋ฐ ๋น๋์ค ๋ณด๊ณ ์) ".
์ถ์ฒ : habr.com