werf 1.1 ๋ฆด๋ฆฌ์Šค: ํ˜„์žฌ ๋นŒ๋” ๊ฐœ์„  ์‚ฌํ•ญ ๋ฐ ํ–ฅํ›„ ๊ณ„ํš

werf 1.1 ๋ฆด๋ฆฌ์Šค: ํ˜„์žฌ ๋นŒ๋” ๊ฐœ์„  ์‚ฌํ•ญ ๋ฐ ํ–ฅํ›„ ๊ณ„ํš

์›Œํ”„ Kubernetes์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์ถ•ํ•˜๊ณ  ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•œ ์˜คํ”ˆ ์†Œ์Šค GitOps CLI ์œ ํ‹ธ๋ฆฌํ‹ฐ์ž…๋‹ˆ๋‹ค. ์•ฝ์†๋Œ€๋กœ, v1.0 ๋ฒ„์ „ ์ถœ์‹œ werf์— ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๊ณ  ๊ธฐ์กด ์ ‘๊ทผ ๋ฐฉ์‹์„ ์ˆ˜์ •ํ•˜๋Š” ์‹œ์ž‘์„ ์•Œ๋ ธ์Šต๋‹ˆ๋‹ค. ์ด์ œ ์šฐ๋ฆฌ๋Š” ๊ฐœ๋ฐœ์˜ ํฐ ์ง„์ „์ด์ž ๋ฏธ๋ž˜๋ฅผ ์œ„ํ•œ ๊ธฐ๋ฐ˜์ธ ๋ฆด๋ฆฌ์Šค v1.1์„ ๋ฐœํ‘œํ•˜๊ฒŒ ๋œ ๊ฒƒ์„ ๊ธฐ์˜๊ฒŒ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ˆ˜์ง‘๊ธฐ werf. ๋ฒ„์ „์€ ํ˜„์žฌ ๋‹ค์Œ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฑ„๋„ 1.1๊ฐœ.

๋ฆด๋ฆฌ์Šค์˜ ๊ธฐ๋ณธ์€ ์ƒˆ๋กœ์šด ์Šคํ…Œ์ด์ง€ ์Šคํ† ๋ฆฌ์ง€ ์•„ํ‚คํ…์ฒ˜์™€ ๋‘ ์ˆ˜์ง‘๊ธฐ(Stapel ๋ฐ Dockerfile์šฉ) ์ž‘์—…์˜ ์ตœ์ ํ™”์ž…๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ์Šคํ† ๋ฆฌ์ง€ ์•„ํ‚คํ…์ฒ˜๋Š” ์—ฌ๋Ÿฌ ํ˜ธ์ŠคํŠธ์˜ ๋ถ„์‚ฐ ์–ด์…ˆ๋ธ”๋ฆฌ์™€ ๋™์ผํ•œ ํ˜ธ์ŠคํŠธ์˜ ๋ณ‘๋ ฌ ์–ด์…ˆ๋ธ”๋ฆฌ๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ€๋Šฅ์„ฑ์„ ์—ด์–ด์ค๋‹ˆ๋‹ค.

์ž‘์—… ์ตœ์ ํ™”์—๋Š” ๋‹จ๊ณ„ ์„œ๋ช… ๊ณ„์‚ฐ ๋‹จ๊ณ„์—์„œ ๋ถˆํ•„์š”ํ•œ ๊ณ„์‚ฐ์„ ์ œ๊ฑฐํ•˜๊ณ  ํŒŒ์ผ ์ฒดํฌ์„ฌ ๊ณ„์‚ฐ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ๋ณด๋‹ค ํšจ์œจ์ ์ธ ๊ฒƒ์œผ๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ์ด ์ตœ์ ํ™”๋Š” werf๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋กœ์ ํŠธ ๋นŒ๋“œ์˜ ํ‰๊ท  ์‹œ๊ฐ„์„ ๋‹จ์ถ•ํ•ฉ๋‹ˆ๋‹ค. ์œ ํœด ๋นŒ๋“œ(๋ชจ๋“  ๋‹จ๊ณ„๊ฐ€ ์บ์‹œ์— ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ) ์Šคํ…Œ์ด์ง€ ์ €์žฅ, ์ด์ œ ์ •๋ง ๋น ๋ฆ…๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ๋นŒ๋“œ๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๋Š” ๋ฐ๋Š” 1์ดˆ๋„ ์ฑ„ ๊ฑธ๋ฆฌ์ง€ ์•Š์Šต๋‹ˆ๋‹ค! ์ด๋Š” ํŒ€ ์ž‘์—… ๊ณผ์ •์˜ ๋‹จ๊ณ„๋ฅผ ํ™•์ธํ•˜๋Š” ์ ˆ์ฐจ์—๋„ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. werf deploy ะธ werf run.

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

werf v1.1์˜ ์ฃผ์š” ํ˜์‹  ์‚ฌํ•ญ์„ ์ž์„ธํžˆ ์‚ดํŽด๋ณด๋Š” ๋™์‹œ์— ๋ฏธ๋ž˜์— ๋Œ€ํ•œ ๊ณ„ํš๋„ ์•Œ๋ ค๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

werf v1.1์—์„œ ๋ฌด์—‡์ด ๋ณ€๊ฒฝ๋˜์—ˆ๋‚˜์š”?

์บ์‹œ์—์„œ ๋‹จ๊ณ„๋ฅผ ์„ ํƒํ•˜๊ธฐ ์œ„ํ•œ ์ƒˆ๋กœ์šด ๋‹จ๊ณ„ ์ด๋ฆ„ ์ง€์ • ํ˜•์‹ ๋ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜

์ƒˆ๋กœ์šด ๋ฌด๋Œ€ ์ด๋ฆ„ ์ƒ์„ฑ ๊ทœ์น™. ์ด์ œ ๊ฐ ๋‹จ๊ณ„ ๋นŒ๋“œ๋Š” ์„œ๋ช…(v2๊ณผ ๋™์ผ)๊ณผ ๊ณ ์œ ํ•œ ์ž„์‹œ ์‹๋ณ„์ž๋ผ๋Š” ๋‘ ๋ถ€๋ถ„์œผ๋กœ ๊ตฌ์„ฑ๋œ ๊ณ ์œ ํ•œ ๋‹จ๊ณ„ ์ด๋ฆ„์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ์ „์ฒด ์Šคํ…Œ์ด์ง€ ์ด๋ฏธ์ง€ ์ด๋ฆ„์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

werf-stages-storage/myproject:d2c5ad3d2c9fcd9e57b50edd9cb26c32d156165eb355318cebc3412b-1582656767835

...๋˜๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ:

werf-stages-storage/PROJECT:SIGNATURE-TIMESTAMP_MILLISEC

ะ—ะดะตััŒ :

  • SIGNATURE ์Šคํ…Œ์ด์ง€ ์ฝ˜ํ…์ธ ์˜ ์‹๋ณ„์ž๋ฅผ ๋‚˜ํƒ€๋‚ด๋ฉฐ ์ด ์ฝ˜ํ…์ธ ๋กœ ์ด์–ด์ง„ Git์˜ ํŽธ์ง‘ ๋‚ด์—ญ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง€๋Š” ์Šคํ…Œ์ด์ง€ ์„œ๋ช…์ž…๋‹ˆ๋‹ค.
  • TIMESTAMP_MILLISEC ์ƒˆ ์ด๋ฏธ์ง€๊ฐ€ ๋นŒ๋“œ๋  ๋•Œ ์ƒ์„ฑ๋˜๋Š” ๋ณด์žฅ๋œ ๊ณ ์œ  ์ด๋ฏธ์ง€ ์‹๋ณ„์ž์ž…๋‹ˆ๋‹ค.

์บ์‹œ์—์„œ ๋‹จ๊ณ„๋ฅผ ์„ ํƒํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ Git ์ปค๋ฐ‹์˜ ๊ด€๊ณ„ ํ™•์ธ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค.

  1. Werf๋Š” ํŠน์ • ๋‹จ๊ณ„์˜ ์‹œ๊ทธ๋‹ˆ์ฒ˜๋ฅผ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค.
  2. ะ’ ์Šคํ…Œ์ด์ง€ ์ €์žฅ ํŠน์ • ์„œ๋ช…์—๋Š” ์—ฌ๋Ÿฌ ๋‹จ๊ณ„๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Werf๋Š” ์„œ๋ช…๊ณผ ์ผ์น˜ํ•˜๋Š” ๋ชจ๋“  ๋‹จ๊ณ„๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  3. ํ˜„์žฌ ๋‹จ๊ณ„๊ฐ€ Git(git-archive, Git ํŒจ์น˜๊ฐ€ ์žˆ๋Š” ์‚ฌ์šฉ์ž ์ •์˜ ๋‹จ๊ณ„)์— ์—ฐ๊ฒฐ๋œ ๊ฒฝ์šฐ: install, beforeSetup, setup; ๋˜๋Š” git-latest-patch), werf๋Š” ํ˜„์žฌ ์ปค๋ฐ‹(๋นŒ๋“œ๊ฐ€ ํ˜ธ์ถœ๋จ)์˜ ์กฐ์ƒ์ธ ์ปค๋ฐ‹๊ณผ ์—ฐ๊ฒฐ๋œ ๋‹จ๊ณ„๋งŒ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  4. ๋‚˜๋จธ์ง€ ์ ํ•ฉํ•œ ๋‹จ๊ณ„ ์ค‘์—์„œ ์ƒ์„ฑ ๋‚ ์งœ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๊ฐ€์žฅ ์˜ค๋ž˜๋œ ๋‹จ๊ณ„ ์ค‘ ํ•˜๋‚˜๊ฐ€ ์„ ํƒ๋ฉ๋‹ˆ๋‹ค.

์„œ๋กœ ๋‹ค๋ฅธ Git ๋ธŒ๋žœ์น˜์˜ ์Šคํ…Œ์ด์ง€๋Š” ๋™์ผํ•œ ์„œ๋ช…์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ werf๋Š” ์„œ๋ช…์ด ์ผ์น˜ํ•˜๋”๋ผ๋„ ๋‹ค๋ฅธ ๋ถ„๊ธฐ์™€ ์—ฐ๊ด€๋œ ์บ์‹œ๊ฐ€ ์ด๋Ÿฌํ•œ ๋ถ„๊ธฐ ๊ฐ„์— ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค.

โ†’ ๋ฌธ์„œ.

์Šคํ…Œ์ด์ง€ ์ €์žฅ์†Œ์— ์Šคํ…Œ์ด์ง€๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ €์žฅํ•˜๋Š” ์ƒˆ๋กœ์šด ์•Œ๊ณ ๋ฆฌ์ฆ˜

์บ์‹œ์—์„œ ๋‹จ๊ณ„๋ฅผ ์„ ํƒํ•  ๋•Œ werf๊ฐ€ ์ ํ•ฉํ•œ ๋‹จ๊ณ„๋ฅผ ์ฐพ์ง€ ๋ชปํ•˜๋ฉด ์ƒˆ ๋‹จ๊ณ„๋ฅผ ์กฐ๋ฆฝํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค.

ํ•˜๋‚˜ ์ด์ƒ์˜ ํ˜ธ์ŠคํŠธ์—์„œ ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ฑฐ์˜ ๋™์‹œ์— ๋™์ผํ•œ ๋‹จ๊ณ„ ๊ตฌ์ถ•์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Werf๋Š” ๋‚™๊ด€์  ์ฐจ๋‹จ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์Šคํ…Œ์ด์ง€ ์ €์žฅ ์ƒˆ๋กœ ์ˆ˜์ง‘๋œ ์ด๋ฏธ์ง€๋ฅผ ์ €์žฅํ•˜๋Š” ์ˆœ๊ฐ„ ์Šคํ…Œ์ด์ง€ ์ €์žฅ. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ƒˆ ์Šคํ…Œ์ด์ง€ ๋นŒ๋“œ๊ฐ€ ์ค€๋น„๋˜๋ฉด werf ๋ธ”๋ก์ด ์Šคํ…Œ์ด์ง€ ์ €์žฅ ์ ์ ˆํ•œ ์ด๋ฏธ์ง€๊ฐ€ ๋” ์ด์ƒ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ์—๋งŒ ์ƒˆ๋กœ ์ˆ˜์ง‘๋œ ์ด๋ฏธ์ง€๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. (์„œ๋ช… ๋ฐ ๊ธฐํƒ€ ๋งค๊ฐœ๋ณ€์ˆ˜ ๊ธฐ์ค€ - ์บ์‹œ์—์„œ ๋‹จ๊ณ„๋ฅผ ์„ ํƒํ•˜๋Š” ์ƒˆ๋กœ์šด ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ฐธ์กฐ).

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

์ฆ‰, ์ด๋ฏธ์ง€ ๋นŒ๋“œ๋ฅผ ์™„๋ฃŒํ•˜๋Š” ์ฒซ ๋ฒˆ์งธ ํ”„๋กœ์„ธ์Šค(๊ฐ€์žฅ ๋น ๋ฅธ ํ”„๋กœ์„ธ์Šค)๋Š” ์ด๋ฅผ ์Šคํ…Œ์ด์ง€ ์Šคํ† ๋ฆฌ์ง€์— ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์„ ๊ฐ–๊ฒŒ ๋ฉ๋‹ˆ๋‹ค(๊ทธ๋Ÿฐ ๋‹ค์Œ ์ด ๋‹จ์ผ ์ด๋ฏธ์ง€๊ฐ€ ๋ชจ๋“  ๋นŒ๋“œ์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค). ๋Š๋ฆฐ ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค๋Š” ๋” ๋น ๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ˜„์žฌ ๋‹จ๊ณ„์˜ ๋นŒ๋“œ ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅํ•˜๊ณ  ๋‹ค์Œ ๋นŒ๋“œ๋กœ ์ด๋™ํ•˜๋Š” ๊ฒƒ์„ ๊ฒฐ์ฝ” ์ฐจ๋‹จํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

โ†’ ๋ฌธ์„œ.

ํ–ฅ์ƒ๋œ Dockerfile ๋นŒ๋” ์„ฑ๋Šฅ

ํ˜„์žฌ Dockerfile์—์„œ ๋นŒ๋“œ๋œ ์ด๋ฏธ์ง€์˜ ๋‹จ๊ณ„ ํŒŒ์ดํ”„๋ผ์ธ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ•œ ๋‹จ๊ณ„๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. dockerfile. ์„œ๋ช…์„ ๊ณ„์‚ฐํ•  ๋•Œ ํŒŒ์ผ์˜ ์ฒดํฌ์„ฌ์ด ๊ณ„์‚ฐ๋ฉ๋‹ˆ๋‹ค. context, ์กฐ๋ฆฝ ์ค‘์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด ๊ฐœ์„  ์ด์ „์—๋Š” werf๋Š” ๋ชจ๋“  ํŒŒ์ผ์„ ์žฌ๊ท€์ ์œผ๋กœ ํƒ์ƒ‰ํ•˜๊ณ  ๊ฐ ํŒŒ์ผ์˜ ์ปจํ…์ŠคํŠธ์™€ ๋ชจ๋“œ๋ฅผ ํ•ฉ์‚ฐํ•˜์—ฌ ์ฒดํฌ์„ฌ์„ ์–ป์—ˆ์Šต๋‹ˆ๋‹ค. v1.1๋ถ€ํ„ฐ werf๋Š” Git ์ €์žฅ์†Œ์— ์ €์žฅ๋œ ๊ณ„์‚ฐ๋œ ์ฒดํฌ์„ฌ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋‹ค์Œ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. ์ž์‹ ls-ํŠธ๋ฆฌ. ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋‹ค์Œ์˜ ๊ธฐ๋ก์„ ๊ณ ๋ คํ•ฉ๋‹ˆ๋‹ค. .dockerignore ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—๋งŒ ํŒŒ์ผ ํŠธ๋ฆฌ๋ฅผ ์žฌ๊ท€์ ์œผ๋กœ ํƒ์ƒ‰ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์šฐ๋ฆฌ๋Š” ํŒŒ์ผ ์‹œ์Šคํ…œ ์ฝ๊ธฐ์™€ ํฌ๊ธฐ์— ๋Œ€ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์˜์กด์„ฑ์„ ๋ถ„๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค. context ์ค‘์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์ถ”์ ๋˜์ง€ ์•Š์€ ํŒŒ์ผ์„ ํ™•์ธํ•˜๊ณ  ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์ฒดํฌ์„ฌ์—์„œ ํ•ด๋‹น ํŒŒ์ผ์„ ๊ณ ๋ คํ•ฉ๋‹ˆ๋‹ค.

ํŒŒ์ผ์„ ๊ฐ€์ ธ์˜ฌ ๋•Œ ์„ฑ๋Šฅ์ด ํ–ฅ์ƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

werf v1.1 ๋ฒ„์ „์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ์— rsync ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์•„ํ‹ฐํŒฉํŠธ ๋ฐ ์ด๋ฏธ์ง€์—์„œ ํŒŒ์ผ ๊ฐ€์ ธ์˜ค๊ธฐ. ์ด์ „์—๋Š” ํ˜ธ์ŠคํŠธ ์‹œ์Šคํ…œ์—์„œ ๋””๋ ‰ํ„ฐ๋ฆฌ ๋งˆ์šดํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‘ ๋‹จ๊ณ„๋กœ ๊ฐ€์ ธ์˜ค๊ธฐ๊ฐ€ ์ˆ˜ํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

macOS์—์„œ์˜ ๊ฐ€์ ธ์˜ค๊ธฐ ์„ฑ๋Šฅ์€ ๋” ์ด์ƒ Docker ๋ณผ๋ฅจ์— ์˜ํ•ด ์ œํ•œ๋˜์ง€ ์•Š์œผ๋ฉฐ Linux ๋ฐ Windows์™€ ๋™์ผํ•œ ์‹œ๊ฐ„ ๋‚ด์— ๊ฐ€์ ธ์˜ค๊ธฐ๊ฐ€ ์™„๋ฃŒ๋ฉ๋‹ˆ๋‹ค.

์ฝ˜ํ…์ธ  ๊ธฐ๋ฐ˜ ํƒœ๊ทธ ์ง€์ •

Werf v1.1์€ ์†Œ์œ„ ์ด๋ฏธ์ง€ ์ฝ˜ํ…์ธ ๋ณ„ ํƒœ๊ทธ ์ง€์ •์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์ฝ˜ํ…์ธ  ๊ธฐ๋ฐ˜ ํƒœ๊ทธ ์ง€์ •. ๊ฒฐ๊ณผ Docker ์ด๋ฏธ์ง€์˜ ํƒœ๊ทธ๋Š” ์ด๋Ÿฌํ•œ ์ด๋ฏธ์ง€์˜ ๋‚ด์šฉ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค.

๋ช…๋ น์„ ์‹คํ–‰ํ•  ๋•Œ werf publish --tags-by-stages-signature ๋˜๋Š” werf ci-env --tagging-strategy=stages-signature ์ด๋ฅธ๋ฐ” '์‚ฌ์ง„'์„ ๊ณต๊ฐœํ–ˆ๋‹ค. ๋ฌด๋Œ€ ์„œ๋ช… ์˜์ƒ. ๊ฐ ์ด๋ฏธ์ง€์—๋Š” ์ด ์ด๋ฏธ์ง€ ๋‹จ๊ณ„์˜ ๊ณ ์œ ํ•œ ์„œ๋ช…์ด ํƒœ๊ทธ๋กœ ์ง€์ •๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๊ฐ ๋‹จ๊ณ„์˜ ์ผ๋ฐ˜ ์„œ๋ช…๊ณผ ๋™์ผํ•œ ๊ทœ์น™์— ๋”ฐ๋ผ ๊ฐœ๋ณ„์ ์œผ๋กœ ๊ณ„์‚ฐ๋˜์ง€๋งŒ ์ด๋ฏธ์ง€์˜ ์ผ๋ฐ˜์ ์ธ ์‹๋ณ„์ž์ž…๋‹ˆ๋‹ค.

์ด๋ฏธ์ง€ ๋‹จ๊ณ„์˜ ์„œ๋ช…์€ ๋‹ค์Œ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค.

  1. ์ด ์ด๋ฏธ์ง€์˜ ๋‚ด์šฉ;
  2. ์ด ์ฝ˜ํ…์ธ ๋กœ ์ด์–ด์ง„ Git ๋ณ€๊ฒฝ ๋‚ด์—ญ์ž…๋‹ˆ๋‹ค.

Git ์ €์žฅ์†Œ์—๋Š” ํ•ญ์ƒ ์ด๋ฏธ์ง€ ํŒŒ์ผ์˜ ๋‚ด์šฉ์„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๋Š” ๋”๋ฏธ ์ปค๋ฐ‹์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ฃผ์„๋งŒ ์žˆ๋Š” ์ปค๋ฐ‹, ๋ณ‘ํ•ฉ ์ปค๋ฐ‹, Git์—์„œ ์ด๋ฏธ์ง€๋กœ ๊ฐ€์ ธ์˜ค์ง€ ์•Š์„ ํŒŒ์ผ์„ ๋ณ€๊ฒฝํ•˜๋Š” ์ปค๋ฐ‹ ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ฝ˜ํ…์ธ  ๊ธฐ๋ฐ˜ ํƒœ๊น…์„ ์‚ฌ์šฉํ•˜๋ฉด ์ด๋ฏธ์ง€์˜ ์ฝ˜ํ…์ธ ๊ฐ€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ์—๋„ ์ด๋ฏธ์ง€ ์ด๋ฆ„ ๋ณ€๊ฒฝ์œผ๋กœ ์ธํ•ด Kubernetes์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ Pod๊ฐ€ ๋ถˆํ•„์š”ํ•˜๊ฒŒ ๋‹ค์‹œ ์‹œ์ž‘๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฑด ๊ทธ๋ ‡๊ณ , ์ด๊ฒƒ์ด ํ•˜๋‚˜์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋งŽ์€ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ฅผ ๋‹จ์ผ Git ์ €์žฅ์†Œ์— ์ €์žฅํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๋Š” ์ด์œ  ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.

๋˜ํ•œ ์ฝ˜ํ…์ธ  ๊ธฐ๋ฐ˜ ํƒœ๊น…์€ Git ๋ธŒ๋žœ์น˜์— ํƒœ๊ทธ๋ฅผ ์ง€์ •ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋” ์•ˆ์ •์ ์ธ ํƒœ๊น… ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ ์ด๋ฏธ์ง€์˜ ์ฝ˜ํ…์ธ ๋Š” ๋™์ผํ•œ ๋ธŒ๋žœ์น˜์˜ ์—ฌ๋Ÿฌ ์ปค๋ฐ‹์„ ์กฐํ•ฉํ•˜๊ธฐ ์œ„ํ•ด CI ์‹œ์Šคํ…œ์—์„œ ํŒŒ์ดํ”„๋ผ์ธ์ด ์‹คํ–‰๋˜๋Š” ์ˆœ์„œ์— ์˜์กดํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์ค‘์š”ํ•œ ์ผ์ด์•ผ: ์ง€๊ธˆ๋ถ€ํ„ฐ ์Šคํ…Œ์ด์ง€ ์‹œ๊ทธ๋‹ˆ์ฒ˜ -๊ฐ€์š” ์œ ์ผํ•˜๊ฒŒ ๊ถŒ์žฅ๋˜๋Š” ํƒœ๊ทธ ์ „๋žต. ๋ช…๋ น์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. werf ci-env (๋‹ค๋ฅธ ํƒœ๊ทธ ์ง€์ • ์ฒด๊ณ„๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์ง€์ •ํ•˜์ง€ ์•Š๋Š” ํ•œ)

โ†’ ๋ฌธ์„œ. ์ด ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด์„œ๋Š” ๋ณ„๋„์˜ ๊ฐ„ํ–‰๋ฌผ๋„ ์ œ๊ณต๋  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค. ์—…๋ฐ์ดํŠธ๋จ (3์›” XNUMX์ผ): ์ž์„ธํ•œ ๋‚ด์šฉ์ด ๋‹ด๊ธด ๊ธฐ์‚ฌ ์ถœํŒ์‚ฌ :.

๋กœ๊น… ์ˆ˜์ค€

์ด์ œ ์‚ฌ์šฉ์ž๋Š” ์ถœ๋ ฅ์„ ์ œ์–ดํ•˜๊ณ , ๋กœ๊น… ์ˆ˜์ค€์„ ์„ค์ •ํ•˜๊ณ , ๋””๋ฒ„๊น… ์ •๋ณด๋กœ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ต์…˜์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค --log-quiet, --log-verbose, --log-debug.

๊ธฐ๋ณธ์ ์œผ๋กœ ์ถœ๋ ฅ์—๋Š” ์ตœ์†Œํ•œ์˜ ์ •๋ณด๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

werf 1.1 ๋ฆด๋ฆฌ์Šค: ํ˜„์žฌ ๋นŒ๋” ๊ฐœ์„  ์‚ฌํ•ญ ๋ฐ ํ–ฅํ›„ ๊ณ„ํš

์ž์„ธํ•œ ์ถœ๋ ฅ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ(--log-verbose) werf๊ฐ€ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

werf 1.1 ๋ฆด๋ฆฌ์Šค: ํ˜„์žฌ ๋นŒ๋” ๊ฐœ์„  ์‚ฌํ•ญ ๋ฐ ํ–ฅํ›„ ๊ณ„ํš

์ƒ์„ธ ์ถœ๋ ฅ(--log-debug)์—๋Š” werf ๋””๋ฒ„๊น… ์ •๋ณด ์™ธ์—๋„ ์‚ฌ์šฉ๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๋กœ๊ทธ๋„ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Docker Registry์™€์˜ ์ƒํ˜ธ ์ž‘์šฉ์ด ์–ด๋–ป๊ฒŒ ๋ฐœ์ƒํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ์ƒ๋‹นํ•œ ์‹œ๊ฐ„์ด ์†Œ์š”๋˜๋Š” ์žฅ์†Œ๋„ ๊ธฐ๋กํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

werf 1.1 ๋ฆด๋ฆฌ์Šค: ํ˜„์žฌ ๋นŒ๋” ๊ฐœ์„  ์‚ฌํ•ญ ๋ฐ ํ–ฅํ›„ ๊ณ„ํš

์ถ”๊ฐ€ ๊ณ„ํš

๊ฒฝ๊ณ ! ์•„๋ž˜์— ์„ค๋ช…๋œ ์˜ต์…˜์ด ํ‘œ์‹œ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. v1.1 ์ด ๋ฒ„์ „์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋  ์˜ˆ์ •์ด๋ฉฐ, ๊ทธ ์ค‘ ๋Œ€๋ถ€๋ถ„์€ ๊ฐ€๊นŒ์šด ์‹œ์ผ ๋‚ด์— ์ œ๊ณต๋  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค. ์—…๋ฐ์ดํŠธ๋Š” ์ž๋™ ์—…๋ฐ์ดํŠธ๋ฅผ ํ†ตํ•ด ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ๋ฉ€ํ‹ฐ์›Œํ”„๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ. ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์€ v1.1 ๊ธฐ๋Šฅ์˜ ์•ˆ์ •์ ์ธ ๋ถ€๋ถ„์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์œผ๋ฉฐ ํ•ด๋‹น ๊ธฐ๋Šฅ์˜ ๋ชจ์–‘์€ ๊ธฐ์กด ๊ตฌ์„ฑ์—์„œ ์ˆ˜๋™ ์‚ฌ์šฉ์ž ๊ฐœ์ž…์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‹ค์–‘ํ•œ Docker ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ๊ตฌํ˜„์— ๋Œ€ํ•œ ์ „์ฒด ์ง€์›(์‹ ๊ทœ)

๋ชฉํ‘œ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ werf๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์ œํ•œ ์—†์ด ์‚ฌ์šฉ์ž ์ •์˜ ๊ตฌํ˜„์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ˜„์žฌ ์šฐ๋ฆฌ๋Š” ์™„์ „ํ•œ ์ง€์›์„ ๋ณด์žฅํ•  ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์†”๋ฃจ์…˜ ์„ธํŠธ๋ฅผ ์‹๋ณ„ํ–ˆ์Šต๋‹ˆ๋‹ค.

  • ๊ธฐ๋ณธ๊ฐ’(๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ/๋ ˆ์ง€์ŠคํŠธ๋ฆฌ)*,
  • AWS ECR
  • ํ•˜๋Š˜๋น›*,
  • ๋„์ปค ํ—ˆ๋ธŒ
  • GCR*,
  • GitHub ํŒจํ‚ค์ง€
  • GitLab ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ*,
  • ํ•ญ๊ตฌ*,
  • ๋ถ€๋‘.

ํ˜„์žฌ werf์—์„œ ์™„๋ฒฝํ•˜๊ฒŒ ์ง€์›๋˜๋Š” ์†”๋ฃจ์…˜์—๋Š” ๋ณ„ํ‘œ๊ฐ€ ํ‘œ์‹œ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ๋Š” ์ง€์›์ด ์žˆ์ง€๋งŒ ์ œํ•œ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋‘ ๊ฐ€์ง€ ์ฃผ์š” ๋ฌธ์ œ๋ฅผ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ผ๋ถ€ ์†”๋ฃจ์…˜์€ Docker Registry API๋ฅผ ์‚ฌ์šฉํ•œ ํƒœ๊ทธ ์ œ๊ฑฐ๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์‚ฌ์šฉ์ž๊ฐ€ werf์˜ ์ž๋™ ์ •๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด๋Š” AWS ECR, Docker Hub ๋ฐ GitHub ํŒจํ‚ค์ง€์— ํ•ด๋‹น๋ฉ๋‹ˆ๋‹ค.
  • ์ผ๋ถ€ ์†”๋ฃจ์…˜์€ ์†Œ์œ„ ์ค‘์ฒฉ๋œ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ(Docker Hub, GitHub ํŒจํ‚ค์ง€ ๋ฐ Quay)๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ์ง€์›ํ•˜์ง€๋งŒ ์‚ฌ์šฉ์ž๊ฐ€ UI ๋˜๋Š” API(AWS ECR)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜๋™์œผ๋กœ ์ƒ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ์†”๋ฃจ์…˜์˜ ๊ธฐ๋ณธ API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋Ÿฌํ•œ ๋ฌธ์ œ์™€ ๊ธฐํƒ€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ์ž‘์—…์—๋Š” Werf ์ž‘์—…์˜ ์ „์ฒด ์ฃผ๊ธฐ๋ฅผ ๊ฐ๊ฐ์— ๋Œ€ํ•œ ํ…Œ์ŠคํŠธ๋กœ ๋‹ค๋ฃจ๋Š” ๊ฒƒ๋„ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

๋ถ„์‚ฐ ์ด๋ฏธ์ง€ ๋นŒ๋“œ(โ†‘)

  • ๋ฒ„์ „: v1.2 v1.1 (์ด ๊ธฐ๋Šฅ ๊ตฌํ˜„์˜ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์•„์กŒ์Šต๋‹ˆ๋‹ค.)
  • ๋‚ ์งœ: XNUMX์›”~XNUMX์›”
  • ๋ฐœํ–‰๋ฌผ

ํ˜„์žฌ werf v1.0 ๋ฐ v1.1์€ ์ด๋ฏธ์ง€ ๋นŒ๋“œ ๋ฐ ๊ฒŒ์‹œ ์ž‘์—…๊ณผ Kubernetes์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐฐํฌ ์ž‘์—…์„ ์œ„ํ•ด ํ•˜๋‚˜์˜ ์ „์šฉ ํ˜ธ์ŠคํŠธ์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Werf์˜ ๋ถ„์‚ฐ ์ž‘์—… ๊ฐ€๋Šฅ์„ฑ์„ ์—ด๋ ค๋ฉด Kubernetes์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋นŒ๋“œ ๋ฐ ๋ฐฐํฌ๊ฐ€ ์—ฌ๋Ÿฌ ์ž„์˜์˜ ํ˜ธ์ŠคํŠธ์—์„œ ์‹œ์ž‘๋˜๊ณ  ์ด๋Ÿฌํ•œ ํ˜ธ์ŠคํŠธ๊ฐ€ ๋นŒ๋“œ(์ž„์‹œ ์‹คํ–‰๊ธฐ) ๊ฐ„์— ์ƒํƒœ๋ฅผ ์ €์žฅํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ werf๋Š” ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Docker Registry๋ฅผ ์Šคํ…Œ์ด์ง€ ์ €์žฅ์†Œ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ด์ „์—๋Š” werf ํ”„๋กœ์ ํŠธ๊ฐ€ ์•„์ง dapp์œผ๋กœ ๋ถˆ๋ ธ์„ ๋•Œ ๊ทธ๋Ÿฐ ๊ธฐํšŒ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ werf์—์„œ ์ด ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•  ๋•Œ ๊ณ ๋ คํ•ด์•ผ ํ•  ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋ฌธ์ œ์— ์ง๋ฉดํ–ˆ์Šต๋‹ˆ๋‹ค.

์ฃผ์˜. ์ด ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์ˆ˜์ง‘๊ธฐ๊ฐ€ Kubernetes Pod ๋‚ด์—์„œ ์ž‘๋™ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ ค๋ฉด ๋กœ์ปฌ Docker ์„œ๋ฒ„์— ๋Œ€ํ•œ ์ข…์†์„ฑ์„ ์ œ๊ฑฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(Kubernetes ํฌ๋“œ์—์„œ๋Š” ํ”„๋กœ์„ธ์Šค ์ž์ฒด๊ฐ€ ์ปจํ…Œ์ด๋„ˆ์—์„œ ์‹คํ–‰๋˜๊ณ  werf๋Š” ์ง€์›ํ•˜์ง€ ์•Š์œผ๋ฉฐ ์•ž์œผ๋กœ๋„ ์ง€์›ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋กœ์ปฌ Docker ์„œ๋ฒ„์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค). ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด Docker ์„œ๋ฒ„์™€ ์ž‘์—…). Kubernetes ์‹คํ–‰์— ๋Œ€ํ•œ ์ง€์›์€ ๋ณ„๋„๋กœ ๊ตฌํ˜„๋ฉ๋‹ˆ๋‹ค.

GitHub Actions ๊ณต์‹ ์ง€์›(์‹ ๊ทœ)

werf ๋ฌธ์„œ ํฌํ•จ(์„น์…˜ ์ฐธ๊ณ  ะธ ์•ˆ๋‚ด) ๋ฐ werf ์ž‘์—…์„ ์œ„ํ•œ ๊ณต์‹ GitHub Action๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ, werf๋Š” ์ž„์‹œ ์‹คํ–‰๊ธฐ์—์„œ ์ž‘๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

CI ์‹œ์Šคํ…œ๊ณผ ์‚ฌ์šฉ์ž์˜ ์ƒํ˜ธ ์ž‘์šฉ ๋ฉ”์ปค๋‹ˆ์ฆ˜์€ ํ’€ ์š”์ฒญ์— ๋ ˆ์ด๋ธ”์„ ๋ฐฐ์น˜ํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์ถ•/๋กค์•„์›ƒํ•˜๊ธฐ ์œ„ํ•œ ํŠน์ • ์ž‘์—…์„ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค.

werf๋ฅผ ์‚ฌ์šฉํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋กœ์ปฌ ๊ฐœ๋ฐœ ๋ฐ ๋ฐฐํฌ(โ†“)

์ฃผ์š” ๋ชฉํ‘œ๋Š” ๋ณต์žกํ•œ ์ž‘์—… ์—†์ด ์ฆ‰์‹œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋กœ์ปฌ ๋ฐ ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์— ๋ฐฐํฌํ•˜๊ธฐ ์œ„ํ•œ ๋‹จ์ผ ํ†ตํ•ฉ ๊ตฌ์„ฑ์„ ๋‹ฌ์„ฑํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

werf์—๋Š” ๋˜ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฝ”๋“œ๋ฅผ ํŽธ์ง‘ํ•˜๊ณ  ๋””๋ฒ„๊น…์„ ์œ„ํ•ด ์‹คํ–‰ ์ค‘์ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์œผ๋กœ๋ถ€ํ„ฐ ์ฆ‰์‹œ ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ›๋Š” ๊ฒƒ์ด ํŽธ๋ฆฌํ•œ ์ž‘๋™ ๋ชจ๋“œ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์ƒˆ๋กœ์šด ์ฒญ์†Œ ์•Œ๊ณ ๋ฆฌ์ฆ˜(NEW)

ํ˜„์žฌ ๋ฒ„์ „์˜ werf v1.1 ์ ˆ์ฐจ์—์„œ cleanup ์ฝ˜ํ…์ธ  ๊ธฐ๋ฐ˜ ํƒœ๊ทธ ์ง€์ • ์ฒด๊ณ„์— ๋Œ€ํ•œ ์ด๋ฏธ์ง€ ์ •๋ฆฌ์— ๋Œ€ํ•œ ๊ทœ์ •์€ ์—†์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ด๋ฏธ์ง€๋Š” ๋ˆ„์ ๋ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ werf์˜ ํ˜„์žฌ ๋ฒ„์ „(v1.0 ๋ฐ v1.1)์€ ํƒœ๊ทธ ์ง€์ • ์ฒด๊ณ„(Git ๋ธŒ๋žœ์น˜, Git ํƒœ๊ทธ ๋˜๋Š” Git ์ปค๋ฐ‹)์— ๋”ฐ๋ผ ๊ฒŒ์‹œ๋œ ์ด๋ฏธ์ง€์— ๋Œ€ํ•ด ์„œ๋กœ ๋‹ค๋ฅธ ์ •๋ฆฌ ์ •์ฑ…์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  ํƒœ๊ทธ ๊ตฌ์„ฑํ‘œ์— ๋Œ€ํ•ด ํ†ตํ•ฉ๋œ Git์˜ ์ปค๋ฐ‹ ๊ธฐ๋ก์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ด๋ฏธ์ง€๋ฅผ ์ •๋ฆฌํ•˜๋Š” ์ƒˆ๋กœ์šด ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๊ฐœ๋ฐœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

  • ๊ฐ git HEAD(๋ธŒ๋žœ์น˜ ๋ฐ ํƒœ๊ทธ)์— ๋Œ€ํ•ด ๊ฐ€์žฅ ์ตœ๊ทผ N1 ์ปค๋ฐ‹๊ณผ ์—ฐ๊ฒฐ๋œ N2 ์ด๋ฏธ์ง€๋งŒ ์œ ์ง€ํ•˜์„ธ์š”.
  • ๊ฐ git HEAD(๋ธŒ๋žœ์น˜ ๋ฐ ํƒœ๊ทธ)์— ๋Œ€ํ•œ ์ตœ์‹  N1 ์ปค๋ฐ‹๊ณผ ๊ด€๋ จ๋œ N2 ๋‹จ๊ณ„ ์ด๋ฏธ์ง€๋งŒ ์ €์žฅํ•˜์„ธ์š”.
  • Kubernetes ํด๋Ÿฌ์Šคํ„ฐ ๋ฆฌ์†Œ์Šค์— ์‚ฌ์šฉ๋˜๋Š” ๋ชจ๋“  ์ด๋ฏธ์ง€๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค(๊ตฌ์„ฑ ํŒŒ์ผ ๋ฐ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์˜ ๋ชจ๋“  kube ์ปจํ…์ŠคํŠธ๊ฐ€ ์Šค์บ”๋ฉ๋‹ˆ๋‹ค. ํŠน์ˆ˜ ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด ๋™์ž‘์„ ์ œํ•œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค).
  • Helm ๋ฆด๋ฆฌ์Šค์— ์ €์žฅ๋œ ๋ฆฌ์†Œ์Šค ๊ตฌ์„ฑ ๋งค๋‹ˆํŽ˜์ŠคํŠธ์— ์‚ฌ์šฉ๋˜๋Š” ๋ชจ๋“  ์ด๋ฏธ์ง€๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
  • ์ด๋ฏธ์ง€๊ฐ€ git์˜ HEAD์™€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์ง€ ์•Š๊ณ (์˜ˆ: ํ•ด๋‹น HEAD ์ž์ฒด๊ฐ€ ์‚ญ์ œ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์—) Kubernetes ํด๋Ÿฌ์Šคํ„ฐ ๋ฐ Helm ๋ฆด๋ฆฌ์Šค์˜ ๋งค๋‹ˆํŽ˜์ŠคํŠธ์—์„œ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ์ด๋ฏธ์ง€๋ฅผ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ณ‘๋ ฌ ์ด๋ฏธ์ง€ ๊ตฌ์ถ•(โ†“)

  • ๋ฒ„์ „: v1.1
  • ๋‚ ์งœ: XNUMX์›”~XNUMX์›” XNUMX์›”*

werf์˜ ํ˜„์žฌ ๋ฒ„์ „์€ ๋‹ค์Œ์— ์„ค๋ช…๋œ ์ด๋ฏธ์ง€์™€ ์•„ํ‹ฐํŒฉํŠธ๋ฅผ ์ˆ˜์ง‘ํ•ฉ๋‹ˆ๋‹ค. werf.yaml, ์ˆœ์ฐจ์ ์œผ๋กœ. ์ด๋ฏธ์ง€์™€ ์•„ํ‹ฐํŒฉํŠธ์˜ ๋…๋ฆฝ์ ์ธ ๋‹จ๊ณ„๋ฅผ ์กฐ๋ฆฝํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ณ‘๋ ฌํ™”ํ•˜๊ณ  ํŽธ๋ฆฌํ•˜๊ณ  ์œ ์ตํ•œ ์ถœ๋ ฅ์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

* ์ฐธ๊ณ : ๋ถ„์‚ฐ ์–ด์…ˆ๋ธ”๋ฆฌ ๊ตฌํ˜„์— ๋Œ€ํ•œ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์•„์ ธ ๋” ๋งŽ์€ ์ˆ˜ํ‰์  ํ™•์žฅ ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜๊ณ  GitHub Actions์™€ ํ•จ๊ป˜ werf๋ฅผ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ๋งˆ๊ฐ์ผ์ด ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ณ‘๋ ฌ ์กฐ๋ฆฝ์€ ๋‹ค์Œ ์ตœ์ ํ™” ๋‹จ๊ณ„๋กœ, ํ•˜๋‚˜์˜ ํ”„๋กœ์ ํŠธ๋ฅผ ์กฐ๋ฆฝํ•  ๋•Œ ์ˆ˜์ง ํ™•์žฅ์„ฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

ํ—ฌ๋ฆ„ 3์œผ๋กœ ์ „ํ™˜ (โ†“)

  • ๋ฒ„์ „: v1.2
  • ๋‚ ์งœ: XNUMX์›”~XNUMX์›” XNUMX์›”*

์ƒˆ๋กœ์šด ์ฝ”๋“œ๋ฒ ์ด์Šค๋กœ์˜ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ํฌํ•จ ํ—ฌ๋ฆ„ 3 ๊ธฐ์กด ์„ค์น˜๋ฅผ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋Š” ์ž…์ฆ๋˜๊ณ  ํŽธ๋ฆฌํ•œ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

* ์ฐธ๊ณ : Helm 3์˜ ๋ชจ๋“  ์ฃผ์š” ๊ธฐ๋Šฅ(3๋ฐฉํ–ฅ ๋ณ‘ํ•ฉ ๋ฐ ๊ฒฝ์šด๊ธฐ ์—†์Œ)์ด ์ด๋ฏธ Werf์— ๊ตฌํ˜„๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ Helm 3์œผ๋กœ ์ „ํ™˜ํ•ด๋„ Werf์— ์ค‘์š”ํ•œ ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ฒŒ๋‹ค๊ฐ€ werf๋Š” ์ถ”๊ฐ€ ๊ธฐ๋Šฅ ํ‘œ์‹œ๋œ ๊ฒƒ ์™ธ์—๋„. ๊ทธ๋Ÿฌ๋‚˜ ์ด๋Ÿฌํ•œ ์ „ํ™˜์€ ์šฐ๋ฆฌ ๊ณ„ํš์— ๋‚จ์•„ ์žˆ์œผ๋ฉฐ ์‹œํ–‰๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Kubernetes ๊ตฌ์„ฑ์„ ์„ค๋ช…ํ•˜๋Š” JSONnet(โ†“)

  • ๋ฒ„์ „: v1.2
  • ๋‚ ์งœ: XNUMX์›”~XNUMX์›” XNUMX์›”~XNUMX์›”

Werf๋Š” Jsonnet ํ˜•์‹์˜ Kubernetes์— ๋Œ€ํ•œ ๊ตฌ์„ฑ ์„ค๋ช…์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๋™์‹œ์— werf๋Š” Helm๊ณผ์˜ ํ˜ธํ™˜์„ฑ์„ ์œ ์ง€ํ•˜๋ฉฐ ์„ค๋ช… ํ˜•์‹์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ ์ด์œ ๋Š” Go ํ…œํ”Œ๋ฆฟ์ด ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์— ๋”ฐ๋ฅด๋ฉด ์ง„์ž… ์žฅ๋ฒฝ์ด ๋†’๊ณ , ์ด๋Ÿฌํ•œ ํ…œํ”Œ๋ฆฟ์˜ ์ฝ”๋“œ์— ๋Œ€ํ•œ ์ดํ•ด์„ฑ๋„ ๋–จ์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๋‹ค๋ฅธ Kubernetes ๊ตฌ์„ฑ ์„ค๋ช… ์‹œ์Šคํ…œ(์˜ˆ: Kustomize)์„ ๋„์ž…ํ•  ๊ฐ€๋Šฅ์„ฑ๋„ ๊ณ ๋ ค ์ค‘์ž…๋‹ˆ๋‹ค.

Kubernetes ๋‚ด๋ถ€์—์„œ ์ž‘์—…ํ•˜๊ธฐ(โ†“)

  • ๋ฒ„์ „: v1.2
  • ๋‚ ์งœ: XNUMX์›”~XNUMX์›” XNUMX์›”~XNUMX์›”

๋ชฉํ‘œ: Kubernetes์˜ ์‹คํ–‰๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฏธ์ง€๊ฐ€ ๋นŒ๋“œ๋˜๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ œ๊ณต๋˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์ €๊ฒƒ๋“ค. Kubernetes ํฌ๋“œ์—์„œ ์ง์ ‘ ์ƒˆ ์ด๋ฏธ์ง€๋ฅผ ๊ตฌ์ถ•, ๊ฒŒ์‹œ, ์ •๋ฆฌ ๋ฐ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋ ค๋ฉด ๋จผ์ € ๋ถ„์‚ฐ ์ด๋ฏธ์ง€๋ฅผ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. (์œ„์˜ ๋‚ด์šฉ ์ฐธ์กฐ).

๋˜ํ•œ Docker ์„œ๋ฒ„๊ฐ€ ์—†๋Š” ๋นŒ๋” ์ž‘๋™ ๋ชจ๋“œ(์˜ˆ: Kaniko์™€ ๊ฐ™์€ ๋นŒ๋“œ ๋˜๋Š” ์‚ฌ์šฉ์ž ๊ณต๊ฐ„์—์„œ ๋นŒ๋“œ)์— ๋Œ€ํ•œ ์ง€์›์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

Werf๋Š” Dockerfile๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ฆ๋ถ„ ์žฌ๊ตฌ์ถ• ๋ฐ Ansible์„ ๊ฐ–์ถ˜ Stapel ๋นŒ๋”๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Kubernetes ๊ธฐ๋ฐ˜ ๊ตฌ์ถ•์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

๊ฐœ๋ฐฉํ˜• ๊ฐœ๋ฐœ์„ ํ–ฅํ•œ ํ•œ ๊ฑธ์Œ

์šฐ๋ฆฌ๋Š” ์šฐ๋ฆฌ ์ปค๋ฎค๋‹ˆํ‹ฐ๋ฅผ ์‚ฌ๋ž‘ํ•ฉ๋‹ˆ๋‹ค(GitHub์˜, ํ…”๋ ˆ๊ทธ๋žจ) ๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๋Š” ์ ์  ๋” ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด werf๋ฅผ ๊ฐœ์„ ํ•˜๋Š” ๋ฐ ๋„์›€์„ ์ฃผ๊ณ , ์šฐ๋ฆฌ๊ฐ€ ๋‚˜์•„๊ฐ€๋Š” ๋ฐฉํ–ฅ์„ ์ดํ•ดํ•˜๊ณ , ๊ฐœ๋ฐœ์— ์ฐธ์—ฌํ•˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

์ตœ๊ทผ์— ์ „ํ™˜ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค. GitHub ํ”„๋กœ์ ํŠธ ๋ณด๋“œ ์šฐ๋ฆฌ ํŒ€์˜ ์ž‘์—… ๊ณผ์ •์„ ๊ณต๊ฐœํ•˜๊ธฐ ์œ„ํ•ด. ์ด์ œ ๋‹ค์Œ ์˜์—ญ์˜ ํ˜„์žฌ ์ž‘์—…๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ฆ‰๊ฐ์ ์ธ ๊ณ„ํš๋„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฌธ์ œ์— ๋Œ€ํ•ด ๋งŽ์€ ์ž‘์—…์ด ์ˆ˜ํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

  • ๊ด€๋ จ ์—†๋Š” ๋‚ด์šฉ์„ ์ œ๊ฑฐํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ๊ธฐ์กด ํ•ญ๋ชฉ์€ ์ถฉ๋ถ„ํ•œ ์ˆ˜์˜ ์„ธ๋ถ€ ์ •๋ณด์™€ ์„ธ๋ถ€ ์ •๋ณด๋ฅผ ํฌํ•จํ•˜์—ฌ ๋‹จ์ผ ํ˜•์‹์œผ๋กœ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.
  • ์•„์ด๋””์–ด์™€ ์ œ์•ˆ์ด ํฌํ•จ๋œ ์ƒˆ๋กœ์šด ์ด์Šˆ๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋ฒ„์ „ v1.1์„ ํ™œ์„ฑํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•

๋ฒ„์ „์€ ํ˜„์žฌ ๋‹ค์Œ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฑ„๋„ 1.1๊ฐœ (์ฑ„๋„์—์„œ ์•ˆ์ •๋œ ะธ ๋ฐ”์œ„์ฒ˜๋Ÿผ ๋‹จ๋‹จํ•œ ์•ˆ์ •ํ™”๊ฐ€ ์ด๋ฃจ์–ด์ง€๋ฉด ๋ฆด๋ฆฌ์Šค๊ฐ€ ๋‚˜ํƒ€๋‚  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ea ๊ทธ ์ž์ฒด๋กœ๋Š” ์ด๋ฏธ ์‚ฌ์šฉํ•˜๊ธฐ์— ์ถฉ๋ถ„ํžˆ ์•ˆ์ •์ ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ฑ„๋„์„ ํ†ต๊ณผํ–ˆ์–ด์š” ์•ŒํŒŒ ะธ ๋ฒ ํƒ€). ํ™œ์„ฑํ™”๋จ ๋ฉ€ํ‹ฐ์›จ์–ด๋ฅผ ํ†ตํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ:

source $(multiwerf use 1.1 ea)
werf COMMAND ...

๊ฒฐ๋ก 

Stapel ๋ฐ Dockerfile ๋นŒ๋”๋ฅผ ์œ„ํ•œ ์ƒˆ๋กœ์šด ์Šคํ…Œ์ด์ง€ ์Šคํ† ๋ฆฌ์ง€ ์•„ํ‚คํ…์ฒ˜ ๋ฐ ๋นŒ๋” ์ตœ์ ํ™”๋Š” Werf์—์„œ ๋ถ„์‚ฐ ๋ฐ ๋ณ‘๋ ฌ ๋นŒ๋“œ๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ€๋Šฅ์„ฑ์„ ์—ด์–ด์ค๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์€ ๊ณง ๋™์ผํ•œ v1.1 ๋ฆด๋ฆฌ์Šค์— ๋‚˜ํƒ€๋‚  ์˜ˆ์ •์ด๋ฉฐ ์ž๋™ ์—…๋ฐ์ดํŠธ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ํ†ตํ•ด ์ž๋™์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค(์‚ฌ์šฉ์ž์˜ ๊ฒฝ์šฐ). ๋‹ค์ธ์ข…).

์ด๋ฒˆ ๋ฆด๋ฆฌ์Šค์—๋Š” ์ด๋ฏธ์ง€ ์ฝ˜ํ…์ธ ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ํƒœ๊ทธ ์ง€์ • ์ „๋žต์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ฝ˜ํ…์ธ  ๊ธฐ๋ฐ˜ ํƒœ๊ทธ ์ง€์ •, ์ด๋Š” ๊ธฐ๋ณธ ์ „๋žต์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ๋ช…๋ น ๋กœ๊ทธ๋„ ์žฌ์ž‘์—…๋˜์—ˆ์Šต๋‹ˆ๋‹ค. werf build, werf publish, werf deploy, werf dismiss, werf cleanup.

๋‹ค์Œ์œผ๋กœ ์ค‘์š”ํ•œ ๋‹จ๊ณ„๋Š” ๋ถ„์‚ฐ ์–ด์…ˆ๋ธ”๋ฆฌ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ถ„์‚ฐ ๋นŒ๋“œ๋Š” werf์— ๋” ๋งŽ์€ ๊ฐ€์น˜๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— v1.0๋ถ€ํ„ฐ ๋ณ‘๋ ฌ ๋นŒ๋“œ๋ณด๋‹ค ๋” ๋†’์€ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ๋นŒ๋”์˜ ์ˆ˜์ง์  ํ™•์žฅ๊ณผ ๋‹ค์–‘ํ•œ CI/CD ์‹œ์Šคํ…œ์˜ ์ž„์‹œ ๋นŒ๋”์— ๋Œ€ํ•œ ์ง€์›์€ ๋ฌผ๋ก  GitHub Actions์— ๋Œ€ํ•œ ๊ณต์‹ ์ง€์› ๊ธฐ๋Šฅ๋„ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. . ๋”ฐ๋ผ์„œ ๋ณ‘๋ ฌ ์–ด์…ˆ๋ธ”๋ฆฌ์˜ ๊ตฌํ˜„ ๊ธฐํ•œ์ด ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์šฐ๋ฆฌ๋Š” ๊ฐ€๋Šฅํ•œ ํ•œ ๋นจ๋ฆฌ ๋‘ ๊ฐ€์ง€ ๊ฐ€๋Šฅ์„ฑ์„ ๋ชจ๋‘ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋‰ด์Šค๋ฅผ ํŒ”๋กœ์šฐํ•˜์„ธ์š”! ๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๋ฅผ ๋ฐฉ๋ฌธํ•˜๋Š” ๊ฒƒ์„ ์žŠ์ง€ ๋งˆ์„ธ์š” GitHub์˜์ด์Šˆ๋ฅผ ์ƒ์„ฑํ•˜๋ ค๋ฉด ๊ธฐ์กด ์ด์Šˆ๋ฅผ ์ฐพ์•„ ํ”Œ๋Ÿฌ์Šค๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ , PR์„ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜, ๋‹จ์ˆœํžˆ ํ”„๋กœ์ ํŠธ ์ง„ํ–‰ ์ƒํ™ฉ์„ ์ง€์ผœ๋ณด์„ธ์š”.

PS

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

์ถœ์ฒ˜ : habr.com

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