werf์—์„œ ๋‹จ์ผ ์ €์žฅ์†Œ ๋ฐ ๋‹ค์ค‘ ์ €์žฅ์†Œ์— ๋Œ€ํ•œ ์ง€์› ๋ฐ Docker ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์™€ ๊ด€๋ จ์ด ์žˆ๋Š” ์ž‘์—…

werf์—์„œ ๋‹จ์ผ ์ €์žฅ์†Œ ๋ฐ ๋‹ค์ค‘ ์ €์žฅ์†Œ์— ๋Œ€ํ•œ ์ง€์› ๋ฐ Docker ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์™€ ๊ด€๋ จ์ด ์žˆ๋Š” ์ž‘์—…

๋‹จ์ผ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์˜ ์ฃผ์ œ๋Š” ํ•œ ๋ฒˆ ์ด์ƒ ๋…ผ์˜๋˜์—ˆ์œผ๋ฉฐ ์ผ๋ฐ˜์ ์œผ๋กœ ๋งค์šฐ ํ™œ๋ฐœํ•œ ๋…ผ๋ž€์„ ์ผ์œผ ํ‚ต๋‹ˆ๋‹ค. ์ƒ์„ฑํ•˜์—ฌ ์›Œํ”„ Git์—์„œ Docker ์ด๋ฏธ์ง€๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฝ”๋“œ๋ฅผ ๋นŒ๋“œํ•œ ๋‹ค์Œ ์ด๋ฅผ Kubernetes๋กœ ์ „๋‹ฌํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฐœ์„ ํ•˜๋„๋ก ์„ค๊ณ„๋œ ์˜คํ”ˆ ์†Œ์Šค ๋„๊ตฌ๋กœ์„œ ์šฐ๋ฆฌ๋Š” ์–ด๋–ค ์„ ํƒ์ด ์ตœ์„ ์ธ์ง€์— ๋Œ€ํ•ด ๋งŽ์ด ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ์—๊ฒŒ๋Š” ๋‹ค์–‘ํ•œ ์˜๊ฒฌ์„ ์ง€์ง€ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ํ•„์š”ํ•œ ๋ชจ๋“  ๊ฒƒ์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด ๊ธฐ๋ณธ์ž…๋‹ˆ๋‹ค(๋ฌผ๋ก  ์ด๊ฒƒ์ด ์ƒ์‹์— ์œ„๋ฐฐ๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ).

werf์˜ ์ตœ๊ทผ ๋ชจ๋…ธ ๋ ˆํฌ ์ง€์›์ด ์ด์— ๋Œ€ํ•œ ์ข‹์€ ์˜ˆ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋จผ์ € ์ด ์ง€์›์ด ์ผ๋ฐ˜์ ์œผ๋กœ werf ์‚ฌ์šฉ๊ณผ ์–ด๋–ค ๊ด€๋ จ์ด ์žˆ์œผ๋ฉฐ Docker ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๊ฐ€ ๊ทธ๊ฒƒ๊ณผ ์–ด๋–ค ๊ด€๋ จ์ด ์žˆ๋Š”์ง€ ์•Œ์•„๋ด…์‹œ๋‹ค...

๋ฌธ์ œ

๊ทธ๋Ÿฐ ์ƒํ™ฉ์„ ์ƒ์ƒํ•ด ๋ด…์‹œ๋‹ค. ์ด ํšŒ์‚ฌ์—๋Š” ๋…๋ฆฝ์ ์ธ ํ”„๋กœ์ ํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๋งŽ์€ ๊ฐœ๋ฐœ ํŒ€์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ Kubernetes์—์„œ ์‹คํ–‰๋˜๋ฏ€๋กœ ์ปจํ…Œ์ด๋„ˆํ™”๋ฉ๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ, ์ด๋ฏธ์ง€๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ(registry)๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋กœ์„œ ํšŒ์‚ฌ๋Š” ๋‹จ์ผ ๊ณ„์ •์œผ๋กœ Docker Hub๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. COMPANY. ๋Œ€๋ถ€๋ถ„์˜ ์†Œ์Šค ์ฝ”๋“œ ์ €์žฅ ์‹œ์Šคํ…œ๊ณผ ์œ ์‚ฌํ•˜๊ฒŒ, Docker Hub๋Š” ์ค‘์ฒฉ๋œ ์ €์žฅ์†Œ ๊ณ„์ธต ๊ตฌ์กฐ๋ฅผ ํ—ˆ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค., ์™€ ๊ฐ™์€ COMPANY/PROJECT/IMAGE. ์ด ๊ฒฝ์šฐโ€ฆ ๊ฐ ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•ด ๋ณ„๋„์˜ ๊ณ„์ •์„ ์ƒ์„ฑํ•˜์ง€ ์•Š๊ณ  ์ด๋Ÿฌํ•œ ์ œํ•œ์ด ์žˆ๋Š” ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์— ๋น„๋ชจ๋†€๋ฆฌ์‹ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์–ด๋–ป๊ฒŒ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

werf์—์„œ ๋‹จ์ผ ์ €์žฅ์†Œ ๋ฐ ๋‹ค์ค‘ ์ €์žฅ์†Œ์— ๋Œ€ํ•œ ์ง€์› ๋ฐ Docker ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์™€ ๊ด€๋ จ์ด ์žˆ๋Š” ์ž‘์—…

์•„๋งˆ๋„ ์„ค๋ช… ๋œ ์ƒํ™ฉ์€ ๋ˆ„๊ตฐ๊ฐ€์—๊ฒŒ ์ง์ ‘ ์ต์ˆ™ํ•˜์ง€๋งŒ ์ผ๋ฐ˜์ ์œผ๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์Šคํ† ๋ฆฌ์ง€ ๊ตฌ์„ฑ ๋ฌธ์ œ๋ฅผ ๊ณ ๋ คํ•ด ๋ด…์‹œ๋‹ค. ์œ„์˜ ์˜ˆ์™€ Docker Hub๋ฅผ ์ฐธ์กฐํ•˜์ง€ ์•Š๊ณ .

์†”๋ฃจ์…˜

์‹ ์ฒญํ•˜๋Š” ๊ฒฝ์šฐ ๋‹จ๋‹จํžˆ ์งœ์—ฌ ํ•˜๋‚˜๋กœ ๋˜์–ด ์žˆ๋Š”, ํ•˜๋‚˜์˜ ์ด๋ฏธ์ง€๋กœ ์ œ๊ณต๋˜๋ฉด ์งˆ๋ฌธ์ด ์—†์œผ๋ฉฐ ์ด๋ฏธ์ง€๋ฅผ ํ”„๋กœ์ ํŠธ์˜ ์ปจํ…Œ์ด๋„ˆ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์— ์ €์žฅํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ์—ฌ๋Ÿฌ ๊ตฌ์„ฑ ์š”์†Œ๋กœ ํ‘œ์‹œ๋˜๋Š” ๊ฒฝ์šฐ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค, ํŠน์ • ์ ‘๊ทผ ๋ฐฉ์‹์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋‘ ๊ฐœ์˜ ์ด๋ฏธ์ง€๋กœ ๊ตฌ์„ฑ๋œ ์ผ๋ฐ˜์ ์ธ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์˜ˆ: frontend ะธ backend - ๊ฐ€๋Šฅํ•œ ์˜ต์…˜์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  1. ๋ณ„๋„์˜ ์ค‘์ฒฉ ์ €์žฅ์†Œ์— ์ด๋ฏธ์ง€ ์ €์žฅ:

    werf์—์„œ ๋‹จ์ผ ์ €์žฅ์†Œ ๋ฐ ๋‹ค์ค‘ ์ €์žฅ์†Œ์— ๋Œ€ํ•œ ์ง€์› ๋ฐ Docker ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์™€ ๊ด€๋ จ์ด ์žˆ๋Š” ์ž‘์—…

  2. ๋ชจ๋“  ๊ฒƒ์„ ํ•˜๋‚˜์˜ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ์ €์žฅํ•˜๊ณ  ์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํƒœ๊ทธ์˜ ์ด๋ฏธ์ง€ ์ด๋ฆ„์„ ๊ณ ๋ คํ•˜์‹ญ์‹œ์˜ค.

    werf์—์„œ ๋‹จ์ผ ์ €์žฅ์†Œ ๋ฐ ๋‹ค์ค‘ ์ €์žฅ์†Œ์— ๋Œ€ํ•œ ์ง€์› ๋ฐ Docker ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์™€ ๊ด€๋ จ์ด ์žˆ๋Š” ์ž‘์—…

NB: ์‚ฌ์‹ค ๋‹ค๋ฅธ ์ €์žฅ์†Œ์— ์ €์žฅํ•˜๋Š” ๋˜ ๋‹ค๋ฅธ ์˜ต์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค. PROJECT-frontend ะธ PROJECT-backend, ๊ทธ๋Ÿฌ๋‚˜ ์ง€์›, ์กฐ์ง ๋ฐ ์‚ฌ์šฉ์ž ๊ฐ„์˜ ๊ถŒ๋ฆฌ ๋ถ„๋ฐฐ์˜ ๋ณต์žก์„ฑ ๋•Œ๋ฌธ์— ๊ณ ๋ คํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋Š‘๋Œ€ ์ง€์›

์ฒ˜์Œ์— werf๋Š” ์ค‘์ฒฉ๋œ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋กœ ์ œํ•œํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹คํ–‰ํžˆ๋„ ๋Œ€๋ถ€๋ถ„์˜ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์—์„œ ์ด ๊ธฐ๋Šฅ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๋ฒ„์ „๋ถ€ํ„ฐ ์‹œ์ž‘ v1.0.4-alpha.3, ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ์ž‘์—… ์ถ”๊ฐ€ ์ค‘์ฒฉ์ด ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค, Docker Hub๊ฐ€ ๊ทธ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ๊ทธ ์‹œ์ ๋ถ€ํ„ฐ ์‚ฌ์šฉ์ž๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ด๋ฏธ์ง€๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ต์…˜์œผ๋กœ ๊ตฌํ˜„ ๊ฐ€๋Šฅ --images-repo-mode=multirepo|monorepo (๊ธฐ๋ณธ multirepo, ์ฆ‰. ์ค‘์ฒฉ๋œ ์ €์žฅ์†Œ์— ์ €์žฅ). ์ด๋ฏธ์ง€๊ฐ€ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์— ์ €์žฅ๋˜๋Š” ํŒจํ„ด์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ๋ช…๋ น์„ ์‚ฌ์šฉํ•  ๋•Œ ์›ํ•˜๋Š” ๋ชจ๋“œ๋ฅผ ์„ ํƒํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์ถฉ๋ถ„ํ•˜๋ฉฐ ๋‹ค๋ฅธ ๋ชจ๋“  ๊ฒƒ์€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋Œ€๋ถ€๋ถ„์˜ werf ์˜ต์…˜์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ™˜๊ฒฝ ๋ณ€์ˆ˜, CI / CD ์‹œ์Šคํ…œ์—์„œ ์ €์žฅ ๋ชจ๋“œ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์ „์ฒด ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•ด ์ „์—ญ์ ์œผ๋กœ ์‰ฝ๊ฒŒ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๊นƒ๋žฉ์˜ ๊ฒฝ์šฐ ํ”„๋กœ์ ํŠธ ์„ค์ •์—์„œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์„ค์ • -> CI/CD -> ๋ณ€์ˆ˜: WERF_IMAGES_REPO_MODE: multirepo|monorepo.

์ด๋ฏธ์ง€ ๊ฒŒ์‹œ ๋ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กค์•„์›ƒ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๋Š” ๊ฒฝ์šฐ(๊ด€๋ จ ๋ฌธ์„œ ๋ฌธ์„œ์—์„œ ์ด๋Ÿฌํ•œ ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฒŒ์‹œ ํ”„๋กœ์„ธ์Šค ะธ ๋ฐฐํฌ ํ”„๋กœ์„ธ์Šค), ๋ชจ๋“œ๋Š” ์ด๋ฏธ์ง€๋กœ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ๋Š” ํ…œํ”Œ๋ฆฟ๋งŒ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

์•…๋งˆ๊ฐ€ ์„ธ๋ถ€ ์‚ฌํ•ญ์—์žˆ๋‹ค.

์ƒˆ๋กœ์šด ์ €์žฅ ๋ฐฉ๋ฒ•์„ ์ถ”๊ฐ€ํ•  ๋•Œ์˜ ์ฐจ์ด์ ๊ณผ ์ฃผ์š” ์–ด๋ ค์›€์€ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋ฅผ ์ •๋ฆฌํ•˜๋Š” ๊ณผ์ •์— ์žˆ์Šต๋‹ˆ๋‹ค. (werf์—์„œ ์ง€์›ํ•˜๋Š” ์ œ๊ฑฐ ๊ธฐ๋Šฅ์€ ๋‹ค์Œ์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค. ์ฒญ์†Œ ๊ณผ์ •).

์ •๋ฆฌํ•  ๋•Œ werf๋Š” Kubernetes ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์ด๋ฏธ์ง€์™€ ์‚ฌ์šฉ์ž๊ฐ€ ๊ตฌ์„ฑํ•œ ์ •์ฑ…์„ ๊ณ ๋ คํ•ฉ๋‹ˆ๋‹ค. ์ •์ฑ…์€ ํƒœ๊ทธ๋ฅผ ์ „๋žต์œผ๋กœ ๋‚˜๋ˆ„๋Š” ๊ฒƒ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ ์ง€์›๋˜๋Š” ์ „๋žต:

  1. ํƒœ๊ทธ, ๋ถ„๊ธฐ ๋ฐ ์ปค๋ฐ‹๊ณผ ๊ฐ™์€ Git ํ”„๋ฆฌ๋ฏธํ‹ฐ๋ธŒ๋กœ ์—ฐ๊ฒฐ๋œ 3๊ฐ€์ง€ ์ „๋žต;
  2. ์ž„์˜์˜ ์‚ฌ์šฉ์ž ์ง€์ • ํƒœ๊ทธ์— ๋Œ€ํ•œ 1๊ฐ€์ง€ ์ „๋žต.

์ตœ์ข… ์ด๋ฏธ์ง€์˜ ๋ ˆ์ด๋ธ”์— ์ด๋ฏธ์ง€๋ฅผ ๊ฒŒ์‹œํ•  ๋•Œ ํƒœ๊ทธ ์ „๋žต์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ์˜๋ฏธ ์ž์ฒด๋Š” ์†Œ์œ„ ๋ฉ”ํƒ€ ํƒœ๊ทธ - ์ผ๋ถ€ ์ •์ฑ…์„ ์ ์šฉํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Git ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์—์„œ ๋ธŒ๋žœ์น˜๋‚˜ ํƒœ๊ทธ๋ฅผ ์‚ญ์ œํ•  ๋•Œ ๊ด€๋ จ ํ•ญ๋ชฉ์„ ์‚ญ์ œํ•˜๋Š” ๊ฒƒ์ด ๋…ผ๋ฆฌ์ ์ž…๋‹ˆ๋‹ค. ๋ฏธ์‚ฌ์šฉ Google ์ •์ฑ…์˜ ์ผ๋ถ€๊ฐ€ ์ ์šฉ๋˜๋Š” ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์˜ ์ด๋ฏธ์ง€.

ํ•˜๋‚˜์˜ ์ €์žฅ์†Œ(monorepo) ์ด๋ฏธ์ง€ ํƒœ๊ทธ์—๋Š” ๋ฉ”ํƒ€ ํƒœ๊ทธ ์™ธ์— ์ด๋ฏธ์ง€ ์ด๋ฆ„๋„ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. PROJECT:frontend-META-TAG. ์ด๋ฅผ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•ด ๋ณ„๋„์˜ ๊ตฌ๋ถ„์ž๋ฅผ ๋„์ž…ํ•˜์ง€ ์•Š๊ณ , ํผ๋ธ”๋ฆฌ์‹ฑ ์‹œ ์ตœ์ข… ์ด๋ฏธ์ง€์˜ ๋ ˆ์ด๋ธ”์— ํ•„์š”ํ•œ ๊ฐ’์„ ์ถ”๊ฐ€ํ–ˆ์„ ๋ฟ์ž…๋‹ˆ๋‹ค.

NB: werf ์†Œ์Šค ์ฝ”๋“œ์— ์„ค๋ช…๋œ ๋ชจ๋“  ๋‚ด์šฉ์„ ์‚ดํŽด๋ณด๊ณ  ์‹ถ๋‹ค๋ฉด ์‹œ์ž‘์ ์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. PR 1684.

์ด ๊ธฐ์‚ฌ์—์„œ๋Š” ํƒœ๊น… ์ „๋žต, ๋ ˆ์ด๋ธ”์— ๋ฐ์ดํ„ฐ ์ €์žฅ ๋ฐ ์ „์ฒด ๊ฒŒ์‹œ ํ”„๋กœ์„ธ์Šค์™€ ๊ฐ™์€ ์ ‘๊ทผ ๋ฐฉ์‹์˜ ๋ฌธ์ œ์™€ ์ •๋‹น์„ฑ์— ๋” ๋งŽ์€ ๊ด€์‹ฌ์„ ๊ธฐ์šธ์ด์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ๋ชจ๋“  ๊ฒƒ์€ Dmitry Stolyarov์˜ ์ตœ๊ทผ ๋ณด๊ณ ์„œ์— ์ž์„ธํžˆ ์„ค๋ช…๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.werf๋Š” Kubernetes์˜ CI/CD์šฉ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.".

์š”์•ฝ

์ค‘์ฒฉ๋˜์ง€ ์•Š์€ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์— ๋Œ€ํ•œ ์ง€์› ๋ถ€์กฑ์€ ์šฐ๋ฆฌ ๋˜๋Š” ์šฐ๋ฆฌ์—๊ฒŒ ์•Œ๋ ค์ง„ werf ์‚ฌ์šฉ์ž์—๊ฒŒ ์ฐจ๋‹จ ์š”์ธ์ด ์•„๋‹ˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ ์–ธ์ œ๋“ ์ง€ ๋ณ„๋„์˜ ์ด๋ฏธ์ง€ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋ฅผ ์˜ฌ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(๋˜๋Š” Google Cloud์˜ ์กฐ๊ฑด๋ถ€ Container Registry๋กœ ์ „ํ™˜)... ๊ทธ๋Ÿฌ๋‚˜, ๋„๊ตฌ๊ฐ€ ๋” ๋„“์€ DevOps ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ๋” ํŽธ๋ฆฌํ•ด์ง€๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ด๋Ÿฌํ•œ ์ œํ•œ์„ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์ด ๋…ผ๋ฆฌ์ ์œผ๋กœ ๋ณด์˜€์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ๊ตฌํ˜„ํ•˜๋ฉด์„œ ์ปจํ…Œ์ด๋„ˆ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ์ •๋ฆฌ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์žฌ์ž‘์—…ํ•˜๋Š” ๋ฐ ์ฃผ์š” ์–ด๋ ค์›€์— ์ง๋ฉดํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ๋ชจ๋“  ๊ฒƒ์ด ์ค€๋น„๋˜์—ˆ์œผ๋ฏ€๋กœ ๋ˆ„๊ตฐ๊ฐ€์—๊ฒŒ ๋” ์‰ฌ์›Œ์กŒ๋‹ค๋Š” ๊ฒƒ์„ ๊นจ๋‹ซ๋Š” ๊ฒƒ์ด ์ข‹์œผ๋ฉฐ ์šฐ๋ฆฌ(ํ”„๋กœ์ ํŠธ์˜ ์ฃผ์š” ๊ฐœ๋ฐœ์ž)๋Š” ์ด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€๋กœ ์ง€์›ํ•˜๋Š” ๋ฐ ๋ˆˆ์— ๋„๋Š” ์–ด๋ ค์›€์ด ์—†์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์šฐ๋ฆฌ์™€ ํ•จ๊ป˜ ์žˆ์œผ๋ฉด ๊ณง ๋‹ค๋ฅธ ํ˜์‹ ์— ๋Œ€ํ•ด ์•Œ๋ ค ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. ์›Œํ”„!

PS

๋ธ”๋กœ๊ทธ์—์„œ๋„ ์ฝ์–ด๋ณด์„ธ์š”.

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€