# CI ๋ณ€์ˆ˜ ๋ฐ Kubernetes Agent์šฉ HashiCorp ์Šคํ† ๋ฆฌ์ง€์™€ ํ•จ๊ป˜ GitLab 13.4๊ฐ€ ์ถœ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

# CI ๋ณ€์ˆ˜ ๋ฐ Kubernetes Agent์šฉ HashiCorp ์Šคํ† ๋ฆฌ์ง€์™€ ํ•จ๊ป˜ GitLab 13.4๊ฐ€ ์ถœ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋ฆด๋ฆฌ์Šค 13.4๋Š” CI ๋ณ€์ˆ˜, Kubernetes ์—์ด์ „ํŠธ ๋ฐ ๋ณด์•ˆ ์„ผํ„ฐ๋ฅผ ์œ„ํ•œ HashiCorp ์Šคํ† ๋ฆฌ์ง€๋Š” ๋ฌผ๋ก  Starter์˜ ์ „ํ™˜ ๊ฐ€๋Šฅํ•œ ๊ธฐ๋Šฅ๊ณผ ํ•จ๊ป˜ ์ถœ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

GitLab์—์„œ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์„ ํ˜ธํ•˜๋Š” ํ”Œ๋žซํผ์—์„œ ์œ„ํ—˜์„ ์ค„์ด๊ณ  ํšจ์œจ์„ฑ์„ ํ–ฅ์ƒํ•˜๋ฉฐ ์ „์†ก ์†๋„๋ฅผ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ํ•ญ์ƒ ์ƒ๊ฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ๋‹ฌ์—๋Š” ๋ณด์•ˆ ๊ธฐ๋Šฅ์„ ํ™•์žฅํ•˜๊ณ , ์ทจ์•ฝ์  ์ˆ˜๋ฅผ ์ค„์ด๊ณ , ํšจ์œจ์„ฑ์„ ๋†’์ด๊ณ , GitLab ์ž‘์—…์„ ๋‹จ์ˆœํ™”ํ•˜๊ณ , ํŒ€์ด ๊ธฐ๋Šฅ์„ ๋”์šฑ ๋น ๋ฅด๊ฒŒ ์ œ๊ณตํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” ์œ ์šฉํ•œ ์ƒˆ ๊ธฐ๋Šฅ์„ ๋งŽ์ด ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ๋ฆด๋ฆฌ์Šค์˜ ์ฃผ์š” ๊ธฐ๋Šฅ์ด ์œ ์šฉํ•  ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ 53๊ฐ€์ง€ ๋‹ค๋ฅธ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ, ์ด๋ฒˆ ๋ฆด๋ฆฌ์Šค์— ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๊ณ ๊ธ‰ ๋ณด์•ˆ ๊ธฐ๋Šฅ

์šฐ๋ฆฌ๋Š” ๋งค๋‹ฌ GitLab DevSecOps์— ๋ช‡ ๊ฐ€์ง€ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๋ ค๊ณ  ๋…ธ๋ ฅํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์ด๋ฒˆ ๋ฆด๋ฆฌ์Šค๋„ ์˜ˆ์™ธ๋Š” ์•„๋‹™๋‹ˆ๋‹ค. ์ด์ œ HashiCorp ์ €์žฅ์†Œ์˜ ๋น„๋ฐ€ ํ‚ค๋ฅผ CI/CD ์ž‘์—…์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์กฐ๋ฆฝ ๋ฐ ๋ฐฐํฌ ํ”„๋ ˆ์ž„์›Œํฌ ๋‚ด์—์„œ. ๋˜ํ•œ ์ฝ”๋“œ ๋ฐฐํฌ ์ฑ…์ž„ ๋ถ„๋ฆฌ๋ฅผ ์ง€์›ํ•˜๋ ค๋Š” ์กฐ์ง์€ ์ด์ œ Reporter ์•ก์„ธ์Šค ๊ถŒํ•œ์ด ์žˆ๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ฐฐํฌ์ž ์—ญํ•  ์ถ”๊ฐ€. ์ด ์—ญํ• ์€ ํ•ด๋‹น ์ตœ์†Œ ์ ‘๊ทผ ๊ถŒํ•œ์˜ ์›์น™ ์ฝ”๋“œ ์ž์ฒด๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋Š” ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ์ œ๊ณตํ•˜์ง€ ์•Š๊ณ ๋„ ๋ณ‘ํ•ฉ ์š”์ฒญ(GitLab "๋ณ‘ํ•ฉ ์š”์ฒญ"์˜ ๋Ÿฌ์‹œ์•„์–ด ํ˜„์ง€ํ™”)์„ ํ™•์ธํ•˜๊ณ  ๋ณด์•ˆ ํ™˜๊ฒฝ์— ์ฝ”๋“œ๋ฅผ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์œ„ํ—˜์„ ์ค„์ด๋Š” ๋˜ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์€ ์ƒˆ๋กœ์šด ๊ฒƒ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. GitLab Kubernetes ์—์ด์ „ํŠธ. ์šด์˜ํŒ€์€ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์ „์ฒด ์ธํ„ฐ๋„ท์— ๋…ธ์ถœํ•˜์ง€ ์•Š๊ณ ๋„ GitLab์—์„œ Kubernetes ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ƒˆ๋กœ์šด Terraform ์ƒํƒœ ํŒŒ์ผ์— ๋Œ€ํ•œ ์ž๋™ ๋ฒ„์ „ ์ œ์–ด ์ง€์›์„ ๋„์ž…ํ•ฉ๋‹ˆ๋‹ค. GitLab ๊ด€๋ฆฌ Terraform ์ƒํƒœ ๊ทœ์ • ์ค€์ˆ˜ ๋ฐ ๋””๋ฒ„๊น… ์šฉ์ด์„ฑ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ ์ธ์Šคํ„ด์Šค ๋ณด์•ˆ ๋Œ€์‹œ๋ณด๋“œ๋Š” GitLab ๋ณด์•ˆ ์„ผํ„ฐ ์ทจ์•ฝ์  ๋ณด๊ณ ์„œ ๋ฐ ๋ณด์•ˆ ์„ค์ •์ด ์žˆ์Šต๋‹ˆ๋‹ค.

GitLab์œผ๋กœ ๋”์šฑ ํŽธ๋ฆฌํ•˜๊ณ  ํšจ์œจ์ ์œผ๋กœ ์—…๋ฌด๋ฅผ ์ˆ˜ํ–‰ํ•˜์„ธ์š”

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

์˜คํ”ˆ ์†Œ์Šค ๊ธฐ์—ฌ

์šฐ๋ฆฌ๋Š” ๋Œ€ํ‘œ ๋ณ‘ํ•ฉ ์š”์ฒญ ์ฐจ์ด์ ์— ์ฝ”๋“œ ์ ์šฉ ๋ฒ”์œ„ ํ‘œ์‹œ๋‚ด๊ฐ€ ์ถ”๊ฐ€ํ•œ ๊ฒƒ ์ด๋ฒˆ๋‹ฌ MVP ํŒŒ๋น„์˜ค ํ›„์„ธ๋ฅด. ๋ณ€๊ฒฝ๋œ ์ฝ”๋“œ์˜ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ์ ์šฉ ๋ฒ”์œ„์— ๋Œ€ํ•œ ํ‘œ์‹œ๋Š” ๊ฐœ๋ฐœ์ž์—๊ฒŒ ๊ฒ€ํ†  ์ค‘ ์ฝ”๋“œ ์ ์šฉ ๋ฒ”์œ„์— ๋Œ€ํ•œ ๋ช…ํ™•ํ•œ ์•„์ด๋””์–ด๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด ์ •๋ณด๋Š” ๊ฒ€ํ†  ์†๋„๋ฅผ ๋†’์ด๊ณ  ์ƒˆ ์ฝ”๋“œ๋ฅผ ๋ณ‘ํ•ฉ ๋ฐ ๋ฐฐํฌํ•˜๋Š” ์‹œ๊ฐ„์„ ์ค„์ด๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๋„ ์ „ํ™˜ ๊ฐ€๋Šฅํ•œ ๊ธฐ๋Šฅ(๊ธฐ๋Šฅ ํ”Œ๋ž˜๊ทธ)์„ ์Šคํƒ€ํ„ฐ๋กœ ์ด๋™ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ณ„ํš์„ ์„ธ์šฐ๋‹ค ๋ฆด๋ฆฌ์Šค 13.5์—์„œ Core๋กœ ์ด๋™.

๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์€ ์‹œ์ž‘์— ๋ถˆ๊ณผํ•ฉ๋‹ˆ๋‹ค!

์–ธ์ œ๋‚˜ ๊ทธ๋ ‡๋“ฏ์ด ์ผ๋ฐ˜ ๊ฐœ์š”์—๋Š” ๊ณต๊ฐ„์ด ๋„ˆ๋ฌด ์ ์ง€๋งŒ 13.4 ๋ฆด๋ฆฌ์Šค์—๋Š” ๋ฉ‹์ง„ ๊ธฐ๋Šฅ์ด ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ๋ช‡ ๊ฐ€์ง€ ๋” ์žˆ์Šต๋‹ˆ๋‹ค:

๋ฌด์—‡์ด ๋‹น์‹ ์„ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ๋Š”์ง€ ๋ฏธ๋ฆฌ ์•Œ๊ณ  ์‹ถ๋‹ค๋ฉด ัะปะตะดัƒัŽั‰ะตะผ ํ’€์–ด, ์ข€ ๋ด 13.5 ๋ฆด๋ฆฌ์Šค ๋น„๋””์˜ค.

์›น์บ์ŠคํŠธ "์–ด๋ ค์šด ์‹œ๋Œ€์˜ ํƒ„๋ ฅ์„ฑ" ๋ณด๊ธฐ.

# CI ๋ณ€์ˆ˜ ๋ฐ Kubernetes Agent์šฉ HashiCorp ์Šคํ† ๋ฆฌ์ง€์™€ ํ•จ๊ป˜ GitLab 13.4๊ฐ€ ์ถœ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

MVP ์ด๋ฒˆ ๋‹ฌ - ํŒŒ๋น„์˜ค ํ›„์ €

ํŒŒ๋น„์˜ค๊ฐ€ ํฌ๊ฒŒ ๊ธฐ์—ฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ณตํ—Œ ะฒ ๋ณ‘ํ•ฉ ์š”์ฒญ ์ฐจ์ด์ ์— ์ฝ”๋“œ ์ ์šฉ ๋ฒ”์œ„ ํ‘œ์‹œ - GitLab ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ์˜ค๋žซ๋™์•ˆ ๊ธฐ๋‹ค๋ ค์˜จ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ์ด๋Š” GitLab ํŒ€ ๊ตฌ์„ฑ์›๊ณผ์˜ ์ง€์†์ ์ธ ํ˜‘์—…์ด ํ•„์š”ํ•˜๊ณ  UX, ํ”„๋ŸฐํŠธ์—”๋“œ ๋ฐ ๋ฐฑ์—”๋“œ์™€ ๊ฐ™์€ ํ”„๋กœ์ ํŠธ์˜ ์—ฌ๋Ÿฌ ์˜์—ญ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ์‚ฌ์†Œํ•œ ๋ณ€๊ฒฝ์— ๋Œ€ํ•œ ์ •๋ง ์ค‘์š”ํ•œ ๊ธฐ์—ฌ์ž…๋‹ˆ๋‹ค.

GitLab 13.4 ๋ฆด๋ฆฌ์Šค์˜ ์ฃผ์š” ๊ธฐ๋Šฅ

CI ์ž‘์—…์— HashiCorp Vault ํ‚ค ์‚ฌ์šฉ

(ํ”„๋ฆฌ๋ฏธ์—„, ์–ผํ‹ฐ๋ฐ‹, ์‹ค๋ฒ„, ๊ณจ๋“œ) DevOps ์ฃผ๊ธฐ ๋‹จ๊ณ„: ๋ฆด๋ฆฌ์Šค

๋ฆด๋ฆฌ์Šค 12.10์—์„œ GitLab์€ GitLab ์ž‘์—… ํ•ธ๋“ค๋Ÿฌ(GitLab ๋Ÿฌ๋„ˆ)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ CI ์ž‘์—…์— ๋Œ€ํ•œ ํ‚ค๋ฅผ ์ˆ˜์‹ ํ•˜๊ณ  ์ „์†กํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๋„์ž…ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ์šฐ๋ฆฌ๋Š” ํ™•์žฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค JWT๋ฅผ ์‚ฌ์šฉํ•œ ์ธ์ฆ, ์ƒˆ๋กœ์šด ๊ตฌ๋ฌธ ์ถ”๊ฐ€ secrets ํŒŒ์ผ๋กœ .gitlab-ci.yml. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด GitLab์—์„œ HashiCorp ์ €์žฅ์†Œ๋ฅผ ๋” ์‰ฝ๊ฒŒ ์„ค์ •ํ•˜๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

# CI ๋ณ€์ˆ˜ ๋ฐ Kubernetes Agent์šฉ HashiCorp ์Šคํ† ๋ฆฌ์ง€์™€ ํ•จ๊ป˜ GitLab 13.4๊ฐ€ ์ถœ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

ํ‚ค ์ž‘์—…์— ๋Œ€ํ•œ ๋ฌธ์„œ ะธ ์›๋ž˜ ํ‹ฐ์ผ“.

GitLab Kubernetes ์—์ด์ „ํŠธ ์†Œ๊ฐœ

(ํ”„๋ฆฌ๋ฏธ์—„, ์–ผํ‹ฐ๋ฐ‹) DevOps ์ฃผ๊ธฐ ๋‹จ๊ณ„: ๊ตฌ์„ฑ

Kubernetes์™€ GitLab์˜ ํ†ตํ•ฉ์„ ํ†ตํ•ด ์˜ค๋žซ๋™์•ˆ ์ˆ˜๋™ ๊ตฌ์„ฑ ์—†์ด Kubernetes ํด๋Ÿฌ์Šคํ„ฐ์— ๋ฐฐํฌํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•ด์กŒ์Šต๋‹ˆ๋‹ค. ๋งŽ์€ ์‚ฌ์šฉ์ž๊ฐ€ ์ด ๋ฒˆ๋“ค์˜ ์‚ฌ์šฉ ํŽธ์˜์„ฑ์„ ์ข‹์•„ํ–ˆ์ง€๋งŒ ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๋Š” ๋ช‡ ๊ฐ€์ง€ ์–ด๋ ค์›€์„ ๊ฒช์—ˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ํ†ตํ•ฉ์˜ ๊ฒฝ์šฐ GitLab์ด ํด๋Ÿฌ์Šคํ„ฐ์— ์•ก์„ธ์Šคํ•˜๋ ค๋ฉด ์ธํ„ฐ๋„ท์—์„œ ํด๋Ÿฌ์Šคํ„ฐ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋งŽ์€ ์กฐ์ง์—์„œ๋Š” ๋ณด์•ˆ, ๊ทœ์ • ์ค€์ˆ˜ ๋˜๋Š” ๊ทœ์ œ์ƒ์˜ ์ด์œ ๋กœ ํด๋Ÿฌ์Šคํ„ฐ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ์ œํ•œํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ œํ•œ ์‚ฌํ•ญ์„ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด ์‚ฌ์šฉ์ž๋Š” GitLab์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋„๊ตฌ๋ฅผ ๊ตฌ์ถ•ํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์ด ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์˜ค๋Š˜ ์šฐ๋ฆฌ๋Š” Kubernetes ํด๋Ÿฌ์Šคํ„ฐ์— ๋ฐฐํฌํ•˜๋Š” ์ƒˆ๋กœ์šด ๋ฐฉ๋ฒ•์ธ GitLab Kubernetes Agent๋ฅผ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค. ์—์ด์ „ํŠธ๋Š” ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด๋ถ€์—์„œ ์‹คํ–‰๋˜๋ฏ€๋กœ ์ „์ฒด ์ธํ„ฐ๋„ท์— ๋…ธ์ถœํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์—์ด์ „ํŠธ๋Š” GitLab์ด ํด๋Ÿฌ์Šคํ„ฐ์— ์—…๋ฐ์ดํŠธ๋ฅผ ํ‘ธ์‹œํ•˜๋Š” ๋Œ€์‹  GitLab์—์„œ ์ƒˆ๋กœ์šด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์š”์ฒญํ•˜์—ฌ ๋ฐฐํฌ๋ฅผ ์กฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ์–ด๋–ค GitOps ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋“  GitLab์ด ํ•ด๊ฒฐํ•ด ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ์—์ด์ „ํŠธ์˜ ์ฒซ ๋ฒˆ์งธ ๋ฆด๋ฆฌ์Šค๋ผ๋Š” ์ ์— ์œ ์˜ํ•˜์‹ญ์‹œ์˜ค. GitLab Kubernetes Agent์˜ ํ˜„์žฌ ์ดˆ์ ์€ ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด ๋ฐฐํฌ๋ฅผ ๊ตฌ์„ฑํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฐฐํฌ ๋ณด๋“œ ๋ฐ GitLab ๊ด€๋ฆฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ๊ฐ™์€ ์ผ๋ถ€ ๊ธฐ์กด Kubernetes ํ†ตํ•ฉ ๊ธฐ๋Šฅ์€ ์•„์ง ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ฐ€์ •ํ•œ๋‹ค์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์€ ๋ณด์•ˆ ๋ฐ ๊ทœ์ • ์ค€์ˆ˜์— ์ดˆ์ ์„ ๋งž์ถ˜ ์ƒˆ๋กœ์šด ํ†ตํ•ฉ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ํ–ฅํ›„ ๋ฆด๋ฆฌ์Šค์—์„œ ์—์ด์ „ํŠธ์— ์ถ”๊ฐ€๋  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

# CI ๋ณ€์ˆ˜ ๋ฐ Kubernetes Agent์šฉ HashiCorp ์Šคํ† ๋ฆฌ์ง€์™€ ํ•จ๊ป˜ GitLab 13.4๊ฐ€ ์ถœ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

GitLab Kubernetes ์—์ด์ „ํŠธ ๋ฌธ์„œ ะธ ์›๋ž˜ ํ‹ฐ์ผ“.

์ฝ”๋“œ ์•ก์„ธ์Šค ์—†์ด ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ฐฐํฌ ๊ถŒํ•œ ๋ถ€์—ฌ

(ํ”„๋ฆฌ๋ฏธ์—„, ์–ผํ‹ฐ๋ฐ‹, ์‹ค๋ฒ„, ๊ณจ๋“œ) DevOps ์ฃผ๊ธฐ ๋‹จ๊ณ„: ๋ฆด๋ฆฌ์Šค

์ด์ „์—๋Š” GitLab์˜ ๊ถŒํ•œ ์‹œ์Šคํ…œ์œผ๋กœ ์ธํ•ด ํŒ€ ๋‚ด์—์„œ ๊ฐœ๋ฐœ ๋‹ด๋‹น์ž์™€ ๋ฐฐํฌ ๋‹ด๋‹น์ž ๊ฐ„์— ์ฑ…์ž„์„ ์ ์ ˆํ•˜๊ฒŒ ๋‚˜๋ˆ„๊ธฐ๊ฐ€ ์–ด๋ ค์› ์Šต๋‹ˆ๋‹ค. GitLab 13.4๊ฐ€ ์ถœ์‹œ๋˜๋ฉด์„œ ๋ฐฐํฌ์šฉ ๋ณ‘ํ•ฉ ์š”์ฒญ์„ ์Šน์ธํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•  ์ˆ˜ ์žˆ์„ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๊ด€๋ฆฌ์ž ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜์ง€ ์•Š๊ณ ๋„ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์ง€ ์•Š๋Š” ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์‹ค์ œ๋กœ ์ฝ”๋“œ๋ฅผ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(GitLab "์œ ์ง€๊ด€๋ฆฌ์ž"์˜ ๋Ÿฌ์‹œ์•„์–ด ํ˜„์ง€ํ™”) ).

# CI ๋ณ€์ˆ˜ ๋ฐ Kubernetes Agent์šฉ HashiCorp ์Šคํ† ๋ฆฌ์ง€์™€ ํ•จ๊ป˜ GitLab 13.4๊ฐ€ ์ถœ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

ํ™˜๊ฒฝ ์ ‘๊ทผ ๋ฌธ์„œ ะธ ์˜ค๋ฆฌ์ง€๋„ ์„œ์‚ฌ์‹œ.

๋ณด์•ˆ ์„ผํ„ฐ

(๊ถ๊ทน๊ธฐ, ๊ณจ๋“œ) DevOps ์ฃผ๊ธฐ ๋‹จ๊ณ„: ๋ณด์•ˆ

์ด์ „์—๋Š” ์ธ์Šคํ„ด์Šค ์ˆ˜์ค€ ์ทจ์•ฝ์„ฑ ๊ด€๋ฆฌ๊ฐ€ ๊ธฐ๋Šฅ๊ณผ ์œ ์—ฐ์„ฑ ๋ชจ๋‘์—์„œ ์ œํ•œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์ทจ์•ฝ์ , ์ธก์ •ํ•ญ๋ชฉ ๊ทธ๋ž˜ํ”„, ์„ค์ •์— ๋Œ€ํ•œ ์„ธ๋ถ€์ •๋ณด๊ฐ€ ๊ฒฐํ•ฉ๋œ ๋‹จ์ผ ํŽ˜์ด์ง€์˜€์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์„ ๊ฐœ๋ฐœํ•˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ๋ณด์•ˆ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์—ฌ์ง€๊ฐ€ ๋งŽ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

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

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

# CI ๋ณ€์ˆ˜ ๋ฐ Kubernetes Agent์šฉ HashiCorp ์Šคํ† ๋ฆฌ์ง€์™€ ํ•จ๊ป˜ GitLab 13.4๊ฐ€ ์ถœ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ธ์Šคํ„ด์Šค ๋ณด์•ˆ ์„ผํ„ฐ ๋ฌธ์„œ ะธ ์˜ค๋ฆฌ์ง€๋„ ์„œ์‚ฌ์‹œ.

์ด์ œ ์ „ํ™˜ ๊ฐ€๋Šฅํ•œ ๊ธฐ๋Šฅ์ด GitLab Starter์— ์žˆ์Šต๋‹ˆ๋‹ค.

(์Šคํƒ€ํ„ฐ, ํ”„๋ฆฌ๋ฏธ์—„, ์–ผํ‹ฐ๋ฉ”์ดํŠธ, ๋ธŒ๋ก ์ฆˆ, ์‹ค๋ฒ„, ๊ณจ๋“œ) DevOps ์ฃผ๊ธฐ ๋‹จ๊ณ„: ๋ฆด๋ฆฌ์Šค

GitLab 11.4๊ฐ€ ์ถœ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ „ํ™˜ ๊ฐ€๋Šฅํ•œ ๊ธฐ๋Šฅ์˜ ์•ŒํŒŒ ๋ฒ„์ „. 12.2์—์„œ๋Š” ์ด๋ฅผ ์œ„ํ•œ ์ „๋žต์„ ๋„์ž…ํ–ˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ๋น„์œจ ะธ ์‚ฌ์šฉ์ž ID๋ณ„, ๊ทธ๋ฆฌ๊ณ  13.1์—์„œ๋Š” ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค ์‚ฌ์šฉ์ž ๋ชฉ๋ก ะธ ์ „๋žต ์ˆ˜๋ฆฝ ๋‹ค์–‘ํ•œ ํ™˜๊ฒฝ์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.

์˜ฌํ•ด ์ดˆ GitLab์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์•ฝ์†์„ ํ–ˆ์Šต๋‹ˆ๋‹ค. 18๊ฐ€์ง€ ๊ธฐ๋Šฅ ์ด๋™ ์˜คํ”ˆ์†Œ์Šค๋กœ. ์ด๋ฒˆ ๋ฆด๋ฆฌ์Šค์—์„œ๋Š” ์ „ํ™˜ ๊ฐ€๋Šฅํ•œ ๊ธฐ๋Šฅ์„ ์Šคํƒ€ํ„ฐ ํ”Œ๋žœ์œผ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋Š” ์ž‘์—…์„ ์™„๋ฃŒํ–ˆ์œผ๋ฉฐ ์•ž์œผ๋กœ๋„ ๊ณ„์†ํ•ด์„œ Core๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค. ๊นƒ๋žฉ 13.5. ๋” ๋งŽ์€ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ด ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๊ฒŒ ๋˜์–ด ๊ธฐ์˜๊ฒŒ ์ƒ๊ฐํ•˜๋ฉฐ, ์ด ๊ธฐ๋Šฅ์„ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜๋Š”์ง€ ๋“ฃ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์ „ํ™˜ ๊ฐ€๋Šฅํ•œ ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ๋ฌธ์„œ ะธ ์›๋ž˜ ํ‹ฐ์ผ“.

๊ฒ€์ƒ‰์ฐฝ์„ ํ†ตํ•œ ๋น ๋ฅธ ํƒ์ƒ‰

(์ฝ”์–ด, ์Šคํƒ€ํ„ฐ, ํ”„๋ฆฌ๋ฏธ์—„, ์–ผํ‹ฐ๋ฉ”์ดํŠธ, ๋ฌด๋ฃŒ, ๋ธŒ๋ก ์ฆˆ, ์‹ค๋ฒ„, ๊ณจ๋“œ) ๊ฐ€์šฉ์„ฑ

๋•Œ๋กœ๋Š” GitLab์„ ํƒ์ƒ‰ํ•  ๋•Œ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ ํŽ˜์ด์ง€๊ฐ€ ์•„๋‹Œ ํŠน์ • ํ”„๋กœ์ ํŠธ๋กœ ๋ฐ”๋กœ ์ด๋™ํ•˜๊ณ  ์‹ถ์„ ๋•Œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ธ€๋กœ๋ฒŒ ๊ฒ€์ƒ‰์ฐฝ์„ ์‚ฌ์šฉํ•˜๋ฉด ์ตœ์‹  ํ‹ฐ์ผ“, ๊ทธ๋ฃน, ํ”„๋กœ์ ํŠธ, ์„ค์ • ๋ฐ ๋„์›€๋ง ํ•ญ๋ชฉ์œผ๋กœ ๋น ๋ฅด๊ฒŒ ์ด๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹จ์ถ•ํ‚ค๋ฅผ ์‚ฌ์šฉํ•ด๋„ ๋ฉ๋‹ˆ๋‹ค /GitLab์„ ๋”์šฑ ํšจ์œจ์ ์œผ๋กœ ํƒ์ƒ‰ํ•˜๋ ค๋ฉด ์ปค์„œ๋ฅผ ๊ฒ€์ƒ‰ ์ฐฝ์œผ๋กœ ์ด๋™ํ•˜์„ธ์š”!

# CI ๋ณ€์ˆ˜ ๋ฐ Kubernetes Agent์šฉ HashiCorp ์Šคํ† ๋ฆฌ์ง€์™€ ํ•จ๊ป˜ GitLab 13.4๊ฐ€ ์ถœ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ž๋™ ์™„์„ฑ ๋ฌธ์„œ ๊ฒ€์ƒ‰ ะธ ์›๋ž˜ ํ‹ฐ์ผ“.

๋ณ‘ํ•ฉ ์š”์ฒญ ์ฐจ์ด์ ์˜ ์ฝ”๋“œ ์ ์šฉ ๋ฒ”์œ„ ํ‘œ์‹œ

(์ฝ”์–ด, ์Šคํƒ€ํ„ฐ, ํ”„๋ฆฌ๋ฏธ์—„, ์–ผํ‹ฐ๋ฉ”์ดํŠธ, ๋ฌด๋ฃŒ, ๋ธŒ๋ก ์ฆˆ, ์‹ค๋ฒ„, ๊ณจ๋“œ) DevOps ์ฃผ๊ธฐ ๋‹จ๊ณ„: ์ƒ์„ฑ

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

์ด์ œ ๋ณ‘ํ•ฉ ์š”์ฒญ ์ฐจ์ด์ ์„ ๋ณผ ๋•Œ ์ฝ”๋“œ ์ ์šฉ ๋ฒ”์œ„๊ฐ€ ์‹œ๊ฐ์ ์œผ๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ํ‘œ์‹œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ณ€๊ฒฝ๋œ ์ฝ”๋“œ๊ฐ€ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ์— ํฌํ•จ๋˜๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ๋น ๋ฅด๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ฝ”๋“œ ๊ฒ€ํ†  ์†๋„๋ฅผ ๋†’์ด๊ณ  ์ƒˆ ์ฝ”๋“œ๋ฅผ ๋ณ‘ํ•ฉ ๋ฐ ๋ฐฐํฌํ•˜๋Š” ์‹œ๊ฐ„์„ ๋‹จ์ถ•ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

๊ฐ์‚ฌ ํŒŒ๋น„์˜ค ํ›„์ € ์ด ๊ธฐ๋Šฅ์„ ์œ„ํ•ด Siemens๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค!

# CI ๋ณ€์ˆ˜ ๋ฐ Kubernetes Agent์šฉ HashiCorp ์Šคํ† ๋ฆฌ์ง€์™€ ํ•จ๊ป˜ GitLab 13.4๊ฐ€ ์ถœ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

ํ…Œ์ŠคํŠธ๋ณ„ ์ฝ”๋“œ ์ ์šฉ ๋ฒ”์œ„ ํ‘œ์‹œ์— ๋Œ€ํ•œ ๋ฌธ์„œ ะธ ์›๋ž˜ ํ‹ฐ์ผ“.

ํ™˜๊ฒฝ ํŒจ๋„์˜ ๋” ๋งŽ์€ ํ™˜๊ฒฝ ๋ฐ ํ”„๋กœ์ ํŠธ

(ํ”„๋ฆฌ๋ฏธ์—„, ์–ผํ‹ฐ๋ฐ‹, ์‹ค๋ฒ„, ๊ณจ๋“œ) DevOps ์ฃผ๊ธฐ ๋‹จ๊ณ„: ๋ฆด๋ฆฌ์Šค

GitLab 12.5 ์ถœ์‹œ ์ดํ›„ ํ™˜๊ฒฝ ํŒจ๋„ ํ™˜๊ฒฝ ์ƒํƒœ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•  ์ˆ˜ ์žˆ์ง€๋งŒ 13.4๊ฐœ ํ”„๋กœ์ ํŠธ์—์„œ XNUMX๊ฐœ ์ดํ•˜์˜ ํ™˜๊ฒฝ๋งŒ ๋ชจ๋‹ˆํ„ฐ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฆด๋ฆฌ์Šค XNUMX์—์„œ๋Š” ํ™˜๊ฒฝ์„ ๋Œ€๊ทœ๋ชจ๋กœ ์œ ์ง€ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋„๋ก ํŽ˜์ด์ง€๋ฅผ ๋งค๊ฒจ ์ด ํŒจ๋„์„ ๊ฐœ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ๋” ๋งŽ์€ ํ”„๋กœ์ ํŠธ์—์„œ ๋” ๋งŽ์€ ํ™˜๊ฒฝ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

# CI ๋ณ€์ˆ˜ ๋ฐ Kubernetes Agent์šฉ HashiCorp ์Šคํ† ๋ฆฌ์ง€์™€ ํ•จ๊ป˜ GitLab 13.4๊ฐ€ ์ถœ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

ํ™˜๊ฒฝ ํŒจ๋„ ๋ฌธ์„œ ะธ ์›๋ž˜ ํ‹ฐ์ผ“.

GitLab์€ GitLab Terraform ๊ณต๊ธ‰์ž๋ฅผ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค.

(์ฝ”์–ด, ์Šคํƒ€ํ„ฐ, ํ”„๋ฆฌ๋ฏธ์—„, ์–ผํ‹ฐ๋ฉ”์ดํŠธ, ๋ฌด๋ฃŒ, ๋ธŒ๋ก ์ฆˆ, ์‹ค๋ฒ„, ๊ณจ๋“œ) DevOps ์ฃผ๊ธฐ ๋‹จ๊ณ„: ๊ตฌ์„ฑ

์šฐ๋ฆฌ๋Š” ์ตœ๊ทผ GitLab Terraform ๊ณต๊ธ‰์ž์— ๋Œ€ํ•œ ๊ด€๋ฆฌ์ž ๊ถŒํ•œ์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ณ„ํš์„ ์„ธ์šฐ๋‹ค ํ–ฅํ›„ ๋ฆด๋ฆฌ์Šค์—์„œ ๊ฐœ์„ . ์ง€๋‚œ ํ•œ ๋‹ฌ ๋™์•ˆ ์šฐ๋ฆฌ๋Š” ์˜ค๋ž˜๋œ ๋ฒ„๊ทธ์™€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ˆ„๋ฝ๋œ ๊ธฐ๋Šฅ์„ ํฌํ•จํ•˜์—ฌ 21๊ฐœ์˜ ๋ณ‘ํ•ฉ ์š”์ฒญ์„ ์ˆ˜๋ฝํ•˜๊ณ  31๊ฐœ์˜ ํ‹ฐ์ผ“์„ ๋งˆ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. ์ธ์Šคํ„ด์Šค ํด๋Ÿฌ์Šคํ„ฐ ์ง€์›. ๋‹น์‹ ์€ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค GitLab Terraform ๊ณต๊ธ‰์ž์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด์„ธ์š”. Terraform ๋ฌธ์„œ์—์„œ.

# CI ๋ณ€์ˆ˜ ๋ฐ Kubernetes Agent์šฉ HashiCorp ์Šคํ† ๋ฆฌ์ง€์™€ ํ•จ๊ป˜ GitLab 13.4๊ฐ€ ์ถœ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

GitLab Terraform ๊ณต๊ธ‰์ž ๋ฌธ์„œ ะธ ์›๋ž˜ ํ‹ฐ์ผ“.

OpenAPI ์‚ฌ์–‘ ๋˜๋Š” HAR ํŒŒ์ผ์„ ์‚ฌ์šฉํ•œ ํผ์ง• API ํ…Œ์ŠคํŠธ

(๊ถ๊ทน๊ธฐ, ๊ณจ๋“œ) DevOps ์ฃผ๊ธฐ ๋‹จ๊ณ„: ๋ณด์•ˆ

API ํผ์ง• ํ…Œ์ŠคํŠธ๋Š” ๋‹ค๋ฅธ ์Šค์บ๋„ˆ์™€ ํ…Œ์ŠคํŠธ ๋ฐฉ๋ฒ•์ด ๋†“์น  ์ˆ˜ ์žˆ๋Š” ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ API์˜ ๋ฒ„๊ทธ์™€ ์ทจ์•ฝ์„ฑ์„ ์ฐพ๋Š” ์ข‹์€ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

GitLab์˜ API ํผ์ง• ํ…Œ์ŠคํŠธ๋ฅผ ํ†ตํ•ด ๋‹ค์Œ์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. OpenAPI v2 ์‚ฌ์–‘ ๋˜๋Š” HAR ํŒŒ์ผ ๊ทธ๋Ÿฐ ๋‹ค์Œ ๊ทน๋‹จ์ ์ธ ์‚ฌ๋ก€๋ฅผ ํ…Œ์ŠคํŠธํ•˜๊ณ  ๋ฒ„๊ทธ๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด ์„ค๊ณ„๋œ ๋ฌด์ž‘์œ„ ์ž…๋ ฅ ๋ฐ์ดํ„ฐ๋ฅผ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ๋Š” ํŒŒ์ดํ”„๋ผ์ธ ๋‚ด์—์„œ ์ฆ‰์‹œ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์šฐ๋ฆฌ์˜ ์ฒซ ๋ฒˆ์งธ API ํผ์ง€ ํ…Œ์ŠคํŠธ ๋ฆด๋ฆฌ์Šค์ด๋ฉฐ ์—ฌ๋Ÿฌ๋ถ„์˜ ์ƒ๊ฐ์„ ๋“ฃ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ํผ์ฆˆ ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•œ ์žฌ๊ณ ๊ฐ€ ๋” ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋งŽ์€ ์•„์ด๋””์–ด, ์ด ๊ธฐ๋Šฅ์˜ ์ถœ์‹œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

API ํผ์ง• ํ…Œ์ŠคํŠธ ๋ฌธ์„œ ะธ ์˜ค๋ฆฌ์ง€๋„ ์„œ์‚ฌ์‹œ.

์ธก์ •ํ•ญ๋ชฉ ํŒจ๋„์—์„œ ์ƒˆ ๊ทธ๋ž˜ํ”„ ๋ฏธ๋ฆฌ๋ณด๊ธฐ

(์ฝ”์–ด, ์Šคํƒ€ํ„ฐ, ํ”„๋ฆฌ๋ฏธ์—„, ์–ผํ‹ฐ๋ฉ”์ดํŠธ, ๋ฌด๋ฃŒ, ๋ธŒ๋ก ์ฆˆ, ์‹ค๋ฒ„, ๊ณจ๋“œ) DevOps ์ฃผ๊ธฐ ๋‹จ๊ณ„: ๋ชจ๋‹ˆํ„ฐ๋ง

์ด์ „์—๋Š” GitLab์˜ ์ง€ํ‘œ ๋Œ€์‹œ๋ณด๋“œ์—์„œ ๊ทธ๋ž˜ํ”„๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ด ์‰ฌ์šด ์ž‘์—…์ด ์•„๋‹ˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๋Œ€์‹œ๋ณด๋“œ YAML ํŒŒ์ผ์—์„œ ์ง€ํ‘œ๋ฅผ ์ƒ์„ฑํ•œ ํ›„ ๋‹ค์Œ์„ ๋ณ€๊ฒฝํ–ˆ์Šต๋‹ˆ๋‹ค. master, ์ƒˆ๋กœ ์ƒ์„ฑ๋œ ๊ทธ๋ž˜ํ”„๊ฐ€ ํ•„์š”ํ•œ ๋Œ€๋กœ ์ •ํ™•ํžˆ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ๋ฆด๋ฆฌ์Šค๋ถ€ํ„ฐ ๊ทธ๋ž˜ํ”„๋ฅผ ์ƒ์„ฑํ•˜๋ฉด์„œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋ฏธ๋ฆฌ ๋ณด๊ณ  ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋Œ€์‹œ๋ณด๋“œ YAML ํŒŒ์ผ๋กœ ๋ณด๋‚ด๊ธฐ ์ „์— ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํŒจ๋„์— ์ƒˆ ๊ทธ๋ž˜ํ”„๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์„ค๋ช…์„œ ะธ ์›๋ž˜ ํ‹ฐ์ผ“.

๊ทธ๋ฃน ๋‚ด ๋ชจ๋“  ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ ํ…Œ์ŠคํŠธ๋ณ„ ์ฝ”๋“œ ์ปค๋ฒ„๋ฆฌ์ง€ ๋ฐ์ดํ„ฐ

(ํ”„๋ฆฌ๋ฏธ์—„, ์–ผํ‹ฐ๋ฐ‹, ์‹ค๋ฒ„, ๊ณจ๋“œ) DevOps ์ฃผ๊ธฐ ๋‹จ๊ณ„: ํ™•์ธ

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

๋ฆด๋ฆฌ์Šค 13.4์—์„œ๋Š” ์‰ฝ๊ณ  ๋น ๋ฅด๊ฒŒ ์กฐ๋ฆฝ์ด ๊ฐ€๋Šฅํ•ด์กŒ์Šต๋‹ˆ๋‹ค. .csv ๊ทธ๋ฃน์˜ ๋ชจ๋“  ํ”„๋กœ์ ํŠธ ๋˜๋Š” ์„ ํƒํ•œ ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ ์ฝ”๋“œ ์ ์šฉ ๋ฒ”์œ„์— ๋Œ€ํ•œ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ํŒŒ์ผ๋กœ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์€ MVC์ด๋ฉฐ ๋‹ค์Œ ๊ธฐ๋Šฅ์ด ๋’ค๋”ฐ๋ฆ…๋‹ˆ๋‹ค. ์‹œ๊ฐ„ ๊ฒฝ๊ณผ์— ๋”ฐ๋ฅธ ํ‰๊ท  ์ ์šฉ ๋ฒ”์œ„๋ฅผ ํ”Œ๋กฏํ•ฉ๋‹ˆ๋‹ค..

# CI ๋ณ€์ˆ˜ ๋ฐ Kubernetes Agent์šฉ HashiCorp ์Šคํ† ๋ฆฌ์ง€์™€ ํ•จ๊ป˜ GitLab 13.4๊ฐ€ ์ถœ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ €์žฅ์†Œ ๋ถ„์„ ๋ฌธ์„œ ะธ ์›๋ž˜ ํ‹ฐ์ผ“.

์ „์ฒด ํผ์ง€ ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•œ ์ƒˆ๋กœ์šด ์–ธ์–ด ์ง€์›

(๊ถ๊ทน๊ธฐ, ๊ณจ๋“œ) DevOps ์ฃผ๊ธฐ ๋‹จ๊ณ„: ๋ณด์•ˆ

์ด๋ฒˆ ๋ฆด๋ฆฌ์Šค์—์„œ๋Š” ์ „์ฒด ๋ฒ”์œ„๋ฅผ ๋ชฉํ‘œ๋กœ ํ•˜๋Š” ํผ์ง€ ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•œ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์ƒˆ๋กœ์šด ์–ธ์–ด์— ๋Œ€ํ•œ ์ง€์›์ด ๋„์ž…๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ด์ œ Java, Rust ๋ฐ Swift ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ํผ์ง• ํ…Œ์ŠคํŠธ์˜ ์ „์ฒด ๊ธฐ๋Šฅ์„ ํ‰๊ฐ€ํ•˜๊ณ  ๋‹ค๋ฅธ ์Šค์บ๋„ˆ ๋ฐ ํ…Œ์ŠคํŠธ ๋ฐฉ๋ฒ•์—์„œ ๋†“์น  ์ˆ˜ ์žˆ๋Š” ์˜ค๋ฅ˜์™€ ์ทจ์•ฝ์ ์„ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

# CI ๋ณ€์ˆ˜ ๋ฐ Kubernetes Agent์šฉ HashiCorp ์Šคํ† ๋ฆฌ์ง€์™€ ํ•จ๊ป˜ GitLab 13.4๊ฐ€ ์ถœ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

ํผ์ง€ ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•ด ์ง€์›๋˜๋Š” ์–ธ์–ด์— ๋Œ€ํ•œ ๋ฌธ์„œ ะธ ์˜ค๋ฆฌ์ง€๋„ ์„œ์‚ฌ์‹œ.

๊ธฐ๋ณธ ํ™˜๊ฒฝ ํŽ˜์ด์ง€์˜ ๊ฒฝ๊ณ 

(ํ”„๋ฆฌ๋ฏธ์—„, ์–ผํ‹ฐ๋ฐ‹, ์‹ค๋ฒ„, ๊ณจ๋“œ) DevOps ์ฃผ๊ธฐ ๋‹จ๊ณ„: ๋ฆด๋ฆฌ์Šค

ํ™˜๊ฒฝ ํŽ˜์ด์ง€์—๋Š” ํ™˜๊ฒฝ์˜ ์ „๋ฐ˜์ ์ธ ์ƒํƒœ๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฒˆ ๋ฆด๋ฆฌ์Šค์—์„œ๋Š” ๊ฒฝ๊ณ  ํ‘œ์‹œ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ์ด ํŽ˜์ด์ง€๋ฅผ ๊ฐœ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ™˜๊ฒฝ ์ƒํƒœ์™€ ํ•จ๊ป˜ ํŠธ๋ฆฌ๊ฑฐ๋œ ๊ฒฝ๊ณ ๋Š” ๋ฐœ์ƒํ•˜๋Š” ์ƒํ™ฉ์„ ์ˆ˜์ •ํ•˜๊ธฐ ์œ„ํ•ด ์‹ ์†ํ•˜๊ฒŒ ์กฐ์น˜๋ฅผ ์ทจํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

# CI ๋ณ€์ˆ˜ ๋ฐ Kubernetes Agent์šฉ HashiCorp ์Šคํ† ๋ฆฌ์ง€์™€ ํ•จ๊ป˜ GitLab 13.4๊ฐ€ ์ถœ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

ํ™˜๊ฒฝ์˜ ์ตœ์‹  ๊ฒฝ๊ณ ๋ฅผ ๋ณด๊ธฐ ์œ„ํ•œ ์„ค๋ช…์„œ ะธ ์›๋ž˜ ํ‹ฐ์ผ“.

์ด์ œ ์ค‘์ฒฉ๋œ ํŒŒ์ดํ”„๋ผ์ธ์ด ์ž์ฒด ์ค‘์ฒฉ ํŒŒ์ดํ”„๋ผ์ธ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

(์ฝ”์–ด, ์Šคํƒ€ํ„ฐ, ํ”„๋ฆฌ๋ฏธ์—„, ์–ผํ‹ฐ๋ฉ”์ดํŠธ, ๋ฌด๋ฃŒ, ๋ธŒ๋ก ์ฆˆ, ์‹ค๋ฒ„, ๊ณจ๋“œ) DevOps ์ฃผ๊ธฐ ๋‹จ๊ณ„: ํ™•์ธ

์ค‘์ฒฉ๋œ ํŒŒ์ดํ”„๋ผ์ธ์„ ์‚ฌ์šฉํ•˜๋ฉด ์ด์ œ ํ•˜์œ„ ํŒŒ์ดํ”„๋ผ์ธ ๋‚ด์—์„œ ์ƒˆ ํŒŒ์ดํ”„๋ผ์ธ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€๋ณ€์ ์ธ ์ˆ˜์˜ ํŒŒ์ดํ”„๋ผ์ธ์„ ์ƒ์„ฑํ•˜๋Š” ์œ ์—ฐ์„ฑ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์ถ”๊ฐ€ ์ˆ˜์ค€์˜ ๊นŠ์ด๊ฐ€ ์œ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

# CI ๋ณ€์ˆ˜ ๋ฐ Kubernetes Agent์šฉ HashiCorp ์Šคํ† ๋ฆฌ์ง€์™€ ํ•จ๊ป˜ GitLab 13.4๊ฐ€ ์ถœ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ค‘์ฒฉ๋œ ํŒŒ์ดํ”„๋ผ์ธ ๋ฌธ์„œ ะธ ์›๋ž˜ ํ‹ฐ์ผ“.

์ƒ์œ„ ํŒŒ์ดํ”„๋ผ์ธ๊ณผ ์ค‘์ฒฉ ํŒŒ์ดํ”„๋ผ์ธ ๊ฐ„์˜ ํ–ฅ์ƒ๋œ ํƒ์ƒ‰

(์ฝ”์–ด, ์Šคํƒ€ํ„ฐ, ํ”„๋ฆฌ๋ฏธ์—„, ์–ผํ‹ฐ๋ฉ”์ดํŠธ, ๋ฌด๋ฃŒ, ๋ธŒ๋ก ์ฆˆ, ์‹ค๋ฒ„, ๊ณจ๋“œ) DevOps ์ฃผ๊ธฐ ๋‹จ๊ณ„: ํ™•์ธ

์ด์ „์—๋Š” ์ƒ์œ„ ํŒŒ์ดํ”„๋ผ์ธ๊ณผ ์ค‘์ฒฉ ํŒŒ์ดํ”„๋ผ์ธ ์‚ฌ์ด๋ฅผ ํƒ์ƒ‰ํ•˜๋Š” ๊ฒƒ์ด ๊ทธ๋ฆฌ ํŽธ๋ฆฌํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์›ํ•˜๋Š” ํŒŒ์ดํ”„๋ผ์ธ์— ๋„๋‹ฌํ•˜๋ ค๋ฉด ๋งŽ์€ ํด๋ฆญ์ด ํ•„์š”ํ–ˆ์Šต๋‹ˆ๋‹ค. ์–ด๋–ค ์ž‘์—…์ด ํŒŒ์ดํ”„๋ผ์ธ์„ ์‹œ์ž‘ํ–ˆ๋Š”์ง€ ํŒŒ์•…ํ•˜๋Š” ๊ฒƒ๋„ ์‰ฝ์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ด์ œ ์ƒ์œ„ ํŒŒ์ดํ”„๋ผ์ธ๊ณผ ์ค‘์ฒฉ ํŒŒ์ดํ”„๋ผ์ธ ๊ฐ„์˜ ์—ฐ๊ฒฐ์„ ํ›จ์”ฌ ์‰ฝ๊ฒŒ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

# CI ๋ณ€์ˆ˜ ๋ฐ Kubernetes Agent์šฉ HashiCorp ์Šคํ† ๋ฆฌ์ง€์™€ ํ•จ๊ป˜ GitLab 13.4๊ฐ€ ์ถœ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ค‘์ฒฉ๋œ ํŒŒ์ดํ”„๋ผ์ธ ๋ฌธ์„œ ะธ ์›๋ž˜ ํ‹ฐ์ผ“.

๋ณ‘๋ ฌ ํ–‰๋ ฌ ์ž‘์—…์€ ์ง์œ„์— ๊ด€๋ จ ๋ณ€์ˆ˜๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

(์ฝ”์–ด, ์Šคํƒ€ํ„ฐ, ํ”„๋ฆฌ๋ฏธ์—„, ์–ผํ‹ฐ๋ฉ”์ดํŠธ, ๋ฌด๋ฃŒ, ๋ธŒ๋ก ์ฆˆ, ์‹ค๋ฒ„, ๊ณจ๋“œ) DevOps ์ฃผ๊ธฐ ๋‹จ๊ณ„: ํ™•์ธ

์‚ฌ์šฉํ•œ ๊ฒฝ์šฐ ์ž‘์—… ๋งคํŠธ๋ฆญ์Šค, ์ž‘์—… ์ด๋ฆ„์ด ๋‹ค์Œ๊ณผ ๊ฐ™๊ธฐ ๋•Œ๋ฌธ์— ํŠน์ • ์ž‘์—…์— ์–ด๋–ค ํ–‰๋ ฌ ๋ณ€์ˆ˜๊ฐ€ ์‚ฌ์šฉ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ๊ฐ€ ์–ด๋ ต๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. matrix 1/4. ๋ฆด๋ฆฌ์Šค 13.4์—์„œ๋Š” ์ผ๋ฐ˜ ์ž‘์—… ์ด๋ฆ„ ๋Œ€์‹  ํ•ด๋‹น ์ž‘์—…์— ์‚ฌ์šฉ๋œ ๊ด€๋ จ ๋ณ€์ˆ˜ ๊ฐ’์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด x86 ์•„ํ‚คํ…์ฒ˜๋ฅผ ๋””๋ฒ„๊น…ํ•˜๋Š” ๊ฒƒ์ด ๋ชฉํ‘œ๋ผ๋ฉด ์ž‘์—…์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค. matrix: debug x86.

# CI ๋ณ€์ˆ˜ ๋ฐ Kubernetes Agent์šฉ HashiCorp ์Šคํ† ๋ฆฌ์ง€์™€ ํ•จ๊ป˜ GitLab 13.4๊ฐ€ ์ถœ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋ณ‘๋ ฌ ๋งคํŠธ๋ฆญ์Šค ์ž‘์—…์— ๋Œ€ํ•œ ๋ฌธ์„œ ะธ ์›๋ž˜ ํ‹ฐ์ผ“.

GitLab 13.4์˜ ๊ธฐํƒ€ ๊ฐœ์„  ์‚ฌํ•ญ

Atlassian ๊ณ„์ • ์—ฐ๊ฒฐ

(์ฝ”์–ด, ์Šคํƒ€ํ„ฐ, ํ”„๋ฆฌ๋ฏธ์—„, ์–ผํ‹ฐ๋ฐ‹) DevOps ์ฃผ๊ธฐ ๋‹จ๊ณ„: ๊ด€๋ฆฌ

์ด์ œ GitLab ์‚ฌ์šฉ์ž๋Š” GitLab ๊ณ„์ •์„ Atlassian Cloud ๊ณ„์ •์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด Atlassian ์ž๊ฒฉ ์ฆ๋ช…์œผ๋กœ GitLab์— ๋กœ๊ทธ์ธํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ํ–ฅํ›„ ํ†ตํ•ฉ ๊ฐœ์„ ์„ ์œ„ํ•œ ํ† ๋Œ€๊ฐ€ ๋งˆ๋ จ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. Jira๊ฐ€ ํฌํ•จ๋œ Gitlab Atlassian ๋ผ์ธ์˜ ๋‹ค๋ฅธ ์ œํ’ˆ๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

# CI ๋ณ€์ˆ˜ ๋ฐ Kubernetes Agent์šฉ HashiCorp ์Šคํ† ๋ฆฌ์ง€์™€ ํ•จ๊ป˜ GitLab 13.4๊ฐ€ ์ถœ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

Atlassian ํ†ตํ•ฉ ๋ฌธ์„œ ะธ ์›๋ž˜ ํ‹ฐ์ผ“.

๋ชจ๋“  ๋ณ‘ํ•ฉ ์ปค๋ฐ‹ ๋ชฉ๋ก ๋‚ด๋ณด๋‚ด๊ธฐ

(๊ถ๊ทน๊ธฐ, ๊ณจ๋“œ) DevOps ์ฃผ๊ธฐ ๋‹จ๊ณ„: ๊ด€๋ฆฌ

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

์ด์ œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹์œผ๋กœ ์ด ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•˜๊ณ  ๋‚ด๋ณด๋‚ด ๊ฐ์‚ฌ ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ถฉ์กฑํ•˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ๋ถ„์„์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ๊ทธ๋ฃน์˜ ๋ชจ๋“  ๋ณ‘ํ•ฉ ์ปค๋ฐ‹ ๋ชฉ๋ก์„ ๋‚ด๋ณด๋‚ด๋ ค๋ฉด ๋‹ค์Œ์œผ๋กœ ์ด๋™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทœ์ • ์ค€์ˆ˜ ๋Œ€์‹œ๋ณด๋“œ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜์‹ญ์‹œ์˜ค ๋ชจ๋“  ๋ณ‘ํ•ฉ ์ปค๋ฐ‹ ๋ชฉ๋ก. ๊ฒฐ๊ณผ ํŒŒ์ผ์—๋Š” ๋ณ‘ํ•ฉ ์š”์ฒญ์˜ ๋ชจ๋“  ์ปค๋ฐ‹, ํ•ด๋‹น ์ž‘์„ฑ์ž, ๊ด€๋ จ ๋ณ‘ํ•ฉ ์š”์ฒญ์˜ ID, ๊ทธ๋ฃน, ํ”„๋กœ์ ํŠธ, ํ™•์ธ์ž ๋ฐ ๊ธฐํƒ€ ์ •๋ณด๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

# CI ๋ณ€์ˆ˜ ๋ฐ Kubernetes Agent์šฉ HashiCorp ์Šคํ† ๋ฆฌ์ง€์™€ ํ•จ๊ป˜ GitLab 13.4๊ฐ€ ์ถœ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋ณด๊ณ ์„œ ์ž‘์„ฑ์„ ์œ„ํ•œ ๋ฌธ์„œ ะธ ์›๋ž˜ ํ‹ฐ์ผ“.

API๋ฅผ ํ†ตํ•ด ๊ฐœ์ธ ์•ก์„ธ์Šค ํ† ํฐ ๋‚˜์—ด ๋ฐ ๊ด€๋ฆฌ

(๊ถ๊ทน๊ธฐ, ๊ณจ๋“œ) DevOps ์ฃผ๊ธฐ ๋‹จ๊ณ„: ๊ด€๋ฆฌ

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

GitLab API์— ๋Œ€ํ•œ ์ด๋Ÿฌํ•œ ๊ฐœ์„  ์‚ฌํ•ญ์„ ํ†ตํ•ด ์‚ฌ์šฉ์ž๋Š” ์ž์‹ ์˜ ๊ฐœ์ธ ์•ก์„ธ์Šค ํ† ํฐ์„ ๋‚˜์—ดํ•˜๊ณ  ์ทจ์†Œํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ด€๋ฆฌ์ž๋Š” ์‚ฌ์šฉ์ž์˜ ํ† ํฐ์„ ๋‚˜์—ดํ•˜๊ณ  ์ทจ์†Œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ๊ด€๋ฆฌ์ž๋Š” ์ž์‹ ์˜ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” ์‚ฌ๋žŒ์„ ํ™•์ธํ•˜๊ณ , ์‚ฌ์šฉ์ž ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์•ก์„ธ์Šค ๊ฒฐ์ •์„ ๋‚ด๋ฆฌ๊ณ , ์†์ƒ๋˜์—ˆ์„ ์ˆ˜ ์žˆ๊ฑฐ๋‚˜ ํšŒ์‚ฌ์˜ ์•ก์„ธ์Šค ๊ด€๋ฆฌ ์ •์ฑ…์„ ๋ฒ—์–ด๋‚˜๋Š” ๊ฐœ์ธ ์•ก์„ธ์Šค ํ† ํฐ์„ ์ทจ์†Œํ•˜๋Š” ๊ฒƒ์ด ๋” ์‰ฌ์›Œ์กŒ์Šต๋‹ˆ๋‹ค.

๊ฐœ์ธ ์•ก์„ธ์Šค ํ† ํฐ ๋ฌธ์„œ ะธ ์›๋ž˜ ํ‹ฐ์ผ“.

๊ด€๋ จ ๋ฌธ์ œ ๋ฐ ๊ธฐํƒ€ ๊ธฐ๋Šฅ์ด ์ด์ œ GitLab Core์— ์žˆ์Šต๋‹ˆ๋‹ค.

(์ฝ”์–ด, ์Šคํƒ€ํ„ฐ, ํ”„๋ฆฌ๋ฏธ์—„, ์–ผํ‹ฐ๋ฉ”์ดํŠธ, ๋ฌด๋ฃŒ, ๋ธŒ๋ก ์ฆˆ, ์‹ค๋ฒ„, ๊ณจ๋“œ) DevOps ์ฃผ๊ธฐ ๋‹จ๊ณ„: ๊ณ„ํš

๋ช‡ ๋‹ฌ ์ „์— ์šฐ๋ฆฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ณ„ํš์„ ๋ฐœํ‘œํ–ˆ์Šต๋‹ˆ๋‹ค. 18๊ฐ€์ง€ ๊ธฐ๋Šฅ์„ ์˜คํ”ˆ ์†Œ์Šค ์ฝ”๋“œ๋กœ ๋ฒˆ์—ญ. ์ด ์•ฝ์†์„ ์ดํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅํ•จ์œผ๋กœ์จ ์šฐ๋ฆฌ๋Š” ๊ด€๋ จ ํ‹ฐ์ผ“, ํ‹ฐ์ผ“์„ CSV๋กœ ๋‚ด๋ณด๋‚ด๊ธฐ ะธ ์ž‘์—… ๋ณด๋“œ ์ง‘์ค‘ ๋ชจ๋“œ (GitLab "ํ† ๋ก  ๊ฒŒ์‹œํŒ"์˜ ๋Ÿฌ์‹œ์•„์–ด ํ˜„์ง€ํ™”)์€ Core ๊ณ„ํš์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” "์—ฐ๊ฒฐ๋œ" ๊ด€๊ณ„์—๋งŒ ์ ์šฉ๋˜๋ฉฐ "์ฐจ๋‹จ" ๋ฐ "์ฐจ๋‹จ๋œ" ๊ด€๊ณ„๋Š” ์œ ๋ฃŒ ํ”Œ๋žœ์— ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.

๊ด€๋ จ ํ‹ฐ์ผ“์— ๋Œ€ํ•œ ๋ฌธ์„œ ะธ ์›๋ž˜ ํ‹ฐ์ผ“.

๋ณ‘ํ•ฉ ์š”์ฒญ ์‚ฌ์ด๋“œ๋ฐ”์— ์›๋ณธ ๋ธŒ๋žœ์น˜ ์ด๋ฆ„ ํ‘œ์‹œ

(์ฝ”์–ด, ์Šคํƒ€ํ„ฐ, ํ”„๋ฆฌ๋ฏธ์—„, ์–ผํ‹ฐ๋ฉ”์ดํŠธ, ๋ฌด๋ฃŒ, ๋ธŒ๋ก ์ฆˆ, ์‹ค๋ฒ„, ๊ณจ๋“œ) DevOps ์ฃผ๊ธฐ ๋‹จ๊ณ„: ์ƒ์„ฑ

์ฝ”๋“œ ๋ณ€๊ฒฝ, ํ† ๋ก , ๋ณ‘ํ•ฉ ์š”์ฒญ ์ปค๋ฐ‹์„ ๊ฒ€ํ† ํ•  ๋•Œ ๋” ์‹ฌ์ธต์ ์ธ ๊ฒ€ํ† ๋ฅผ ์œ„ํ•ด ๋ธŒ๋žœ์น˜์˜ ๋กœ์ปฌ ์ฒดํฌ์•„์›ƒ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ด ๋ฐ”๋žŒ์งํ•œ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ณ‘ํ•ฉ ์š”์ฒญ ์„ค๋ช…์— ๋” ๋งŽ์€ ์ฝ˜ํ…์ธ ๊ฐ€ ์ถ”๊ฐ€๋˜๊ณ  ํŽ˜์ด์ง€ ์•„๋ž˜๋กœ ๋” ์Šคํฌ๋กคํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์Šค๋ ˆ๋“œ ์ด๋ฆ„์„ ์ฐพ๋Š” ๊ฒƒ์ด ์ ์  ๋” ์–ด๋ ค์›Œ์ง‘๋‹ˆ๋‹ค.

๋ณ‘ํ•ฉ ์š”์ฒญ ์‚ฌ์ด๋“œ๋ฐ”์— ๋ถ„๊ธฐ ์ด๋ฆ„์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์–ธ์ œ๋“ ์ง€ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๊ณ  ์ „์ฒด ํŽ˜์ด์ง€๋ฅผ ์Šคํฌ๋กคํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋ณ‘ํ•ฉ ์š”์ฒญ ๋งํฌ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์†Œ์Šค ๋ถ„๊ธฐ ์„น์…˜์—๋Š” ํŽธ๋ฆฌํ•œ "๋ณต์‚ฌ" ๋ฒ„ํŠผ์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ์‚ฌ ์—๋‹จ ๋ฆฌ์ € ์ด ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ์— ํฐ ๊ธฐ์—ฌ๋ฅผ ํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

๋ณ‘ํ•ฉ ์š”์ฒญ ๋ฌธ์„œ ะธ ์›๋ž˜ ํ‹ฐ์ผ“.

๋ณ‘ํ•ฉ ์š”์ฒญ ์ฐจ์ด์ ์— ์ถ•์†Œ๋œ ํŒŒ์ผ์ด ์žˆ์Œ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

(์ฝ”์–ด, ์Šคํƒ€ํ„ฐ, ํ”„๋ฆฌ๋ฏธ์—„, ์–ผํ‹ฐ๋ฉ”์ดํŠธ, ๋ฌด๋ฃŒ, ๋ธŒ๋ก ์ฆˆ, ์‹ค๋ฒ„, ๊ณจ๋“œ) DevOps ์ฃผ๊ธฐ ๋‹จ๊ณ„: ์ƒ์„ฑ

์—ฌ๋Ÿฌ ํŒŒ์ผ์— ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๋ณ‘ํ•ฉ ์š”์ฒญ์€ ๋ Œ๋”๋ง ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•ด ๋Œ€์šฉ๋Ÿ‰ ํŒŒ์ผ์˜ ์ฐจ์ด์ ์„ ์ถ•์†Œํ•˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฐ ์ผ์ด ๋ฐœ์ƒํ•˜๋ฉด ํŠนํžˆ ๋งŽ์€ ์ˆ˜์˜ ํŒŒ์ผ์ด ํฌํ•จ๋œ ๋ณ‘ํ•ฉ ์š”์ฒญ์—์„œ ๊ฒ€ํ†  ์ค‘์— ์‹ค์ˆ˜๋กœ ํŒŒ์ผ์„ ๊ฑด๋„ˆ๋›ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฒ„์ „ 13.4๋ถ€ํ„ฐ ๋ณ‘ํ•ฉ ์š”์ฒญ์€ ์ ‘ํžŒ ํŒŒ์ผ์ด ํฌํ•จ๋œ diff์— ํ”Œ๋ž˜๊ทธ๋ฅผ ์ง€์ •ํ•˜๋ฏ€๋กœ ์ฝ”๋“œ ๊ฒ€ํ†  ์ค‘์— ์ด๋Ÿฌํ•œ ํŒŒ์ผ์„ ๋†“์น˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋”์šฑ ๋ช…ํ™•ํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด ํ–ฅํ›„ ๋ฆด๋ฆฌ์Šค์—์„œ๋Š” ์ด๋Ÿฌํ•œ ํŒŒ์ผ์— ๊ฐ•์กฐ ํ‘œ์‹œ๋ฅผ ์ถ”๊ฐ€ํ•  ๊ณ„ํš์ž…๋‹ˆ๋‹ค. ๋‹ค์Œ ์—…๋ฐ์ดํŠธ๋ฅผ ๊ณ„์† ์ง€์ผœ๋ด์ฃผ์„ธ์š” gitlab ํ‹ฐ์ผ“#16047.

# CI ๋ณ€์ˆ˜ ๋ฐ Kubernetes Agent์šฉ HashiCorp ์Šคํ† ๋ฆฌ์ง€์™€ ํ•จ๊ป˜ GitLab 13.4๊ฐ€ ์ถœ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋ณ‘ํ•ฉ ์š”์ฒญ ์ฐจ์ด์ ์˜ ์ ‘ํžŒ ํŒŒ์ผ์— ๋Œ€ํ•œ ๋ฌธ์„œ ะธ ์›๋ž˜ ํ‹ฐ์ผ“.

๋ณ‘ํ•ฉ ์š”์ฒญ์˜ diff์— ์ถ•์†Œ๋œ ํŒŒ์ผ์ด ์žˆ๋‹ค๋Š” ๊ฒฝ๊ณ 

(์ฝ”์–ด, ์Šคํƒ€ํ„ฐ, ํ”„๋ฆฌ๋ฏธ์—„, ์–ผํ‹ฐ๋ฉ”์ดํŠธ, ๋ฌด๋ฃŒ, ๋ธŒ๋ก ์ฆˆ, ์‹ค๋ฒ„, ๊ณจ๋“œ) DevOps ์ฃผ๊ธฐ ๋‹จ๊ณ„: ์ƒ์„ฑ

๋ณ‘ํ•ฉ ์š”์ฒญ diff ์„น์…˜์—์„œ๋Š” ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ์œ„ํ•ด ๋Œ€์šฉ๋Ÿ‰ ํŒŒ์ผ์ด ์ถ•์†Œ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ฝ”๋“œ๋ฅผ ๊ฒ€ํ† ํ•  ๋•Œ ๋Œ€์šฉ๋Ÿ‰ ํŒŒ์ผ์€ ๋ชจ๋‘ ์ถ•์†Œ๋˜๋ฏ€๋กœ ๊ฒ€ํ† ์ž๊ฐ€ ํŒŒ์ผ ๋ชฉ๋ก์„ ์Šคํฌ๋กคํ•  ๋•Œ ์ผ๋ถ€ ํŒŒ์ผ์ด ๋ˆ„๋ฝ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ์„น์…˜์— ๋ณ‘ํ•ฉ๋œ ํŒŒ์ผ์ด ์žˆ์Œ์„ ์‚ฌ์šฉ์ž์—๊ฒŒ ์•Œ๋ฆฌ๊ธฐ ์œ„ํ•ด ๋ณ‘ํ•ฉ ์š”์ฒญ diff ํŽ˜์ด์ง€ ์ƒ๋‹จ์— ํ‘œ์‹œ๋˜๋Š” ๊ฒฝ๊ณ ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๊ฒ€ํ†  ์ค‘์— ๋ณ‘ํ•ฉ ์š”์ฒญ์— ๋Œ€ํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋†“์น˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

# CI ๋ณ€์ˆ˜ ๋ฐ Kubernetes Agent์šฉ HashiCorp ์Šคํ† ๋ฆฌ์ง€์™€ ํ•จ๊ป˜ GitLab 13.4๊ฐ€ ์ถœ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋ณ‘ํ•ฉ ์š”์ฒญ ์ฐจ์ด์ ์˜ ์ ‘ํžŒ ํŒŒ์ผ์— ๋Œ€ํ•œ ๋ฌธ์„œ ะธ ์›๋ž˜ ํ‹ฐ์ผ“.

Gitaly ํด๋Ÿฌ์Šคํ„ฐ ์ €์žฅ์†Œ ์ž๋™ ๋ณต๊ตฌ

(์ฝ”์–ด, ์Šคํƒ€ํ„ฐ, ํ”„๋ฆฌ๋ฏธ์—„, ์–ผํ‹ฐ๋ฉ”์ดํŠธ, ๋ฌด๋ฃŒ, ๋ธŒ๋ก ์ฆˆ, ์‹ค๋ฒ„, ๊ณจ๋“œ) DevOps ์ฃผ๊ธฐ ๋‹จ๊ณ„: ์ƒ์„ฑ

์ด์ „์—๋Š” Gitaly ํด๋Ÿฌ์Šคํ„ฐ์˜ ๊ธฐ๋ณธ ๋…ธ๋“œ๊ฐ€ ์˜คํ”„๋ผ์ธ ์ƒํƒœ๊ฐ€ ๋˜๋ฉด ํ•ด๋‹น ๋…ธ๋“œ์˜ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๊ฐ€ ์ฝ๊ธฐ ์ „์šฉ์œผ๋กœ ํ‘œ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์•„์ง ๋ณต์ œ๋˜์ง€ ์•Š์€ ๋…ธ๋“œ์— ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์žˆ๋Š” ์ƒํ™ฉ์—์„œ ๋ฐ์ดํ„ฐ ์†์‹ค์„ ๋ฐฉ์ง€ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋…ธ๋“œ๊ฐ€ ๋‹ค์‹œ ์˜จ๋ผ์ธ ์ƒํƒœ๊ฐ€ ๋˜์—ˆ์„ ๋•Œ GitLab์€ ์ž๋™์œผ๋กœ ๋ณต์›๋˜์ง€ ์•Š์•˜์œผ๋ฉฐ ๊ด€๋ฆฌ์ž๋Š” ์ˆ˜๋™์œผ๋กœ ๋™๊ธฐํ™” ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹œ์ž‘ํ•˜๊ฑฐ๋‚˜ ๋ฐ์ดํ„ฐ ์†์‹ค์„ ํ—ˆ์šฉํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ณด์กฐ ๋…ธ๋“œ์˜ ๋ณต์ œ ์ž‘์—… ์‹คํŒจ์™€ ๊ฐ™์€ ๋‹ค๋ฅธ ์ƒํ™ฉ์œผ๋กœ ์ธํ•ด ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๊ฐ€ ์˜ค๋ž˜๋˜๊ฑฐ๋‚˜ ์ฝ๊ธฐ ์ „์šฉ์ด ๋  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ๋ณต์ œ ์ž‘์—…์„ ์‹œ์ž‘ํ•˜๋Š” ๋‹ค์Œ ์“ฐ๊ธฐ ์ž‘์—…์ด ๋ฐœ์ƒํ•  ๋•Œ๊นŒ์ง€ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋Š” ์˜ค๋ž˜๋œ ์ƒํƒœ๋กœ ์œ ์ง€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด ์ด๋… ์ด์ œ ํ•œ ๋…ธ๋“œ์—์„œ ์˜ค๋ž˜๋œ ์ €์žฅ์†Œ๋ฅผ ๊ฐ์ง€ํ•˜๊ณ  ๋‹ค๋ฅธ ๋…ธ๋“œ์—์„œ ์ตœ์‹  ๋ฒ„์ „์˜ ์ €์žฅ์†Œ๋ฅผ ๊ฐ์ง€ํ•˜๋ฉด ๋ณต์ œ ์ž‘์—…์„ ์˜ˆ์•ฝํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ณต์ œ ์ž‘์—…์€ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ์ž๋™์œผ๋กœ ์ตœ์‹  ์ƒํƒœ๋กœ ์œ ์ง€ํ•˜๋ฏ€๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜๋™์œผ๋กœ ๋ณต์›ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ž๋™ ๋ณต๊ตฌ๋ฅผ ํ†ตํ•ด ๋ณต์ œ ์ž‘์—…์ด ์‹คํŒจํ•  ๊ฒฝ์šฐ ๋‹ค์Œ ์“ฐ๊ธฐ ์ž‘์—…์„ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  ๋ณด์กฐ ๋…ธ๋“œ๋ฅผ ์‹ ์†ํ•˜๊ฒŒ ์ตœ์‹  ์ƒํƒœ๋กœ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งŽ์€ Gilaly ํด๋Ÿฌ์Šคํ„ฐ๋Š” ๋งŽ์€ ์ˆ˜์˜ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ์ €์žฅํ•˜๋ฏ€๋กœ ๊ด€๋ฆฌ์ž์™€ ์•ˆ์ •์„ฑ ์—”์ง€๋‹ˆ์–ด๊ฐ€ ์˜ค๋ฅ˜ ๋ฐœ์ƒ ํ›„ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต๊ตฌํ•˜๋Š” ๋ฐ ์†Œ์š”๋˜๋Š” ์‹œ๊ฐ„์ด ํฌ๊ฒŒ ์ค„์–ด๋“ญ๋‹ˆ๋‹ค.

๋˜ํ•œ ์ž๋™ ๋ณต๊ตฌ๋Š” ํด๋Ÿฌ์Šคํ„ฐ์— ์ถ”๊ฐ€๋œ ์ƒˆ Gitaly ๋…ธ๋“œ์—์„œ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๋ณต์ œ๋ฅผ ์‹œ์ž‘ํ•˜๋ฏ€๋กœ ์ƒˆ ๋…ธ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•  ๋•Œ ์ˆ˜๋™ ์ž‘์—…์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Gitaly ๋ฐ์ดํ„ฐ ๋ณต๊ตฌ ๋ฌธ์„œ ะธ ์›๋ž˜ ํ‹ฐ์ผ“.

๋””์ž์ธ ํŽ˜์ด์ง€์—์„œ ํ•  ์ผ์„ ์™„๋ฃŒ๋กœ ํ‘œ์‹œํ•˜์„ธ์š”.

(์ฝ”์–ด, ์Šคํƒ€ํ„ฐ, ํ”„๋ฆฌ๋ฏธ์—„, ์–ผํ‹ฐ๋ฉ”์ดํŠธ, ๋ฌด๋ฃŒ, ๋ธŒ๋ก ์ฆˆ, ์‹ค๋ฒ„, ๊ณจ๋“œ) DevOps ์ฃผ๊ธฐ ๋‹จ๊ณ„: ์ƒ์„ฑ

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

์ด์ „์—๋Š” ๋””์ž์ธ ์ž‘์—… ์‹œ ์ž‘์—…์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์™„๋ฃŒ๋œ ๊ฒƒ์œผ๋กœ ํ‘œ์‹œํ•  ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ํ•ด์•ผ ํ•  ์ผ์€ GitLab ์›Œํฌํ”Œ๋กœ์˜ ์ค‘์š”ํ•œ ์š”์†Œ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ด๋กœ ์ธํ•ด ์ œํ’ˆ ํŒ€ ๊ฐ„์˜ ์˜์‚ฌ์†Œํ†ต ํšจ์œจ์„ฑ์ด ์‹ฌ๊ฐํ•˜๊ฒŒ ์ €ํ•˜๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋ฆด๋ฆฌ์Šค 13.4์—์„œ๋Š” ์ž‘์—… ์‚ฌ์šฉ ์‹œ ํ‹ฐ์ผ“ ๋Œ“๊ธ€์„ ๋”ฐ๋ผ์žก๋Š” ๋””์ž์ธ์ด ์žˆ์–ด ์ž‘์—…์„ ๋ณด๋‹ค ์ผ๊ด€๋˜๊ณ  ํšจ์œจ์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

# CI ๋ณ€์ˆ˜ ๋ฐ Kubernetes Agent์šฉ HashiCorp ์Šคํ† ๋ฆฌ์ง€์™€ ํ•จ๊ป˜ GitLab 13.4๊ฐ€ ์ถœ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋””์ž์ธ ์ž‘์—… ์ถ”๊ฐ€์— ๋Œ€ํ•œ ๋ฌธ์„œ ะธ ์›๋ž˜ ํ‹ฐ์ผ“.

CI/CD ๋ฌธ์ œ ํ•ด๊ฒฐ ๊ฐ€์ด๋“œ ๊ฐœ์„ 

(์ฝ”์–ด, ์Šคํƒ€ํ„ฐ, ํ”„๋ฆฌ๋ฏธ์—„, ์–ผํ‹ฐ๋ฉ”์ดํŠธ, ๋ฌด๋ฃŒ, ๋ธŒ๋ก ์ฆˆ, ์‹ค๋ฒ„, ๊ณจ๋“œ) DevOps ์ฃผ๊ธฐ ๋‹จ๊ณ„: ํ™•์ธ

๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์ผ๋ฐ˜์ ์ธ ๋ฌธ์ œ์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ์ •๋ณด๋ฅผ ํฌํ•จํ•˜์—ฌ GitLab CI/CD ๋ฌธ์ œ ํ•ด๊ฒฐ ๊ฐ€์ด๋“œ๋ฅผ ๊ฐœ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ์„ ๋œ ๋ฌธ์„œ๊ฐ€ GitLab CI/CD๋ฅผ ๋น ๋ฅด๊ณ  ์‰ฝ๊ฒŒ ์‹œ์ž‘ํ•˜๊ณ  ์‹คํ–‰ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” ๊ท€์ค‘ํ•œ ๋ฆฌ์†Œ์Šค๊ฐ€ ๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

CI/CD ๋ฌธ์ œ ํ•ด๊ฒฐ ๋ฌธ์„œ ะธ ์›๋ž˜ ํ‹ฐ์ผ“.

๋ณ‘ํ•ฉ ์š”์ฒญ์ด ๋” ์ด์ƒ ๋ณ‘ํ•ฉ ๋Œ€๊ธฐ์—ด์—์„œ ๋ฒ—์–ด๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

(ํ”„๋ฆฌ๋ฏธ์—„, ์–ผํ‹ฐ๋ฐ‹, ์‹ค๋ฒ„, ๊ณจ๋“œ) DevOps ์ฃผ๊ธฐ ๋‹จ๊ณ„: ํ™•์ธ

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

๋ณ‘ํ•ฉ ๋Œ€๊ธฐ์—ด ๋ฌธ์„œ ะธ ์›๋ž˜ ํ‹ฐ์ผ“.

๋ณ‘ํ•ฉ ์š”์ฒญ์—์„œ ์ž‘์—…์— ๋Œ€ํ•œ ์ฝ”๋“œ ์ ์šฉ ๋ฒ”์œ„ ๊ฐ’ ํ‘œ์‹œ

(์ฝ”์–ด, ์Šคํƒ€ํ„ฐ, ํ”„๋ฆฌ๋ฏธ์—„, ์–ผํ‹ฐ๋ฉ”์ดํŠธ, ๋ฌด๋ฃŒ, ๋ธŒ๋ก ์ฆˆ, ์‹ค๋ฒ„, ๊ณจ๋“œ) DevOps ์ฃผ๊ธฐ ๋‹จ๊ณ„: ํ™•์ธ

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

# CI ๋ณ€์ˆ˜ ๋ฐ Kubernetes Agent์šฉ HashiCorp ์Šคํ† ๋ฆฌ์ง€์™€ ํ•จ๊ป˜ GitLab 13.4๊ฐ€ ์ถœ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ฝ”๋“œ ์ ์šฉ ๋ฒ”์œ„ ๊ตฌ๋ฌธ ๋ถ„์„ ๋ฌธ์„œ ะธ ์›๋ž˜ ํ‹ฐ์ผ“.

๊ทธ๋ฃน์„ ๋ณผ ๋•Œ ํŒจํ‚ค์ง€ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์—์„œ ํŒจํ‚ค์ง€ ์ œ๊ฑฐ

(์ฝ”์–ด, ์Šคํƒ€ํ„ฐ, ํ”„๋ฆฌ๋ฏธ์—„, ์–ผํ‹ฐ๋ฉ”์ดํŠธ, ๋ฌด๋ฃŒ, ๋ธŒ๋ก ์ฆˆ, ์‹ค๋ฒ„, ๊ณจ๋“œ) DevOps ์ฃผ๊ธฐ ๋‹จ๊ณ„: ํŒจํ‚ค์ง€

GitLab ํŒจํ‚ค์ง€ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋Š” ํŒจํ‚ค์ง€๋ฅผ ๋‹ค์–‘ํ•œ ํ˜•์‹์œผ๋กœ ์ €์žฅํ•˜๊ณ  ๋ฐฐํฌํ•˜๋Š” ์žฅ์†Œ์ž…๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ๋‚˜ ๊ทธ๋ฃน์— ํŒจํ‚ค์ง€๊ฐ€ ๋งŽ์œผ๋ฉด ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ํŒจํ‚ค์ง€๋ฅผ ์‹ ์†ํ•˜๊ฒŒ ์‹๋ณ„ํ•˜๊ณ  ์ œ๊ฑฐํ•˜์—ฌ ์‚ฌ๋žŒ๋“ค์ด ๋‹ค์šด๋กœ๋“œํ•˜์ง€ ๋ชปํ•˜๋„๋ก ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ์„ ํ†ตํ•ด ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์—์„œ ํŒจํ‚ค์ง€๋ฅผ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŒจํ‚ค์ง€ API ๋˜๋Š” ํŒจํ‚ค์ง€ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ด. ๊ทธ๋Ÿฌ๋‚˜ ์ง€๊ธˆ๊นŒ์ง€๋Š” UI๋ฅผ ํ†ตํ•ด ๊ทธ๋ฃน์„ ๋ณผ ๋•Œ ํŒจํ‚ค์ง€๋ฅผ ์ œ๊ฑฐํ•  ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ ํ”„๋กœ์ ํŠธ๋ณ„๋กœ ๋ถˆํ•„์š”ํ•œ ํŒจํ‚ค์ง€๋ฅผ ์ œ๊ฑฐํ•ด์•ผ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋น„ํšจ์œจ์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

์ด์ œ ๊ทธ๋ฃน์˜ ํŒจํ‚ค์ง€ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋ฅผ ๋ณผ ๋•Œ ํŒจํ‚ค์ง€๋ฅผ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฃน์˜ ํŒจํ‚ค์ง€ ๋“ฑ๋ก ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜์—ฌ ์ด๋ฆ„๋ณ„๋กœ ํŒจํ‚ค์ง€๋ฅผ ํ•„ํ„ฐ๋งํ•˜๊ณ  ํ•„์š”ํ•˜์ง€ ์•Š์€ ํŒจํ‚ค์ง€๋ฅผ ์ œ๊ฑฐํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

ํŒจํ‚ค์ง€ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์—์„œ ํŒจํ‚ค์ง€ ์ œ๊ฑฐ์— ๋Œ€ํ•œ ๋ฌธ์„œ ะธ ์›๋ž˜ ํ‹ฐ์ผ“.

Conan ํŒจํ‚ค์ง€๋ฅผ ํ”„๋กœ์ ํŠธ ์ˆ˜์ค€์œผ๋กœ ํ™•์žฅ

(์ฝ”์–ด, ์Šคํƒ€ํ„ฐ, ํ”„๋ฆฌ๋ฏธ์—„, ์–ผํ‹ฐ๋ฉ”์ดํŠธ, ๋ฌด๋ฃŒ, ๋ธŒ๋ก ์ฆˆ, ์‹ค๋ฒ„, ๊ณจ๋“œ) DevOps ์ฃผ๊ธฐ ๋‹จ๊ณ„: ํŒจํ‚ค์ง€

GitLab์˜ Conan ์ €์žฅ์†Œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ C/C++ ์ข…์†์„ฑ์„ ๊ฒŒ์‹œํ•˜๊ณ  ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ Conan ํŒจํ‚ค์ง€ ์ด๋ฆ„์€ ์ตœ๋Œ€ 51์ž๊นŒ์ง€๋งŒ ๊ฐ€๋Šฅํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด์ „ ํŒจํ‚ค์ง€๋Š” ์ธ์Šคํ„ด์Šค ์ˆ˜์ค€์œผ๋กœ๋งŒ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํ•˜์œ„ ๊ทธ๋ฃน์—์„œ ํŒจํ‚ค์ง€๋ฅผ ๊ฒŒ์‹œํ•˜๋ ค๋Š” ๊ฒฝ์šฐ gitlab-org/ci-cd/package-stage/feature-testing/conan, ๊ฑฐ์˜ ๋ถˆ๊ฐ€๋Šฅํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด์ œ Conan ํŒจํ‚ค์ง€๋ฅผ ํ”„๋กœ์ ํŠธ ์ˆ˜์ค€์œผ๋กœ ์ถ•์†Œํ•˜์—ฌ ํ”„๋กœ์ ํŠธ์˜ ์ข…์†์„ฑ์„ ์‰ฝ๊ฒŒ ๊ฒŒ์‹œํ•˜๊ณ  ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Conan ํŒจํ‚ค์ง€ ์ถœํŒ ๋ฌธ์„œ ะธ ์›๋ž˜ ํ‹ฐ์ผ“.

์ข…์†์„ฑ ๊ฒ€์‚ฌ๋ฅผ ์œ„ํ•œ ์ƒˆ๋กœ์šด ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž ๋ฐ ์–ธ์–ด ์ง€์›

(๊ถ๊ทน๊ธฐ, ๊ณจ๋“œ) DevOps ์ฃผ๊ธฐ ๋‹จ๊ณ„: ๋ณด์•ˆ

NuGet 4.9+ ๋˜๋Š” Conan ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋Š” C, C++, C# ๋ฐ .Net ์ฝ”๋“œ ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ ์ข…์†์„ฑ ๊ฒ€์‚ฌ๋ฅผ ๋ชฉ๋ก์— ์ถ”๊ฐ€ํ•˜๊ฒŒ ๋˜์–ด ๊ธฐ์˜๊ฒŒ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ง€์›๋˜๋Š” ์–ธ์–ด ๋ฐ ํ”„๋ ˆ์ž„์›Œํฌ. ์ด์ œ ๋ณด์•ˆ ๋‹จ๊ณ„์˜ ์ผ๋ถ€๋กœ ์ข…์†์„ฑ ๊ฒ€์ƒ‰์„ ํ™œ์„ฑํ™”ํ•˜์—ฌ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž๋ฅผ ํ†ตํ•ด ์ถ”๊ฐ€๋œ ์ข…์†์„ฑ์˜ ์•Œ๋ ค์ง„ ์ทจ์•ฝ์ ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐœ๊ฒฌ๋œ ์ทจ์•ฝ์ ์€ ์‹ฌ๊ฐ๋„ ์ˆ˜์ค€๊ณผ ํ•จ๊ป˜ ๋ณ‘ํ•ฉ ์š”์ฒญ์— ํ‘œ์‹œ๋˜๋ฏ€๋กœ ๋ณ‘ํ•ฉ์„ ์‹คํ–‰ํ•˜๊ธฐ ์ „์— ์ƒˆ ์ข…์†์„ฑ์ด ์ˆ˜๋ฐ˜ํ•˜๋Š” ์œ„ํ—˜์ด ๋ฌด์—‡์ธ์ง€ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๋‹ค์Œ์„ ์š”๊ตฌํ•˜๋„๋ก ํ”„๋กœ์ ํŠธ๋ฅผ ๊ตฌ์„ฑํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณ‘ํ•ฉ ์š”์ฒญ ํ™•์ธ ์‹ฌ๊ฐ๋„(Critical), ๋†’์Œ(High) ๋˜๋Š” ์•Œ ์ˆ˜ ์—†์Œ(Unknown) ์‹ฌ๊ฐ๋„ ์ˆ˜์ค€์˜ ์ทจ์•ฝ์ ์ด ์žˆ๋Š” ์ข…์†์„ฑ์˜ ๊ฒฝ์šฐ.

์ง€์›๋˜๋Š” ์–ธ์–ด ๋ฐ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž์— ๋Œ€ํ•œ ๋ฌธ์„œ ะธ ์˜ค๋ฆฌ์ง€๋„ ์„œ์‚ฌ์‹œ.

๋ณ‘ํ•ฉ ์š”์ฒญ ์„ค์ •์„ 'ํŒŒ์ดํ”„๋ผ์ธ์ด ์„ฑ๊ณต์ ์œผ๋กœ ์™„๋ฃŒ๋˜๋ฉด ๋ณ‘ํ•ฉ'์œผ๋กœ ๋ณ€๊ฒฝํ•  ๋•Œ ์•Œ๋ฆผ

(์ฝ”์–ด, ์Šคํƒ€ํ„ฐ, ํ”„๋ฆฌ๋ฏธ์—„, ์–ผํ‹ฐ๋ฉ”์ดํŠธ, ๋ฌด๋ฃŒ, ๋ธŒ๋ก ์ฆˆ, ์‹ค๋ฒ„, ๊ณจ๋“œ) DevOps ์ฃผ๊ธฐ ๋‹จ๊ณ„: ๋ฆด๋ฆฌ์Šค

์ด์ „์—๋Š” ๋ณ‘ํ•ฉ ์š”์ฒญ ์„ค์ •์„ ํ•  ๋•Œ ํŒŒ์ดํ”„๋ผ์ธ์ด ์™„๋ฃŒ๋˜๋ฉด ๋ณ‘ํ•ฉ (ํŒŒ์ดํ”„๋ผ์ธ ์„ฑ๊ณต ์‹œ ๋ณ‘ํ•ฉ, MWPS) ์ด๋ฉ”์ผ ์•Œ๋ฆผ์ด ์ „์†ก๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ˆ˜๋™์œผ๋กœ ์ƒํƒœ๋ฅผ ํ™•์ธํ•˜๊ฑฐ๋‚˜ ๋ณ‘ํ•ฉ ์•Œ๋ฆผ์„ ๊ธฐ๋‹ค๋ ค์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ๋ฆด๋ฆฌ์Šค๋ฅผ ํ†ตํ•ด ์šฐ๋ฆฌ๋Š” ์‚ฌ์šฉ์ž ๊ธฐ์—ฌ๋ฅผ ์ œ๊ณตํ•˜๊ฒŒ ๋œ ๊ฒƒ์„ ๊ธฐ์˜๊ฒŒ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. @ravishankar2kool์—์„œ๋Š” ๊ฒ€ํ† ์ž๊ฐ€ ๋ณ‘ํ•ฉ ์„ค์ •์„ MWPS๋กœ ๋ณ€๊ฒฝํ•  ๋•Œ ๋ณ‘ํ•ฉ ์š”์ฒญ์„ ๊ตฌ๋…ํ•˜๋Š” ๋ชจ๋“  ์‚ฌ๋žŒ์—๊ฒŒ ์ž๋™ ์•Œ๋ฆผ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

# CI ๋ณ€์ˆ˜ ๋ฐ Kubernetes Agent์šฉ HashiCorp ์Šคํ† ๋ฆฌ์ง€์™€ ํ•จ๊ป˜ GitLab 13.4๊ฐ€ ์ถœ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋ณ‘ํ•ฉ ์š”์ฒญ ์ด๋ฒคํŠธ ์•Œ๋ฆผ์— ๋Œ€ํ•œ ๋ฌธ์„œ ะธ ์›๋ž˜ ํ‹ฐ์ผ“.

์‚ฌ์šฉ์ž๊ฐ€ ์ง€์ •ํ•œ Kubernetes ๋ฒ„์ „์œผ๋กœ EKS ํด๋Ÿฌ์Šคํ„ฐ ์ƒ์„ฑ

(์ฝ”์–ด, ์Šคํƒ€ํ„ฐ, ํ”„๋ฆฌ๋ฏธ์—„, ์–ผํ‹ฐ๋ฉ”์ดํŠธ, ๋ฌด๋ฃŒ, ๋ธŒ๋ก ์ฆˆ, ์‹ค๋ฒ„, ๊ณจ๋“œ) DevOps ์ฃผ๊ธฐ ๋‹จ๊ณ„: ๊ตฌ์„ฑ

์ด์ œ GitLab ์‚ฌ์šฉ์ž๋Š” EKS์—์„œ ์ œ๊ณตํ•  Kubernetes ๋ฒ„์ „์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฒ„์ „ 1.14~1.17 ์ค‘์—์„œ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

EKS ํด๋Ÿฌ์Šคํ„ฐ ์ถ”๊ฐ€์— ๋Œ€ํ•œ ์„ค๋ช…์„œ ะธ ์›๋ž˜ ํ‹ฐ์ผ“.

ํ‹ฐ์ผ“ ์œ ํ˜•์œผ๋กœ ์‚ฌ๊ฑด ๋งŒ๋“ค๊ธฐ

(์ฝ”์–ด, ์Šคํƒ€ํ„ฐ, ํ”„๋ฆฌ๋ฏธ์—„, ์–ผํ‹ฐ๋ฉ”์ดํŠธ, ๋ฌด๋ฃŒ, ๋ธŒ๋ก ์ฆˆ, ์‹ค๋ฒ„, ๊ณจ๋“œ) DevOps ์ฃผ๊ธฐ ๋‹จ๊ณ„: ๋ชจ๋‹ˆํ„ฐ๋ง

๋ฐœ์ƒํ•˜๋Š” ๋ชจ๋“  ๋ฌธ์ œ๊ฐ€ ์ฆ‰์‹œ ๊ฒฝ๊ณ ๋ฅผ ํŠธ๋ฆฌ๊ฑฐํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๋Š” ์ค‘๋‹จ์„ ๋ณด๊ณ ํ•˜๊ณ  ํŒ€ ๊ตฌ์„ฑ์›์€ ์„ฑ๋Šฅ ๋ฌธ์ œ๋ฅผ ์กฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ๊ฑด์€ ์ด์ œ ์ผ์ข…์˜ ํ‹ฐ์ผ“์ด๋ฏ€๋กœ ํŒ€์€ ์ผ๋ฐ˜์ ์ธ ์›Œํฌํ”Œ๋กœ์˜ ์ผ๋ถ€๋กœ ์‹ ์†ํ•˜๊ฒŒ ์‚ฌ๊ฑด์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ธ๊น ํ•˜๋Š” ์†Œ๋ฆฌ ์ƒˆ ์ž‘์—… GitLab๊ณผ ํ˜„์žฅ ์–ด๋””์—์„œ๋‚˜ ์œ ํ˜• ์„ ํƒ ์‚ฌ๊ฑด.

# CI ๋ณ€์ˆ˜ ๋ฐ Kubernetes Agent์šฉ HashiCorp ์Šคํ† ๋ฆฌ์ง€์™€ ํ•จ๊ป˜ GitLab 13.4๊ฐ€ ์ถœ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ธ์‹œ๋˜ํŠธ ์ˆ˜๋™ ์ƒ์„ฑ์— ๋Œ€ํ•œ ๋ฌธ์„œ ะธ ์›๋ž˜ ํ‹ฐ์ผ“.

Markdown์—์„œ GitLab ๊ฒฝ๊ณ  ์–ธ๊ธ‰

(์ฝ”์–ด, ์Šคํƒ€ํ„ฐ, ํ”„๋ฆฌ๋ฏธ์—„, ์–ผํ‹ฐ๋ฉ”์ดํŠธ, ๋ฌด๋ฃŒ, ๋ธŒ๋ก ์ฆˆ, ์‹ค๋ฒ„, ๊ณจ๋“œ) DevOps ์ฃผ๊ธฐ ๋‹จ๊ณ„: ๋ชจ๋‹ˆํ„ฐ๋ง

GitLab Markdown์— ํŠน๋ณ„ํžˆ ์ƒˆ๋กœ์šด ์–ธ๊ธ‰ ์œ ํ˜•์„ ์ถ”๊ฐ€ํ•˜์—ฌ GitLab ๊ฒฝ๊ณ ๋ฅผ ๊ฐœ์„ ํ•˜์—ฌ ๊ฒฝ๊ณ ๋ฅผ ๋” ์‰ฝ๊ฒŒ ๊ณต์œ ํ•˜๊ณ  ์–ธ๊ธ‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ ^alert#1234์‚ฌ๊ฑด, ํ‹ฐ์ผ“, ๋ณ‘ํ•ฉ ์š”์ฒญ ๋“ฑ ๋งˆํฌ๋‹ค์šด ํ•„๋“œ์—์„œ ์•Œ๋ฆผ์„ ์–ธ๊ธ‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ํ‹ฐ์ผ“์ด๋‚˜ ๋ณ‘ํ•ฉ ์š”์ฒญ์ด ์•„๋‹Œ ์•Œ๋ฆผ์œผ๋กœ ์ƒ์„ฑ๋œ ์ž‘์—…์„ ์‹๋ณ„ํ•˜๋Š” ๋ฐ๋„ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

์‚ฌ๊ณ  ๊ด€๋ฆฌ ๋ฌธ์„œ ะธ ์›๋ž˜ ํ‹ฐ์ผ“.

์‚ฌ๊ฑด๋ณ„ ๊ฒฝ๋ณด ๋ถ€ํ•˜ ๋ณด๊ธฐ

(์ฝ”์–ด, ์Šคํƒ€ํ„ฐ, ํ”„๋ฆฌ๋ฏธ์—„, ์–ผํ‹ฐ๋ฉ”์ดํŠธ, ๋ฌด๋ฃŒ, ๋ธŒ๋ก ์ฆˆ, ์‹ค๋ฒ„, ๊ณจ๋“œ) DevOps ์ฃผ๊ธฐ ๋‹จ๊ณ„: ๋ชจ๋‹ˆํ„ฐ๋ง

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

# CI ๋ณ€์ˆ˜ ๋ฐ Kubernetes Agent์šฉ HashiCorp ์Šคํ† ๋ฆฌ์ง€์™€ ํ•จ๊ป˜ GitLab 13.4๊ฐ€ ์ถœ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

75% ๋” ๋น ๋ฅธ ๊ณ ๊ธ‰ ๊ฒ€์ƒ‰

(์Šคํƒ€ํ„ฐ, ํ”„๋ฆฌ๋ฏธ์—„, ์–ผํ‹ฐ๋ฉ”์ดํŠธ, ๋ธŒ๋ก ์ฆˆ, ์‹ค๋ฒ„, ๊ณจ๋“œ) ๊ฐ€์šฉ์„ฑ

๋‹จ์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ธ GitLab์€ ์ „์ฒด DevOps ์›Œํฌํ”Œ๋กœ์—์„œ ์ฝ˜ํ…์ธ ๋ฅผ ๋น ๋ฅด๊ฒŒ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ณ ์œ ํ•œ ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ”๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. GitLab 13.4์—์„œ๋Š” ๊ณ ๊ธ‰ ๊ฒ€์ƒ‰์ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ ๊ฒฐ๊ณผ๋ฅผ 75% ๋” ๋น ๋ฅด๊ฒŒ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ํŠน์ • ๋„ค์ž„์ŠคํŽ˜์ด์Šค ๋ฐ ํ”„๋กœ์ ํŠธ๋กœ ์ œํ•œ๋จ, GitLab.com์—์„œ์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋” ๋น ๋ฅธ ๊ณ ๊ธ‰ ๊ฒ€์ƒ‰ ๋ฌธ์„œ ะธ ์›๋ž˜ ํ‹ฐ์ผ“.

๊ด€๋ฆฌ์ž๋ฅผ ์œ„ํ•ด ์‚ญ์ œ๋œ ํ”„๋กœ์ ํŠธ ๋ณด๊ธฐ

(์ฝ”์–ด, ์Šคํƒ€ํ„ฐ, ํ”„๋ฆฌ๋ฏธ์—„, ์–ผํ‹ฐ๋ฐ‹) DevOps ์ฃผ๊ธฐ ๋‹จ๊ณ„: ๊ด€๋ฆฌ

ํ”„๋กœ์ ํŠธ ์‚ญ์ œ๋ฅผ ์—ฐ๊ธฐํ•˜๋Š” ์˜ต์…˜์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. 12.6์— ๋„์ž…๋จ. ๊ทธ๋Ÿฌ๋‚˜ ์ด์ „์—๋Š” ์‚ญ์ œ ๋Œ€๊ธฐ ์ค‘์ธ ๋ชจ๋“  ํ”„๋กœ์ ํŠธ๋ฅผ ํ•œ ๊ณณ์—์„œ ๋ณผ ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. GitLab ์‚ฌ์šฉ์ž ์ธ์Šคํ„ด์Šค ๊ด€๋ฆฌ์ž๋Š” ์ด์ œ ํ•ด๋‹น ํ”„๋กœ์ ํŠธ๋ฅผ ์‰ฝ๊ฒŒ ๋ณต์›ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฒ„ํŠผ๊ณผ ํ•จ๊ป˜ ํ•œ ๊ณณ์—์„œ ๋ณด๋ฅ˜ ์ค‘์ธ ๋ชจ๋“  ์‚ญ์ œ ํ”„๋กœ์ ํŠธ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ชจ๋“  ๊ด€๋ จ ์ •๋ณด๋ฅผ ํ•œ๊ณณ์— ์ˆ˜์ง‘ํ•˜๊ณ  ์›์น˜ ์•Š๋Š” ์‚ญ์ œ ์ž‘์—…์„ ์ทจ์†Œํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์—ฌ ๊ด€๋ฆฌ์ž๊ฐ€ ํ”„๋กœ์ ํŠธ ์‚ญ์ œ๋ฅผ ๋ณด๋‹ค ํšจ๊ณผ์ ์œผ๋กœ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ์‚ฌ ์•„์‰ฌ์‰ฌ ๋น„๋“€ํŠธ(@asheshvidyut7) ์ด ๊ธฐ๋Šฅ์„ ์œ„ํ•ด!

ํ”„๋กœ์ ํŠธ ์‚ญ์ œ์— ๋Œ€ํ•œ ๋ฌธ์„œ ะธ ์›๋ž˜ ํ‹ฐ์ผ“.

API์— ๊ทธ๋ฃน ํ‘ธ์‹œ ๊ทœ์น™์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

(์Šคํƒ€ํ„ฐ, ํ”„๋ฆฌ๋ฏธ์—„, ์–ผํ‹ฐ๋ฉ”์ดํŠธ, ๋ธŒ๋ก ์ฆˆ, ์‹ค๋ฒ„, ๊ณจ๋“œ) DevOps ์ฃผ๊ธฐ ๋‹จ๊ณ„: ๊ด€๋ฆฌ

์ด์ „์—๋Š” GitLab UI๋ฅผ ํ†ตํ•ด ๊ฐ ๊ทธ๋ฃน์„ ๊ฐœ๋ณ„์ ์œผ๋กœ ๋ฐฉ๋ฌธํ•˜๊ณ  ํ•ด๋‹น ๊ทœ์น™์„ ์ ์šฉํ•ด์•ผ๋งŒ ๊ทธ๋ฃน ํ‘ธ์‹œ ๊ทœ์น™์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ API๋ฅผ ํ†ตํ•ด ์ด๋Ÿฌํ•œ ๊ทœ์น™์„ ๊ด€๋ฆฌํ•˜์—ฌ ์‚ฌ์šฉ์ž ์ •์˜ ๋„๊ตฌ ๋ฐ GitLab ์ž๋™ํ™”๋ฅผ ์ง€์›ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฃน์˜ ํ‘ธ์‹œ ๊ทœ์น™์— ๋Œ€ํ•œ ๋ฌธ์„œ ะธ ์›๋ž˜ ํ‹ฐ์ผ“.

์ž์ฒด ๊ด€๋ฆฌ ์ž๊ฒฉ ์ฆ๋ช… ์ €์žฅ์†Œ์— ๋Œ€ํ•œ ๊ฐœ์ธ ์•ก์„ธ์Šค ํ† ํฐ ์ทจ์†Œ

(๊ถ๊ทน์ ์ธ) DevOps ์ฃผ๊ธฐ ๋‹จ๊ณ„: ๊ด€๋ฆฌ

์ž๊ฒฉ์ฆ๋ช… ์ €์žฅ ๊ด€๋ฆฌ์ž์—๊ฒŒ GitLab ์ธ์Šคํ„ด์Šค์— ๋Œ€ํ•œ ์‚ฌ์šฉ์ž ์ž๊ฒฉ ์ฆ๋ช…์„ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ทœ์ • ์ค€์ˆ˜์— ์ค‘์ ์„ ๋‘๋Š” ์กฐ์ง๋งˆ๋‹ค ์ž๊ฒฉ ์ฆ๋ช… ๊ด€๋ฆฌ ์ •์ฑ…์˜ ์—„๊ฒฉํ•จ์ด ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ๊ด€๋ฆฌ์ž๊ฐ€ ์„ ํƒ์ ์œผ๋กœ ์‚ฌ์šฉ์ž์˜ PAT(๊ฐœ์ธ ์•ก์„ธ์Šค ํ† ํฐ)๋ฅผ ์ทจ์†Œํ•  ์ˆ˜ ์žˆ๋Š” ๋ฒ„ํŠผ์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ๊ด€๋ฆฌ์ž๋Š” ์ž ์žฌ์ ์œผ๋กœ ์†์ƒ๋œ PAT๋ฅผ ์‰ฝ๊ฒŒ ์ทจ์†Œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์€ ์‚ฌ์šฉ์ž์˜ ์—…๋ฌด ์ค‘๋‹จ์„ ์ตœ์†Œํ™”ํ•˜๊ธฐ ์œ„ํ•ด ๋ณด๋‹ค ์œ ์—ฐํ•œ ๊ทœ์ • ์ค€์ˆ˜ ์˜ต์…˜์„ ์›ํ•˜๋Š” ์กฐ์ง์— ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

# CI ๋ณ€์ˆ˜ ๋ฐ Kubernetes Agent์šฉ HashiCorp ์Šคํ† ๋ฆฌ์ง€์™€ ํ•จ๊ป˜ GitLab 13.4๊ฐ€ ์ถœ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ž๊ฒฉ ์ฆ๋ช… ์ €์žฅ์†Œ ๋ฌธ์„œ ะธ ์›๋ž˜ ํ‹ฐ์ผ“.

์ •์  ์‚ฌ์ดํŠธ ํŽธ์ง‘๊ธฐ์šฉ ๊ตฌ์„ฑ ํŒŒ์ผ

(์ฝ”์–ด, ์Šคํƒ€ํ„ฐ, ํ”„๋ฆฌ๋ฏธ์—„, ์–ผํ‹ฐ๋ฉ”์ดํŠธ, ๋ฌด๋ฃŒ, ๋ธŒ๋ก ์ฆˆ, ์‹ค๋ฒ„, ๊ณจ๋“œ) DevOps ์ฃผ๊ธฐ ๋‹จ๊ณ„: ์ƒ์„ฑ

GitLab 13.4์—์„œ๋Š” ์ •์  ์‚ฌ์ดํŠธ ํŽธ์ง‘๊ธฐ๋ฅผ ์‚ฌ์šฉ์ž ์ •์˜ํ•˜๋Š” ์ƒˆ๋กœ์šด ๋ฐฉ๋ฒ•์„ ๋„์ž…ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฒˆ ๋ฆด๋ฆฌ์Šค์—์„œ๋Š” ๊ตฌ์„ฑ ํŒŒ์ผ์ด ์–ด๋–ค ์„ค์ •๋„ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ์ˆ˜์‹ ํ•˜์ง€ ์•Š์ง€๋งŒ, ํ–ฅํ›„ ํŽธ์ง‘๊ธฐ ๋™์ž‘ ์‚ฌ์šฉ์ž ์ •์˜๋ฅผ ์œ„ํ•œ ๊ธฐ๋ฐ˜์„ ๋งˆ๋ จํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํ–ฅํ›„ ๋ฆด๋ฆฌ์Šค์—์„œ๋Š” ํŒŒ์ผ์— ์ถ”๊ฐ€ํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค. .gitlab/static-site-editor.yml ์„ค์น˜ ๋งค๊ฐœ๋ณ€์ˆ˜ ๊ธฐ๋ณธ ์‚ฌ์ดํŠธ ์ฃผ์†Œ, ์–ด๋Š ํŽธ์ง‘๊ธฐ์— ๋กœ๋“œ๋œ ์ด๋ฏธ์ง€๊ฐ€ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค., Markdown ๊ตฌ๋ฌธ ์„ค์ • ๋ฐ ๊ธฐํƒ€ ํŽธ์ง‘๊ธฐ ์„ค์ •์„ ์žฌ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

์ •์  ์‚ฌ์ดํŠธ ํŽธ์ง‘๊ธฐ ์„ค์ •์— ๋Œ€ํ•œ ๋ฌธ์„œ ะธ ์˜ค๋ฆฌ์ง€๋„ ์„œ์‚ฌ์‹œ.

์ •์  ์‚ฌ์ดํŠธ ํŽธ์ง‘๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŒŒ์ผ์˜ ์†Œ๊ฐœ ๋ถ€๋ถ„ ํŽธ์ง‘

(์ฝ”์–ด, ์Šคํƒ€ํ„ฐ, ํ”„๋ฆฌ๋ฏธ์—„, ์–ผํ‹ฐ๋ฉ”์ดํŠธ, ๋ฌด๋ฃŒ, ๋ธŒ๋ก ์ฆˆ, ์‹ค๋ฒ„, ๊ณจ๋“œ) DevOps ์ฃผ๊ธฐ ๋‹จ๊ณ„: ์ƒ์„ฑ

๋จธ๋ฆฌ๋ง์€ ์ •์  ์‚ฌ์ดํŠธ ์ƒ์„ฑ๊ธฐ์—์„œ ์ฒ˜๋ฆฌํ•  ๋ฐ์ดํ„ฐ ํŒŒ์ผ์˜ ํŽ˜์ด์ง€ ๋ณ€์ˆ˜๋ฅผ ์ •์˜ํ•˜๋Š” ์œ ์—ฐํ•˜๊ณ  ํŽธ๋ฆฌํ•œ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ํŽ˜์ด์ง€ ์ œ๋ชฉ, ๋ ˆ์ด์•„์›ƒ ํ…œํ”Œ๋ฆฟ ๋˜๋Š” ์ž‘์„ฑ์ž๋ฅผ ์„ค์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜์ง€๋งŒ HTML๋กœ ํŽ˜์ด์ง€๋ฅผ ๋ Œ๋”๋งํ•  ๋•Œ ๋ชจ๋“  ์œ ํ˜•์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑ๊ธฐ์— ์ „๋‹ฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๋ฐ์ดํ„ฐ ํŒŒ์ผ์˜ ๋งจ ์œ„์— ํฌํ•จ๋œ ์†Œ๊ฐœ ๋ถ€๋ถ„์€ ์ผ๋ฐ˜์ ์œผ๋กœ YAML ๋˜๋Š” JSON ํ˜•์‹์œผ๋กœ ๊ตฌ์„ฑ๋˜๋ฉฐ ์ผ๊ด€๋˜๊ณ  ์ •ํ™•ํ•œ ๊ตฌ๋ฌธ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ํŠน์ • ๊ตฌ๋ฌธ ๊ทœ์น™์— ์ต์ˆ™ํ•˜์ง€ ์•Š์€ ์‚ฌ์šฉ์ž๋Š” ์‹ค์ˆ˜๋กœ ์ž˜๋ชป๋œ ๋งˆํฌ์—…์„ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด๋กœ ์ธํ•ด ํ˜•์‹ ์ง€์ • ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๊ฑฐ๋‚˜ ๋นŒ๋“œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

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

# CI ๋ณ€์ˆ˜ ๋ฐ Kubernetes Agent์šฉ HashiCorp ์Šคํ† ๋ฆฌ์ง€์™€ ํ•จ๊ป˜ GitLab 13.4๊ฐ€ ์ถœ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ •์  ์‚ฌ์ดํŠธ ํŽธ์ง‘๊ธฐ ๋ฌธ์„œ ะธ ์›๋ž˜ ํ‹ฐ์ผ“.

Jira ๋ฐ DVCS ์ปค๋„ฅํ„ฐ์šฉ GitLab์ด ์ด์ œ ์ฝ”์–ด์— ์žˆ์Šต๋‹ˆ๋‹ค.

(์ฝ”์–ด, ์Šคํƒ€ํ„ฐ, ํ”„๋ฆฌ๋ฏธ์—„, ์–ผํ‹ฐ๋ฉ”์ดํŠธ, ๋ฌด๋ฃŒ, ๋ธŒ๋ก ์ฆˆ, ์‹ค๋ฒ„, ๊ณจ๋“œ) DevOps ์ฃผ๊ธฐ ๋‹จ๊ณ„: ์ƒ์„ฑ

GitLab์˜ Jira ์‚ฌ์šฉ์ž์˜ ๊ฒฝ์šฐ: Jira์šฉ GitLab ์•ฑ ะธ DVCS ์ปค๋„ฅํ„ฐ GitLab ์ปค๋ฐ‹ ๋ฐ ๋ณ‘ํ•ฉ ์š”์ฒญ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ Jira์— ์ง์ ‘ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด์žฅ๋œ Jira ํ†ตํ•ฉ ๊ธฐ๋Šฅ๊ณผ ๊ฒฐํ•ฉํ•˜๋ฉด ์ž‘์—…ํ•˜๋ฉด์„œ ๋‘ ์•ฑ ์‚ฌ์ด๋ฅผ ์‰ฝ๊ฒŒ ์ด๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์€ ์ด์ „์—๋Š” ํ”„๋ฆฌ๋ฏธ์—„ ํ”Œ๋žœ์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์—ˆ์ง€๋งŒ ์ด์ œ๋Š” ๋ชจ๋“  ์‚ฌ์šฉ์ž๊ฐ€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!

Jira ํ†ตํ•ฉ ๋ฌธ์„œ ะธ ์›๋ž˜ ํ‹ฐ์ผ“.

Gitaly ํด๋Ÿฌ์Šคํ„ฐ ํŠธ๋žœ์žญ์…˜์— ๋Œ€ํ•œ ๋‹ค์ˆ˜ ํˆฌํ‘œ(๋ฒ ํƒ€)

(์ฝ”์–ด, ์Šคํƒ€ํ„ฐ, ํ”„๋ฆฌ๋ฏธ์—„, ์–ผํ‹ฐ๋ฐ‹) DevOps ์ฃผ๊ธฐ ๋‹จ๊ณ„: ์ƒ์„ฑ

Gitaly ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด Git ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ์—ฌ๋Ÿฌ "์›œ" Gitaly ๋…ธ๋“œ์— ๋ณต์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋‹จ์ผ ์‹คํŒจ ์ง€์ ์„ ์ œ๊ฑฐํ•˜์—ฌ ๋‚ด๊ฒฐํ•จ์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค. ๊ฑฐ๋ž˜ ์šด์˜GitLab 13.3์— ๋„์ž…๋œ , ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ํด๋Ÿฌ์Šคํ„ฐ์˜ ๋ชจ๋“  Gitaly ๋…ธ๋“œ์— ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ๋˜์ง€๋งŒ ๊ธฐ๋ณธ ๋…ธ๋“œ์— ๋™์˜ํ•˜๋Š” Gitaly ๋…ธ๋“œ๋งŒ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋””์Šคํฌ์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ๋ณต์ œ๋ณธ ๋…ธ๋“œ๊ฐ€ ๋™์˜ํ•˜์ง€ ์•Š์œผ๋ฉด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์˜ ๋ณต์‚ฌ๋ณธ ํ•˜๋‚˜๋งŒ ๋””์Šคํฌ์— ์ €์žฅ๋˜์–ด ๋น„๋™๊ธฐ์‹ ๋ณต์ œ๊ฐ€ ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๋‹จ์ผ ์‹คํŒจ ์ง€์ ์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

๋‹ค์ˆ˜๊ฒฐ ํˆฌํ‘œ๋Š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋””์Šคํฌ์— ์ €์žฅํ•˜๊ธฐ ์ „์— ๋‹ค์ˆ˜์˜ ๋…ธ๋“œ(์ „์ฒด๋Š” ์•„๋‹˜)์˜ ๋™์˜๋ฅผ ์š”๊ตฌํ•˜์—ฌ ๋‚ด๊ฒฐํ•จ์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค. ์ด ํ† ๊ธ€ ๊ธฐ๋Šฅ์ด ํ™œ์„ฑํ™”๋˜๋ฉด ์—ฌ๋Ÿฌ ๋…ธ๋“œ์—์„œ ์“ฐ๊ธฐ๊ฐ€ ์„ฑ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋Œ€ ๋…ธ๋“œ๋Š” ์ฟผ๋Ÿผ์„ ๊ตฌ์„ฑํ•œ ๋…ธ๋“œ์˜ ๋น„๋™๊ธฐ ๋ณต์ œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž๋™์œผ๋กœ ๋™๊ธฐํ™”๋ฉ๋‹ˆ๋‹ค.

Gitaly์˜ ์ผ๊ด€์„ฑ ์„ค์ •์— ๋Œ€ํ•œ ๋ฌธ์„œ ะธ ์›๋ž˜ ํ‹ฐ์ผ“.

Web IDE์—์„œ JSON ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ์œ„ํ•œ ์‚ฌ์šฉ์ž ์ •์˜ ์Šคํ‚ค๋งˆ ์ง€์›

(ํ”„๋ฆฌ๋ฏธ์—„, ์–ผํ‹ฐ๋ฐ‹, ์‹ค๋ฒ„, ๊ณจ๋“œ) DevOps ์ฃผ๊ธฐ ๋‹จ๊ณ„: ์ƒ์„ฑ

์‚ฌ๋žŒ๋“ค์ด JSON ๋˜๋Š” YAML๋กœ ๊ตฌ์„ฑ์„ ์ž‘์„ฑํ•˜๋Š” ํ”„๋กœ์ ํŠธ๋Š” ์˜คํƒ€๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ  ๋ฌด์–ธ๊ฐ€๊ฐ€ ๊นจ์ง€๊ธฐ ์‰ฝ๊ธฐ ๋•Œ๋ฌธ์— ์ข…์ข… ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค. CI ํŒŒ์ดํ”„๋ผ์ธ์—์„œ ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํฌ์ฐฉํ•˜๊ธฐ ์œ„ํ•œ ๊ฒ€์‚ฌ ๋„๊ตฌ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์ง€๋งŒ JSON ์Šคํ‚ค๋งˆ ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฌธ์„œ์™€ ํžŒํŠธ๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋ฐ ์œ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ”„๋กœ์ ํŠธ ์ฐธ๊ฐ€์ž๋Š” ์ €์žฅ์†Œ์—์„œ ํŒŒ์ผ์˜ ์‚ฌ์šฉ์ž ์ •์˜ ์Šคํ‚ค๋งˆ ๊ฒฝ๋กœ๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. .gitlab/.gitlab-webide.yml, ํ™•์ธํ•  ํŒŒ์ผ์˜ ์Šคํ‚ค๋งˆ์™€ ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ํŠน์ • ํŒŒ์ผ์„ Web IDE์— ๋กœ๋“œํ•˜๋ฉด ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” ์ถ”๊ฐ€ ํ”ผ๋“œ๋ฐฑ๊ณผ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

# CI ๋ณ€์ˆ˜ ๋ฐ Kubernetes Agent์šฉ HashiCorp ์Šคํ† ๋ฆฌ์ง€์™€ ํ•จ๊ป˜ GitLab 13.4๊ฐ€ ์ถœ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

Web IDE์˜ ์‚ฌ์šฉ์ž ์ •์˜ ์Šคํ‚ค๋งˆ์— ๋Œ€ํ•œ ๋ฌธ์„œ ะธ ์›๋ž˜ ํ‹ฐ์ผ“.

DAG(๋ฐฉํ–ฅ์„ฑ ๋น„์ˆœํ™˜ ๊ทธ๋ž˜ํ”„) ๋ถ„๊ธฐ ์ œํ•œ์ด 50์œผ๋กœ ์ฆ๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

(์ฝ”์–ด, ์Šคํƒ€ํ„ฐ, ํ”„๋ฆฌ๋ฏธ์—„, ์–ผํ‹ฐ๋ฉ”์ดํŠธ, ๋ฌด๋ฃŒ, ๋ธŒ๋ก ์ฆˆ, ์‹ค๋ฒ„, ๊ณจ๋“œ) DevOps ์ฃผ๊ธฐ ๋‹จ๊ณ„: ํ™•์ธ

์ปจ๋ฒ ์ด์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋ฐฉํ–ฅ์„ฑ ๋น„์ˆœํ™˜ ๊ทธ๋ž˜ํ”„ ํฌํ•จ (DAG(๋ฐฉํ–ฅ์„ฑ ๋น„์ˆœํ™˜ ๊ทธ๋ž˜ํ”„))์—์„œ ์ž‘์—…์ด ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋Š” ์ž‘์—…์€ 10๊ฐœ๋กœ ์ œํ•œ๋˜์–ด ์žˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. needs:, ๋„ˆ๋ฌด ๊ฐ€ํ˜นํ•ฉ๋‹ˆ๋‹ค. 13.4์—์„œ๋Š” ํŒŒ์ดํ”„๋ผ์ธ์˜ ์ž‘์—… ๊ฐ„ ๊ด€๊ณ„์˜ ๋” ๋ณต์žกํ•œ ๋„คํŠธ์›Œํฌ๋ฅผ ํ—ˆ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๊ธฐ๋ณธ ์ œํ•œ์ด 10์—์„œ 50์œผ๋กœ ๋Š˜์–ด๋‚ฌ์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž ์ •์˜ GitLab ์ธ์Šคํ„ด์Šค์˜ ๊ด€๋ฆฌ์ž์ธ ๊ฒฝ์šฐ ํ† ๊ธ€ ๊ธฐ๋Šฅ์„ ์„ค์ •ํ•˜์—ฌ ์ด ์ œํ•œ์„ ๋” ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹จ ์ด์— ๋Œ€ํ•œ ๊ณต์‹ ์ง€์›์€ ์ œ๊ณตํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ะ”ะพะบัƒะผะตะฝั‚ะฐั†ะธั ะฟะพ ะฝะฐัั‚ั€ะพะนะบะต needs: ะธ ์›๋ž˜ ํ‹ฐ์ผ“.

๊ฐœ์„ ๋œ ๋™์ž‘ needs ๋†“์นœ ๊ณผ์ œ์— ๋Œ€ํ•ด

(์ฝ”์–ด, ์Šคํƒ€ํ„ฐ, ํ”„๋ฆฌ๋ฏธ์—„, ์–ผํ‹ฐ๋ฉ”์ดํŠธ, ๋ฌด๋ฃŒ, ๋ธŒ๋ก ์ฆˆ, ์‹ค๋ฒ„, ๊ณจ๋“œ) DevOps ์ฃผ๊ธฐ ๋‹จ๊ณ„: ํ™•์ธ

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

ะ”ะพะบัƒะผะตะฝั‚ะฐั†ะธั ะฟะพ ะฝะฐัั‚ั€ะพะนะบะต needs ะธ ์›๋ž˜ ํ‹ฐ์ผ“.

์‚ญ์ œ๋˜์ง€ ์•Š๋„๋ก ๋งˆ์ง€๋ง‰ ํ€˜์ŠคํŠธ ์•„ํ‹ฐํŒฉํŠธ๋ฅผ ๊ณ ์ •ํ•˜์„ธ์š”.

(์ฝ”์–ด, ์Šคํƒ€ํ„ฐ, ํ”„๋ฆฌ๋ฏธ์—„, ์–ผํ‹ฐ๋ฉ”์ดํŠธ, ๋ฌด๋ฃŒ, ๋ธŒ๋ก ์ฆˆ, ์‹ค๋ฒ„, ๊ณจ๋“œ) DevOps ์ฃผ๊ธฐ ๋‹จ๊ณ„: ํ™•์ธ

์ด์ œ GitLab์€ ๋งŒ๋ฃŒ ํ›„ ์‚ญ์ œ๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ํ™œ์„ฑ ๋ถ„๊ธฐ, ๋ณ‘ํ•ฉ ์š”์ฒญ ๋˜๋Š” ํƒœ๊ทธ์—์„œ ๋งˆ์ง€๋ง‰์œผ๋กœ ์„ฑ๊ณตํ•œ ์ž‘์—… ๋ฐ ํŒŒ์ดํ”„๋ผ์ธ ์•„ํ‹ฐํŒฉํŠธ๋ฅผ ์ž๋™์œผ๋กœ ์ž ๊ธ‰๋‹ˆ๋‹ค. ์˜ค๋ž˜๋œ ์•„ํ‹ฐํŒฉํŠธ๋ฅผ ์ •๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ๋”์šฑ ๊ณต๊ฒฉ์ ์ธ ๋งŒ๋ฃŒ ๊ทœ์น™์„ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ๋” ์‰ฌ์›Œ์กŒ์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋””์Šคํฌ ๊ณต๊ฐ„ ์†Œ๋น„๋ฅผ ์ค„์ด๊ณ  ํ•ญ์ƒ ํŒŒ์ดํ”„๋ผ์ธ์˜ ์ตœ์‹  ์•„ํ‹ฐํŒฉํŠธ ๋ณต์‚ฌ๋ณธ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•„ํ‹ฐํŒฉํŠธ ๋งŒ๋ฃŒ์— ๊ด€ํ•œ ๋ฌธ์„œ ะธ ์›๋ž˜ ํ‹ฐ์ผ“.

ํŒŒ์ดํ”„๋ผ์ธ ์ตœ์ ํ™”๋ฅผ ์œ„ํ•œ CI/CD ๊ฐ€์ด๋“œ

(์ฝ”์–ด, ์Šคํƒ€ํ„ฐ, ํ”„๋ฆฌ๋ฏธ์—„, ์–ผํ‹ฐ๋ฉ”์ดํŠธ, ๋ฌด๋ฃŒ, ๋ธŒ๋ก ์ฆˆ, ์‹ค๋ฒ„, ๊ณจ๋“œ) DevOps ์ฃผ๊ธฐ ๋‹จ๊ณ„: ํ™•์ธ

CI/CD ํŒŒ์ดํ”„๋ผ์ธ์„ ์ตœ์ ํ™”ํ•˜๋ฉด ์ „์†ก ์†๋„๋ฅผ ํ–ฅ์ƒํ•˜๊ณ  ๋น„์šฉ์„ ์ ˆ๊ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŒŒ์ดํ”„๋ผ์ธ ์ตœ์ ํ™”๋ฅผ ์ตœ๋Œ€ํ•œ ํ™œ์šฉํ•˜๊ธฐ ์œ„ํ•œ ๋น ๋ฅธ ๊ฐ€์ด๋“œ๋ฅผ ํฌํ•จํ•˜๋„๋ก ์„ค๋ช…์„œ๋ฅผ ๊ฐœ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ปจ๋ฒ ์ด์–ด ํšจ์œจ์„ฑ ํ–ฅ์ƒ์— ๊ด€ํ•œ ๋ฌธ์„œ ะธ ์›๋ž˜ ํ‹ฐ์ผ“.

ํ…Œ์ŠคํŠธ ์ƒํƒœ๋ณ„๋กœ ์ •๋ ฌ๋œ ํ…Œ์ŠคํŠธ ๋ณด๊ณ ์„œ

(์ฝ”์–ด, ์Šคํƒ€ํ„ฐ, ํ”„๋ฆฌ๋ฏธ์—„, ์–ผํ‹ฐ๋ฉ”์ดํŠธ, ๋ฌด๋ฃŒ, ๋ธŒ๋ก ์ฆˆ, ์‹ค๋ฒ„, ๊ณจ๋“œ) DevOps ์ฃผ๊ธฐ ๋‹จ๊ณ„: ํ™•์ธ

๋‹จ์œ„ ํ…Œ์ŠคํŠธ ๋ณด๊ณ ์„œ ํŒŒ์ดํ”„๋ผ์ธ์˜ ๋ชจ๋“  ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ๋ฅผ ์‰ฝ๊ฒŒ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ…Œ์ŠคํŠธ ์ˆ˜๊ฐ€ ๋งŽ์œผ๋ฉด ์‹คํŒจํ•œ ํ…Œ์ŠคํŠธ๋ฅผ ์ฐพ๋Š” ๋ฐ ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณด๊ณ ์„œ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์–ด๋ ต๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๋‹ค๋ฅธ ๋ฌธ์ œ๋กœ๋Š” ๊ธด ์ถ”์  ์ถœ๋ ฅ์„ ์Šคํฌ๋กคํ•˜๋Š” ๋ฐ ์–ด๋ ค์›€์ด ์žˆ๊ณ  1์ดˆ ์ด๋‚ด์— ์‹คํ–‰๋˜๋Š” ํ…Œ์ŠคํŠธ์˜ ๊ฒฝ์šฐ XNUMX์œผ๋กœ ๋ฐ˜์˜ฌ๋ฆผ๋˜๋Š” ์‹œ๊ฐ„์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ์ด์ œ ๊ธฐ๋ณธ์ ์œผ๋กœ ํ…Œ์ŠคํŠธ ๋ณด๊ณ ์„œ๋ฅผ ์ •๋ ฌํ•  ๋•Œ ๋จผ์ € ์‹คํŒจํ•œ ํ…Œ์ŠคํŠธ๋ฅผ ๋ณด๊ณ ์„œ ์‹œ์ž‘ ๋ถ€๋ถ„์— ๋ฐฐ์น˜ํ•œ ๋‹ค์Œ ํ…Œ์ŠคํŠธ๋ฅผ ๊ธฐ๊ฐ„๋ณ„๋กœ ์ •๋ ฌํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์‹คํŒจ์™€ ๊ธด ํ…Œ์ŠคํŠธ๋ฅผ ๋” ์‰ฝ๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ํ…Œ์ŠคํŠธ ๊ธฐ๊ฐ„์ด ์ด์ œ ๋ฐ€๋ฆฌ์ดˆ ๋˜๋Š” ์ดˆ ๋‹จ์œ„๋กœ ํ‘œ์‹œ๋˜๋ฏ€๋กœ ํ›จ์”ฌ ๋” ๋น ๋ฅด๊ฒŒ ์ฝ์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ด์ „ ์Šคํฌ๋กค ๋ฌธ์ œ๋„ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋‹จ์œ„ ํ…Œ์ŠคํŠธ ๋ณด๊ณ  ๋ฌธ์„œ ะธ ์›๋ž˜ ํ‹ฐ์ผ“.

ํŒจํ‚ค์ง€ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์— ์—…๋กœ๋“œ๋˜๋Š” ํŒŒ์ผ ํฌ๊ธฐ ์ œํ•œ

(์ฝ”์–ด, ์Šคํƒ€ํ„ฐ, ํ”„๋ฆฌ๋ฏธ์—„, ์–ผํ‹ฐ๋ฉ”์ดํŠธ, ๋ฌด๋ฃŒ, ๋ธŒ๋ก ์ฆˆ, ์‹ค๋ฒ„, ๊ณจ๋“œ) DevOps ์ฃผ๊ธฐ ๋‹จ๊ณ„: ํŒจํ‚ค์ง€

์ด์ œ GitLab ํŒจํ‚ค์ง€ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์— ์—…๋กœ๋“œํ•  ์ˆ˜ ์žˆ๋Š” ํŒจํ‚ค์ง€ ํŒŒ์ผ์˜ ํฌ๊ธฐ์— ์ œํ•œ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ํŒจํ‚ค์ง€ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ•˜๊ณ  ๋‚จ์šฉ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์ œํ•œ ์‚ฌํ•ญ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ•œ๋„๋Š” ํŒจํ‚ค์ง€ ํ˜•์‹์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. GitLab.com์˜ ๊ฒฝ์šฐ ์ตœ๋Œ€ ํŒŒ์ผ ํฌ๊ธฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ์ฝ”๋‚œ: 250MB
  • ๋ฉ”์ด๋ธ: 3GB
  • NPM: 300MB
  • NuGet: 250MB
  • PyPI: 3GB

์‚ฌ์šฉ์ž ์ •์˜ GitLab ์ธ์Šคํ„ด์Šค์˜ ๊ฒฝ์šฐ ๊ธฐ๋ณธ๊ฐ’์€ ๋™์ผํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ด€๋ฆฌ์ž๋Š” ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ œํ•œ ์‚ฌํ•ญ์„ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ ˆ์ผ์Šค ์ฝ˜์†”.

ํŒŒ์ผ ํฌ๊ธฐ ์ œํ•œ์— ๋Œ€ํ•œ ๋ฌธ์„œ ะธ ์›๋ž˜ ํ‹ฐ์ผ“.

CI_JOB_TOKEN์„ ์‚ฌ์šฉํ•˜์—ฌ PyPI ํŒจํ‚ค์ง€ ๊ฒŒ์‹œ

(์ฝ”์–ด, ์Šคํƒ€ํ„ฐ, ํ”„๋ฆฌ๋ฏธ์—„, ์–ผํ‹ฐ๋ฉ”์ดํŠธ, ๋ฌด๋ฃŒ, ๋ธŒ๋ก ์ฆˆ, ์‹ค๋ฒ„, ๊ณจ๋“œ) DevOps ์ฃผ๊ธฐ ๋‹จ๊ณ„: ํŒจํ‚ค์ง€

GitLab PyPI ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์†Œ์Šค ์ฝ”๋“œ ๋ฐ CI/CD ํŒŒ์ดํ”„๋ผ์ธ๊ณผ ํ•จ๊ป˜ Python ํŒจํ‚ค์ง€๋ฅผ ์ƒ์„ฑ, ๊ฒŒ์‹œ ๋ฐ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด์ „์—๋Š” ์‚ฌ์ „ ์ •์˜๋œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ €์žฅ์†Œ์— ์ธ์ฆํ•  ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. CI_JOB_TOKEN. ๊ฒฐ๊ณผ์ ์œผ๋กœ ๊ฐœ์ธ ์ž๊ฒฉ ์ฆ๋ช…์„ ์‚ฌ์šฉํ•˜์—ฌ PyPI ์ €์žฅ์†Œ๋ฅผ ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•˜๊ฑฐ๋‚˜ ์ €์žฅ์†Œ๋ฅผ ์ „ํ˜€ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด์ œ GitLab CI/CD๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์ „ ์ •์˜๋œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ PyPI ํŒจํ‚ค์ง€๋ฅผ ๊ฒŒ์‹œํ•˜๊ณ  ์„ค์น˜ํ•˜๋Š” ๊ฒƒ์ด ๋” ์‰ฌ์›Œ์กŒ์Šต๋‹ˆ๋‹ค. CI_JOB_TOKEN.

PyPI ํŒจํ‚ค์ง€์™€ ํ•จ๊ป˜ GitLab CI ์‚ฌ์šฉ์— ๋Œ€ํ•œ ๋ฌธ์„œ ะธ ์›๋ž˜ ํ‹ฐ์ผ“.

์š”์ฒญ ์‹œ DAST ์Šค์บ๋„ˆ ํ”„๋กœํ•„

(๊ถ๊ทน๊ธฐ, ๊ณจ๋“œ) DevOps ์ฃผ๊ธฐ ๋‹จ๊ณ„: ๋ณด์•ˆ

์ฃผ๋ฌธํ˜• DAST ์Šค์บ”์— ์ด์ „ ๋ฆด๋ฆฌ์Šค์— ์†Œ๊ฐœ๋œ, DAST ์Šค์บ๋„ˆ ํ”„๋กœํ•„์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์Šค์บ”์˜ ๊ตฌ์„ฑ ๊ธฐ๋Šฅ์„ ํ™•์žฅํ•˜์—ฌ ์—ฌ๋Ÿฌ ์Šค์บ” ์œ ํ˜•์„ ํฌ๊ด„ํ•˜๋Š” ์—ฌ๋Ÿฌ ํ”„๋กœํ•„์„ ๋น ๋ฅด๊ฒŒ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 13.4์˜ ํฌ๋กค๋Ÿฌ ํ”„๋กœํ•„์—๋Š” DAST ํฌ๋กค๋Ÿฌ๊ฐ€ ํฌ๋กค๋ง๋œ ์‚ฌ์ดํŠธ์˜ ๋ชจ๋“  ํŽ˜์ด์ง€๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋ ค๊ณ  ์‹œ๋„ํ•  ๋•Œ ์‹คํ–‰ํ•ด์•ผ ํ•˜๋Š” ์‹œ๊ฐ„์„ ์„ค์ •ํ•˜๋Š” ํฌ๋กค๋Ÿฌ ์‹œ๊ฐ„ ์ดˆ๊ณผ ์„ค์ •์ด ๊ธฐ๋ณธ์ ์œผ๋กœ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœํ•„์—๋Š” ์‚ฌ์ดํŠธ๊ฐ€ 200 ๋˜๋Š” 300 ์ƒํƒœ ์ฝ”๋“œ๋กœ ์‘๋‹ตํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ํฌ๋กค๋ง์„ ์ค‘๋‹จํ•˜๊ธฐ ์ „์— ํฌ๋กค๋Ÿฌ๊ฐ€ ์‚ฌ์ดํŠธ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์„ ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ค์•ผ ํ•˜๋Š” ์‹œ๊ฐ„์„ ์„ค์ •ํ•˜๋Š” ๋Œ€์ƒ ์‚ฌ์ดํŠธ ์‹œ๊ฐ„ ์ดˆ๊ณผ ์„ค์ •๋„ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ–ฅํ›„ ๋ฆด๋ฆฌ์Šค์—์„œ๋Š” ์Šค์บ๋„ˆ ํ”„๋กœํ•„์— ์ถ”๊ฐ€๋˜๋ฉฐ ์ถ”๊ฐ€ ๊ตฌ์„ฑ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์ถ”๊ฐ€๋  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

# CI ๋ณ€์ˆ˜ ๋ฐ Kubernetes Agent์šฉ HashiCorp ์Šคํ† ๋ฆฌ์ง€์™€ ํ•จ๊ป˜ GitLab 13.4๊ฐ€ ์ถœ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

DAST ์Šค์บ๋„ˆ ํ”„๋กœํ•„ ๋ฌธ์„œ ะธ ์›๋ž˜ ํ‹ฐ์ผ“.

GitLab ํŽ˜์ด์ง€์— ๋Œ€ํ•œ ๊ฐ„๋‹จํ•œ ๋ฆฌ๋””๋ ‰์…˜ ๊ตฌ์„ฑ ํŒŒ์ผ

(์ฝ”์–ด, ์Šคํƒ€ํ„ฐ, ํ”„๋ฆฌ๋ฏธ์—„, ์–ผํ‹ฐ๋ฉ”์ดํŠธ, ๋ฌด๋ฃŒ, ๋ธŒ๋ก ์ฆˆ, ์‹ค๋ฒ„, ๊ณจ๋“œ) DevOps ์ฃผ๊ธฐ ๋‹จ๊ณ„: ๋ฆด๋ฆฌ์Šค

GitLab ํŽ˜์ด์ง€๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  URL ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋” ์ž˜ ๊ด€๋ฆฌํ•˜๋ ค๋Š” ๊ฒฝ์šฐ GitLab ํŽ˜์ด์ง€ ์‚ฌ์ดํŠธ์—์„œ ๋ฆฌ๋””๋ ‰์…˜ ๊ด€๋ฆฌ๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ GitLab์„ ์‚ฌ์šฉํ•˜๋ฉด ์ €์žฅ์†Œ์— ๊ตฌ์„ฑ ํŒŒ์ผ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ํŽ˜์ด์ง€ ์‚ฌ์ดํŠธ์˜ ํ•œ URL์„ ๋‹ค๋ฅธ URL๋กœ ๋ฆฌ๋””๋ ‰์…˜ํ•˜๋Š” ๊ทœ์น™์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์€ Kevin Barnett(@PopeDrFreud), ์šฐ๋ฆฌ์˜ Eric Eastwood(@MadLittleMods) ๋ฐ GitLab ํŒ€. ๊ท€ํ•˜์˜ ์˜๊ฒฌ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

๋ฌธ์„œ ๋ฆฌ๋””๋ ‰์…˜ ะธ ์›๋ž˜ ํ‹ฐ์ผ“.

GitLab์—์„œ ๊ด€๋ฆฌํ•˜๋Š” Terraform ์ƒํƒœ

(์ฝ”์–ด, ์Šคํƒ€ํ„ฐ, ํ”„๋ฆฌ๋ฏธ์—„, ์–ผํ‹ฐ๋ฉ”์ดํŠธ, ๋ฌด๋ฃŒ, ๋ธŒ๋ก ์ฆˆ, ์‹ค๋ฒ„, ๊ณจ๋“œ) DevOps ์ฃผ๊ธฐ ๋‹จ๊ณ„: ๊ตฌ์„ฑ

ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๊ทœ์ • ์ค€์ˆ˜ ๋ฐ ๋””๋ฒ„๊น…์„ ์œ„ํ•ด ์ด์ „ ๋ฒ„์ „์˜ Terraform ์ƒํƒœ์— ์•ก์„ธ์Šคํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. GitLab์—์„œ ๊ด€๋ฆฌํ•˜๋Š” Terraform ์ƒํƒœ ๋ฒ„์ „ ๊ด€๋ฆฌ ์ง€์›์€ GitLab 13.4๋ถ€ํ„ฐ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด Terraform ์ƒํƒœ ํŒŒ์ผ์— ๋Œ€ํ•ด ๋ฒ„์ „ ๊ด€๋ฆฌ๊ฐ€ ์ž๋™์œผ๋กœ ํ™œ์„ฑํ™”๋ฉ๋‹ˆ๋‹ค. ๊ธฐ์กด Terraform ์ƒํƒœ ํŒŒ์ผ์€ ๋ฒ„์ „์ด ์ง€์ •๋œ ์ €์žฅ์†Œ๋กœ ์ž๋™ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜๋จ ์ดํ›„ ๋ฆด๋ฆฌ์Šค์—์„œ.

GitLab์—์„œ ๊ด€๋ฆฌํ•˜๋Š” Terraform ์ƒํƒœ์— ๋Œ€ํ•œ ๋ฌธ์„œ ะธ ์›๋ž˜ ํ‹ฐ์ผ“.

์ค‘์š”ํ•œ ์‚ฌ๊ฑด ์•Œ๋ฆผ ์„ธ๋ถ€์ •๋ณด

(์ฝ”์–ด, ์Šคํƒ€ํ„ฐ, ํ”„๋ฆฌ๋ฏธ์—„, ์–ผํ‹ฐ๋ฉ”์ดํŠธ, ๋ฌด๋ฃŒ, ๋ธŒ๋ก ์ฆˆ, ์‹ค๋ฒ„, ๊ณจ๋“œ) DevOps ์ฃผ๊ธฐ ๋‹จ๊ณ„: ๋ชจ๋‹ˆํ„ฐ๋ง

์ธ์‹œ๋˜ํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ ๊ฒฝ๊ณ ๊ฐ€ ์—ด๋ฆฐ ๊ธฐ๊ฐ„๊ณผ ์ด๋ฒคํŠธ๊ฐ€ ํŠธ๋ฆฌ๊ฑฐ๋œ ํšŸ์ˆ˜๋ฅผ ์‰ฝ๊ฒŒ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์„ธ๋ถ€ ์ •๋ณด๋Š” ๊ณ ๊ฐ์—๊ฒŒ ๋ฏธ์น˜๋Š” ์˜ํ–ฅ๊ณผ ํŒ€์ด ๋จผ์ € ํ•ด๊ฒฐํ•ด์•ผ ํ•  ์‚ฌํ•ญ์„ ๊ฒฐ์ •ํ•˜๋Š” ๋ฐ ์ค‘์š”ํ•œ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ์‚ฌ๊ฑด ์„ธ๋ถ€ ์ •๋ณด ํŒจ๋„์—๋Š” ๊ฒฝ๊ณ  ์‹œ์ž‘ ์‹œ๊ฐ„, ์ด๋ฒคํŠธ ์ˆ˜ ๋ฐ ์›๋ž˜ ๊ฒฝ๊ณ ์— ๋Œ€ํ•œ ๋งํฌ๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์ด ์ •๋ณด๋Š” ๊ฒฝ๊ณ ์—์„œ ์ƒ์„ฑ๋œ ์ธ์‹œ๋˜ํŠธ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

# CI ๋ณ€์ˆ˜ ๋ฐ Kubernetes Agent์šฉ HashiCorp ์Šคํ† ๋ฆฌ์ง€์™€ ํ•จ๊ป˜ GitLab 13.4๊ฐ€ ์ถœ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ๊ณ  ๊ด€๋ฆฌ ๋ฌธ์„œ ะธ ์˜ค๋ฆฌ์ง€๋„ ์„œ์‚ฌ์‹œ.

์‚ฌ๊ณ  ์‹ฌ๊ฐ๋„ ๋งค๊ฐœ๋ณ€์ˆ˜ ์„ค์ • ๋ฐ ํŽธ์ง‘

(์ฝ”์–ด, ์Šคํƒ€ํ„ฐ, ํ”„๋ฆฌ๋ฏธ์—„, ์–ผํ‹ฐ๋ฉ”์ดํŠธ, ๋ฌด๋ฃŒ, ๋ธŒ๋ก ์ฆˆ, ์‹ค๋ฒ„, ๊ณจ๋“œ) DevOps ์ฃผ๊ธฐ ๋‹จ๊ณ„: ๋ชจ๋‹ˆํ„ฐ๋ง

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

# CI ๋ณ€์ˆ˜ ๋ฐ Kubernetes Agent์šฉ HashiCorp ์Šคํ† ๋ฆฌ์ง€์™€ ํ•จ๊ป˜ GitLab 13.4๊ฐ€ ์ถœ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ๊ณ  ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ๋ฌธ์„œ ะธ ์›๋ž˜ ํ‹ฐ์ผ“.

์ปจํ…Œ์ด๋„ˆ ๋„คํŠธ์›Œํฌ ๋ณด์•ˆ ๊ทœ์น™ ์ƒ์„ฑ, ํŽธ์ง‘ ๋ฐ ์‚ญ์ œ

(๊ถ๊ทน๊ธฐ, ๊ณจ๋“œ) DevOps ์ฃผ๊ธฐ ๋‹จ๊ณ„: ๋ฐฉ์–ด

์ปจํ…Œ์ด๋„ˆ ๋„คํŠธ์›Œํฌ ๋ณด์•ˆ ๊ทœ์น™ ํŽธ์ง‘๊ธฐ์˜ ํ–ฅ์ƒ๋œ ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ์‚ฌ์šฉ์ž๋Š” GitLab ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค์—์„œ ์ง์ ‘ ๊ทœ์น™์„ ์‰ฝ๊ฒŒ ์ƒ์„ฑ, ํŽธ์ง‘ ๋ฐ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŽธ์ง‘๊ธฐ ๊ธฐ๋Šฅ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค .yaml ์ˆ™๋ จ๋œ ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•œ ๊ฒƒ์ด๋ฉฐ ๋„คํŠธ์›Œํฌ ๊ทœ์น™์„ ์ฒ˜์Œ ์ ‘ํ•˜๋Š” ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•œ ์ง๊ด€์ ์ธ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ฐ–์ถ˜ ๊ทœ์น™ ํŽธ์ง‘๊ธฐ์ž…๋‹ˆ๋‹ค. ์„น์…˜์—์„œ ์ƒˆ๋กœ์šด ๊ทœ์น™ ๊ด€๋ฆฌ ์˜ต์…˜์„ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณด์•ˆ ๋ฐ ๊ทœ์ • ์ค€์ˆ˜ > ์œ„ํ˜‘ ๊ด€๋ฆฌ > ๊ทœ์น™ (๋ณด์•ˆ ๋ฐ ๊ทœ์ • ์ค€์ˆ˜ > ์œ„ํ˜‘ ๊ด€๋ฆฌ > ์ •์ฑ…).

# CI ๋ณ€์ˆ˜ ๋ฐ Kubernetes Agent์šฉ HashiCorp ์Šคํ† ๋ฆฌ์ง€์™€ ํ•จ๊ป˜ GitLab 13.4๊ฐ€ ์ถœ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋„คํŠธ์›Œํฌ ๊ทœ์น™ ํŽธ์ง‘๊ธฐ ๋ฌธ์„œ ะธ ์˜ค๋ฆฌ์ง€๋„ ์„œ์‚ฌ์‹œ.

Azure Blob ์ €์žฅ์†Œ ์ง€์›

(์ฝ”์–ด, ์Šคํƒ€ํ„ฐ, ํ”„๋ฆฌ๋ฏธ์—„, ์–ผํ‹ฐ๋ฉ”์ดํŠธ, ๋ฌด๋ฃŒ, ๋ธŒ๋ก ์ฆˆ, ์‹ค๋ฒ„, ๊ณจ๋“œ) ๊ฐ€์šฉ์„ฑ

์ด์ œ GitLab๊ณผ GitLab Runner๊ฐ€ ๋ชจ๋‘ ์ง€์›๋ฉ๋‹ˆ๋‹ค. Azure Blob ์ €์žฅ์†Œ, Azure์—์„œ GitLab ์„œ๋น„์Šค๋ฅผ ๋” ์‰ฝ๊ฒŒ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

GitLab ์ธ์Šคํ„ด์Šค๋Š” LFS ํŒŒ์ผ, CI ์•„ํ‹ฐํŒฉํŠธ๋ฅผ ํฌํ•จํ•œ ๋ชจ๋“  ์œ ํ˜•์˜ ๊ฐœ์ฒด ์ €์žฅ์†Œ์— ๋Œ€ํ•ด Azure๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๋ฐฑ์—…. Azure Blob Storage๋ฅผ ์„ค์ •ํ•˜๋ ค๋ฉด ์„ค์น˜ ์ง€์นจ์„ ๋”ฐ๋ฅด์„ธ์š”. ์˜ด๋‹ˆ๋ฒ„์Šค ๋˜๋Š” ํ—ฌ๋ฆ„ ์ฐจํŠธ.

GitLab ์ž‘์—… ํ”„๋กœ์„ธ์„œ๋Š” ์ €์žฅ์„ ์œ„ํ•ด Azure๋„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๋ถ„์‚ฐ ์บ์‹œ. Azure Storage๋Š” ์„น์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. [runners.cache.azure].

Azure Blob Storage ์‚ฌ์šฉ์— ๋Œ€ํ•œ ์„ค๋ช…์„œ ะธ ์›๋ž˜ ํ‹ฐ์ผ“.

Ubuntu ๋ฐ OpenSUSE์šฉ Omnibus ARM64 ํŒจํ‚ค์ง€

(์ฝ”์–ด, ์Šคํƒ€ํ„ฐ, ํ”„๋ฆฌ๋ฏธ์—„, ์–ผํ‹ฐ๋ฐ‹) ๊ฐ€์šฉ์„ฑ

64๋น„ํŠธ ARM ์•„ํ‚คํ…์ฒ˜์—์„œ GitLab์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ์ง€์›์— ๋Œ€ํ•œ ์ˆ˜์š”๊ฐ€ ์ฆ๊ฐ€ํ•จ์— ๋”ฐ๋ผ ๊ณต์‹ ARM64 Ubuntu 20.04 Omnibus ํŒจํ‚ค์ง€์˜ ์ถœ์‹œ๋ฅผ ๋ฐœํ‘œํ•˜๊ฒŒ ๋œ ๊ฒƒ์„ ๊ธฐ์˜๊ฒŒ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ํฐ ๊ณตํ—Œ์„ ํ•ด์ฃผ์‹  Zitai Chen๊ณผ Guillaume Gardet์—๊ฒŒ ํฐ ๊ฐ์‚ฌ๋ฅผ ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์ด๋“ค์˜ ๋ณ‘ํ•ฉ ์š”์ฒญ์ด ์—ฌ๊ธฐ์„œ ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค!

Ubuntu 20.04์šฉ ํŒจํ‚ค์ง€๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ์„ค์น˜ํ•˜๋ ค๋ฉด ๋‹ค์Œ์œผ๋กœ ์ด๋™ํ•˜์„ธ์š”. ์„ค์น˜ ํŽ˜์ด์ง€ ๊ทธ๋ฆฌ๊ณ  ์„ ํƒ Ubuntu.

ARM64์šฉ ํŒจํ‚ค์ง€ ๋ฌธ์„œ ะธ ์›๋ž˜ ํ‹ฐ์ผ“.

GitLab Helm ์ฐจํŠธ์— ๋Œ€ํ•œ ์Šค๋งˆํŠธ ์นด๋“œ ์ธ์ฆ ์ง€์›

(ํ”„๋ฆฌ๋ฏธ์—„, ์–ผํ‹ฐ๋ฐ‹) ๊ฐ€์šฉ์„ฑ

์ด์ œ CAC(Common Access Card)์™€ ๊ฐ™์€ ์Šค๋งˆํŠธ ์นด๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Helm ์ฐจํŠธ๋ฅผ ํ†ตํ•ด ๋ฐฐํฌ๋œ GitLab ์ธ์Šคํ„ด์Šค๋ฅผ ์ธ์ฆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์Šค๋งˆํŠธ ์นด๋“œ๋Š” X.509 ์ธ์ฆ์„œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋กœ์ปฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ•ด ์ธ์ฆ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด Helm ์ฐจํŠธ์˜ ์Šค๋งˆํŠธ ์นด๋“œ ์ง€์›์€ ์ด์ œ Omnibus ๋ฐฐํฌ์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์Šค๋งˆํŠธ ์นด๋“œ ์ง€์›๊ณผ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค.

์Šค๋งˆํŠธ ์นด๋“œ ์ธ์ฆ ์„ค์ • ์„ค๋ช…์„œ ะธ ์›๋ž˜ ํ‹ฐ์ผ“.

์ž์„ธํ•œ ๋ฆด๋ฆฌ์Šค ๋…ธํŠธ์™€ ์—…๋ฐ์ดํŠธ/์„ค์น˜ ์ง€์นจ์€ ์›๋ณธ ์˜์–ด ๊ฒŒ์‹œ๋ฌผ์—์„œ ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. CI ๋ณ€์ˆ˜ ๋ฐ Kubernetes ์—์ด์ „ํŠธ์šฉ Vault์™€ ํ•จ๊ป˜ ์ถœ์‹œ๋œ GitLab 13.4.

์šฐ๋ฆฌ๋Š” ์˜์–ด ๋ฒˆ์—ญ ์ž‘์—…์„ ํ•˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์นดํ‹ฐ๋‘๋ฅด๋ด, ๋ฉ”๋ฆฌ์•„ํŠธํ‚ค, ์•„์ด๋…ธ๋„ค์ฝ” ะธ ๋ฆฌ์ƒค๋ฐ˜ํŠธ.

์ถœ์ฒ˜ : habr.com

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