์ฑ„๋„ํ†ก ์•„์ด์ฝ˜

Jenkins๋ฅผ ์ด์šฉํ•œ CI/CD Pipeline ๊ตฌ์ถ•

๋ณธ ๊ฐ•์˜๋Š” ํด๋ผ์šฐ๋“œ ๋„ค์ดํ‹ฐ๋ธŒ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์„ฑํ•˜๋Š” 4๊ฐ€์ง€ ํ•ต์‹ฌ ์š”์†Œ(MSA, CI/CD, DevOps, Container) ์ค‘ ํ•˜๋‚˜์ธ CI(Continuous Integration, ์ง€์†์ ์ธ ํ†ตํ•ฉ)๊ณผ CD(Continuous Deployment, ์ง€์†์ ์ธ ๋ฐฐํฌ) ํŒŒ์ดํ”„๋ผ์ธ์— ๋Œ€ํ•œ ๋‹ค๋ฃจ๋Š” ๊ฐ•์˜์ž…๋‹ˆ๋‹ค. ๋ณธ ๊ฐ•์˜๋ฅผ ํ†ตํ•ด CI/CD ๋„๊ตฌ์ธ Jenkins๋ฅผ ์ด์šฉํ•˜์—ฌ ๋กœ์ปฌ ํ™˜๊ฒฝ๊ณผ ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์— ์ž์‹ ๋งŒ์˜ ์ž๋™ํ™” ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ตฌ์ถ•ํ•˜๊ณ , ๋ฐฐํฌํ•˜๋Š” ๋ฐ์— ํ•„์š”ํ•œ ๊ณผ์ •์„ ์ดํ•ดํ•˜๊ณ  ์‹ค์Šตํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

(4.7) ์ˆ˜๊ฐ•ํ‰ 227๊ฐœ

์ˆ˜๊ฐ•์ƒ 4,735๋ช…

๋‚œ์ด๋„ ์ดˆ๊ธ‰

์ˆ˜๊ฐ•๊ธฐํ•œ ๋ฌด์ œํ•œ

์ƒˆ์†Œ์‹

5 ๊ฐœ

  • Dowon Lee๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€

    ์•ˆ๋…•ํ•˜์„ธ์š”, ์ด๋„์›์ž…๋‹ˆ๋‹ค.

    "Jenkins๋ฅผ ์ด์šฉํ•œ CI/CD Pipeline ๊ตฌ์ถ•" ๊ฐ•์˜์™€ "DevOps๋ฅผ ์œ„ํ•œ Docker ๊ฐ€์ƒํ™” ๊ธฐ์ˆ  (Private Harbor Registry)" ๊ฐ•์˜์—์„œ๋Š” ์›ํ• ํ•œ Docker ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰์„ ์œ„ํ•ด DinD (Docker in Docker) ๋ฐฉ์‹์œผ๋กœ ์‹ค์Šต ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•˜์—ฌ ์˜ˆ์ œ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

    ๋‹ค๋งŒ, Windows์™€ MacOS ํ™˜๊ฒฝ์ด ๊ฐ๊ฐ ๋‹ค๋ฅด๊ณ , MacOS์˜ ๊ฒฝ์šฐ Intel chip, Apple chip์— ๋”ฐ๋ผ ๊ตฌ์„ฑํ•ด์•ผ ํ•˜๋Š” ๋„์ปค ์ด๋ฏธ์ง€๊ฐ€ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค. ํ•ด๋‹น ์ด๋ฏธ์ง€์—์„œ๋Š” SSH ์„œ๋ฒ„์™€ Docker ์—”์ง„์ด ์„ค์น˜ ๋˜์–ด ์žˆ๋„๋ก ๊ตฌ์„ฑํ•˜์—ฌ, ์‹ค์Šต ์‹œ, ์—ฌ๋Ÿฌ ๋„์ปค ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ํ•„์š”ํ•  ๊ฒฝ์šฐ์— ์‚ฌ์šฉ์ด ์šฉ์ดํ•˜๋„๋ก ๊ตฌ์„ฑํ•˜์˜€๋Š”๋ฐ, ์ˆ˜๊ฐ•์ƒ ๋ถ„๋“ค์˜ ํ™˜๊ฒฝ์— ๋ชจ๋‘ ๋งž๋„๋ก ์ œ์ž‘ํ•˜๋Š”๊ฒƒ์—๋Š” ๋ฌด๋ฆฌ๊ฐ€ ์žˆ๋Š” ๊ฒƒ๋„ ์‚ฌ์‹ค์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜๋„, ์ตœ๋Œ€ํ•œ ์ผ๋ฐ˜์ ์ธ ํ™˜๊ฒฝ์—์„œ๋Š” ๋ฌด๋ฆฌ์—†์ด ์‹ค์Šต ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์ปค ์ด๋ฏธ์ง€๋ฅผ ์—…๋ฐ์ดํŠธ ํ•˜๋ ค๊ณ  ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

    ์ตœ๊ทผ์— MacOS Apple chip์—์„œ ์‚ฌ์šฉํ•˜๋Š” docker-server:m1 ์ด๋ฏธ์ง€๋ฅผ ์ด์šฉํ•˜์—ฌ ์‹ค์Šต ์‹œ, ์•„๋ž˜์™€ ๊ฐ™์€ ์˜ค๋ฅ˜ ๋“ฑ์œผ๋กœ ์‹ค์Šต์ด ์•ˆ๋˜๋Š” ์˜ค๋ฅ˜๊ฐ€ ํ™•์ธ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

    exec /docker-entrypoint.sh: invalid argument

    ์—ฌ๋Ÿฌ ๊ฒฝ๋กœ๋กœ ํ™•์ธํ•ด ๋ณด๊ณ  ์ˆ˜์ •๋„ ํ•ด ๋ณด์•˜๋Š”๋ฐ, MacOS Apple chip์—์„œ ์‚ฌ์šฉํ•˜๋Š” arm64 ์•„ํ‚คํ…์ฒ˜์— Docker ์ปจํ…Œ์ด๋„ˆ์— ๋„์ปค ์—”์ง„์„ ์„ค์น˜ํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋Š” DinD ๋ฐฉ์‹์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒ๋˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. (์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋‚˜ ๋กœ๊ทธ๊ฐ€ ์—†์–ด ์›์ธ์„ ์ฐพ๋Š” ๊ฒƒ์—๋Š” ํ•œ๊ณ„๊ฐ€ ์žˆ๋„ค์š”)

    ํ•ด๋‹น ์ด๋ฏธ์ง€๋กœ๋Š” ํ•ด๊ฒฐํ•˜๊ธฐ๊ฐ€ ์–ด๋ ต๋‹ค๊ณ  ํŒ๋‹จ๋˜์–ด, ์•„๋ž˜์™€ ๊ฐ™์ด Ubuntu ๋ฒ ์ด์Šค์— SSH + Docker ์—”์ง„์„ ์„ค์น˜ํ•œ ๋ฒ„์ „์„ ๋‹ค์‹œ ๋นŒ๋“œํ•˜์—ฌ ๋ฐฐํฌ ํ–ˆ์Šต๋‹ˆ๋‹ค.

    https://hub.docker.com/repository/docker/edowon0623/docker-server/general

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

    service start docker

    ์•ž์œผ๋กœ๋„ DinD ๋ฌธ์ œ ๋“ฑ๊ณผ ๊ฐ™์ด ์‹ค์Šต์— ๊ด€๋ จ ๋œ ์ด์Šˆ๊ฐ€ ํ™•์ธ๋˜๋Š”๋Œ€๋กœ ์—…๋ฐ์ดํŠธ ๋œ ์‹ค์Šต ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

    ๋‹ค์Œ ์ฃผ๊ฐ€ ์—ฐํœด๋„ค์š”. ์ € ๊ฐœ์ธ์ ์œผ๋กœ ๅคšไบ‹ๅคš้›ฃ ํ–ˆ๋˜ 2024๋…„์ด์—ˆ์Šต๋‹ˆ๋‹ค๋งŒ, ์ƒˆ๋กœ์šด ๋งˆ์Œ์œผ๋กœ ์ƒˆ๋กœ์šด ํ•œํ•ด๋ฅผ ์‹œ์ž‘ํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์˜ฌํ•ด๋Š” ๋” ์ข‹์€ ๊ฐ•์˜๋กœ ์ž์ฃผ ์ฐพ์•„ ๋ต™๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ƒˆํ•ด ็ฆ ๋ฐ›์ด ๋ฐ›์œผ์„ธ์š”.

    ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

    0
  • Dowon Lee๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€

    ** ansible-server์—์„œ windows์˜ K8s๋กœ์˜ ํ…Œ์ŠคํŠธ ์‹œ ์ฐธ์กฐ

    ansible-server๋ฅผ ์ด์šฉํ•˜์˜ Windows์— ์„ค์น˜ํ•œ docker-desktop์˜ Kubernetes์— ์ ‘์†์„ ํ•˜์—ฌ ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•  ๊ฒฝ์šฐ ์•„๋ž˜ ๋‚ด์šฉ์„ ํ™•์ธํ•ด ๋ณด์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

    ansible-server์—์„œ ssh-copy-id ๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•˜์—ฌ windows์— id_rsa.pub ํ‚ค ํŒŒ์ผ์˜ ๋‚ด์šฉ์„ ๋ณต์‚ฌํ•˜๋ ค๊ณ  ํ•  ๋•Œ, ์ •์ƒ์ ์ธ ํ‚ค ํŒŒ์ผ์˜ ๋‚ด์šฉ์ด ์•„๋‹Œ, ECHO~ ๋ผ๋Š” ๋ฌธ์ž์—ด์ด ์‚ฝ์ด๋˜์–ด ๋ฒ„๋ฆฌ๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿด ๊ฒฝ์šฐ๋Š” ssh-copy-id ๋ช…๋ น์–ด ๋Œ€์‹ , ํ•ด๋‹น id_rsa.pub ํ‚ค ํŒŒ์ผ์˜ ๋‚ด์šฉ์„ ์ง์ ‘ ๋ณต์‚ฌํ•ด์„œ ์‚ฌ์šฉํ•˜์…”์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์–ด๋–ค ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋˜ ๊ฒฐ๊ณผ๋กœ๋Š” windows์˜ .ssh ํด๋”์— ์žˆ๋Š” authorized_keys ํŒŒ์ผ์— ansible-server์—์„œ ์ƒ์„ฑํ•œ id_rsa.pub ํ‚ค ํŒŒ์ผ์˜ ๋‚ด์šฉ์ด ์ €์žฅ๋˜์–ด ์žˆ์œผ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ด ๋•Œ ์ฃผ์˜ํ•˜์‹ค ์ ์€, ansible-server์— ๋กœ๊ทธ์ธ ํ•œ ๊ณ„์ •๊ณผ windows ์„œ๋ฒ„์— ๋กœ๊ทธ์ธํ•˜๋Š” ๊ณ„์ •์ด ์ผ์น˜ํ•ด์•ผ ํ•˜๋ฉฐ, ํ•ด๋‹น ๊ณ„์ •์€ windows์—์„œ ๊ด€๋ฆฌ์ž ๊ถŒํ•œ์„ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์•ผ, docker๋‚˜ kubectl ๋“ฑ์˜ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์š”์•ฝํ•˜๋ฉด Windows์— ๋กœ๊ทธ์ธํ•˜๋Š” ๊ณ„์ •๊ณผ ๋™์ผํ•œ ๊ณ„์ •๋ช…์œผ๋กœ ansible-server์˜ ๊ณ„์ •์„ ์ƒ์„ฑํ›„, ํ‚ค๋ฅผ ๋ณต์‚ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ณผ์ •์ด ๋ฒˆ๊ฑฐ๋กœ์šฐ์‹œ๋ฉด, ssh ์ ‘์†ํ•  ๋•Œ ์ธ์ฆ ์—†์ด ์ ‘์†ํ•˜๊ธฐ ์œ„ํ•ด ssh-copy-id ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ˆ, ์ด๋ถ€๋ถ„์€ ๊ทธ๋Œ€๋กœ ์•”ํ˜ธ๋ฅผ ์ž…๋ ฅํ•˜๋ฉด์„œ ์ง„ํ–‰ํ•˜๊ณ , ansible-playbook์—์„œ๋Š” ansible์˜ hostsํŒŒ์ผ์— windows ์ ‘์† ์ •๋ณด๋ฅผ ๊ธฐ๋กํ•˜์—ฌ ์‚ฌ์šฉํ•˜์‹œ๋ฉด, playbook ์‹คํ–‰์‹œ์—๋Š” ๋ฌธ์ œ์—†์ด ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ์•„๋ž˜์— ์‹คํ–‰ ๊ณผ์ •์— ๋Œ€ํ•ด ์„ค๋ช…ํ•œ ๋‚ด์šฉ์„ ์ฐธ์กฐํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

    • Windows OS (docker-desktop ์„ค์น˜, Kubernetes ์‹คํ–‰, IP: 192.168.0.7)

    • docker-server (๋„์ปค ์ปจํ…Œ์ด๋„ˆ, IP: 172.17.0.3)

    • ansible-server (๋„์ปค ์ปจํ…Œ์ด๋„ˆ, Ansible ์„ค์น˜, IP: 172.17.0.4)

    1. ๋จผ์ € ansible-server์—์„œ ์ƒ์„ฑํ•œ id_rsa.pub ํ‚ค๋ฅผ docker-server์— ssh-copy-id ๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค. docker-server์˜ ํ‚ค๋ฅผ ๋ณต์‚ฌํ•ด์„œ ssh๊ฐ€ ์•”ํ˜ธ ์—†์ด ์ ‘์† ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•ด ๋ณด์‹ค ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

    windows_ansible_step1.png

     

    1. ansible-server์˜ id_rsa.pub ํ‚ค๋ฅผ windows ์„œ๋ฒ„์— ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค. (์•„๋ž˜ ์ด๋ฏธ์ง€๋Š” docker-server๋กœ ๋˜์–ด ์žˆ์ง€๋งŒ, ansible-server์—์„œ ์ง„ํ–‰ํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค). ๋‹ค๋งŒ, id_rsa.pub ํ‚ค๋ฅผ ์ƒ์„ฑํ•  ๋•Œ์˜ ๊ณ„์ •๊ณผ windows์˜ openssh์— ์ ‘์† ํ•  ๊ณ„์ •์ด ๋™์ผํ•ด์•ผ ํ•ด์—ฌ, ํ•ด๋‹น windows ๊ณ„์ •์€ docker๋‚˜ kubectl ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ด€๋ฆฌ์ž ๊ถŒํ•œ์„ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋•Œ, ssh-copy-id ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ id_rsa.pub ํ‚ค ๋ณต์‚ฌ๋ฅผ ์‹œ๋„ํ•˜๋ฉด, Windows์˜ authorized_keys ํŒŒ์ผ์— id_rsa.pub ํ‚ค์˜ ๋‚ด์šฉ์ด ๋ณต์‚ฌ๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ECHO~ ๋ผ๋Š” ๋ฌธ์ž์—ด์ด ๋ณต์‚ฌ๋˜์–ด ๋ฒ„๋ฆฌ๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋Š”๋ฐ, ์ด๋Ÿด ๊ฒฝ์šฐ์—๋Š” ํ•ด๋‹น ํ‚ค๋ฅผ ์ง์ ‘ COPY-PASTE ๋ฐฉ์‹์œผ๋กœ Windows์˜ authorized_keys ํŒŒ์ผ์— ๋ณต์‚ฌํ•ด ๋„ฃ์œผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค. (๋งŒ์•ฝ authorized_keys ํŒŒ์ผ์— windows์— ์—†๋‹ค๋ฉด, ํŒŒ์ผ๋„ ์ง์ ‘ ์ƒ์„ฑํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค)

    windows_ansible_step2.png

     

    1. id_rsa.pub ํ‚ค๋ฅผ ๋ณต์‚ฌํ•˜๋Š” ์ž‘์—…์„ ํ•˜๊ธฐ ์ „์—, ์•„๋ž˜ 4)๋ฒˆ๊ณผ ๊ฐ™์ด windows์—์„œ ssh ๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•˜์—ฌ windows ์„œ๋ฒ„์— ์ ‘์†์ด ๋˜๋Š”์ง€ ํ™•์ธํ•ด ๋ณด์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค. (openssh๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค๋ฉด ์„ค์น˜ํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.)

    windows_ansible_step3.png

     

    1. ์ด๋ฒˆ์—๋Š” ansible-server์—์„œ ์ง์ ‘ ssh ๋ช…๋ น์–ด๋กœ Windows์˜ openssh ์„œ๋ฒ„์— ์ ‘์†ํ•˜๋Š” ํ…Œ์ŠคํŠธ๋ฅผ ํ•ด ๋ณด์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

    windows_ansible_step4.png

     

    1. ์œ„์˜ 2๋ฒˆ์—์„œ ์„ค๋ช…๋“œ๋ฆฐ ๊ฒƒ ์ฒ˜๋Ÿผ id_rsa.pub ํ‚ค๋ฅผ ๋ณต์‚ฌํ•  ๋•Œ๋Š” id_rsa.pub ํ‚ค๊ฐ€ Windows์˜ ๊ณ„์ •๊ณผ ๋™์ผํ•œ ๊ณ„์ •์œผ๋กœ ์ƒ์„ฑํ•ด์•ผ ํ•˜๋Š”๋ฐ, ์ด ๊ณผ์ •์ด ๋ฒˆ๊ฑฐ๋กœ์šฐ์‹œ๋ฉด, ์•„๋ž˜์™€ ๊ฐ™์ด, ansible์˜ hosts ํŒŒ์ผ์— windows ์ ‘์† ์ •๋ณด๋ฅผ ๊ธฐ๋กํ•˜์—ฌ ์‚ฌ์šฉํ•˜์‹œ๊ธฐ๋ฅผ ๊ถŒ์žฅ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์–ด์ฐจํ”ผ ssh ๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•˜์—ฌ ์ง์ ‘ ์ ‘์†์„ ์‹œ๋„ํ•˜๋Š” ๊ฒฝ์šฐ๋ณด๋‹ค๋Š” ansible ๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•˜์—ฌ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋” ๋งŽ์„ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์—, ssh-copy-id ์ž‘์—…์„ ์ง„ํ–‰ํ•˜์ง€ ์•Š๊ณ  ์ง์ ‘ ansible hosts ํŒŒ์ผ์— ์ ‘์† ์ •๋ณด๋ฅผ ์ €์žฅํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ถ€๋ถ„์—์„œ ansible_user, ansible_password ํ•ญ๋ชฉ์— Windows ์ ‘์† ๊ณ„์ • ์ •๋ณด (์ €๋Š” ๊ด€๋ฆฌ์ž ๊ถŒํ•œ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์‚ฌ์šฉ์ž ๊ณ„์ • ์ •๋ณด์™€ ์•”ํ˜ธ๋ฅผ ์ž…๋ ฅํ–ˆ์Šต๋‹ˆ๋‹ค)๋ฅผ ์ €์ •ํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ansible hosts ํŒŒ์ผ ์ •๋ณด๋ฅผ ์™„์„ฑํ•˜์˜€๋‹ค๋ฉด ,๋‹ค์Œ ansible ๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•˜์—ฌ ping ๋ชจ๋“ˆ์ด ์ •์ƒ์ ์œผ๋กœ ์‹คํ–‰๋˜๋Š”์ง€ ํ™•์ธํ•ด ๋ณด์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

      • ansible windows -m in_ping -u [windows ๊ณ„์ •]

    windows_ansible_step5.png

     

    1. ansible-playbook ์‹คํ–‰์— ์•ž์„œ, windows์— K8s์˜ manifest ํŒŒ์ผ์ด ์ €์žฅ๋˜์–ด ์žˆ๋Š” ์œ„์น˜๋ฅผ ํ™•์ธํ•˜๊ณ , kubectl ๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•˜์—ฌ Kubernetes์˜ ๋ฆฌ์†Œ์Šค๋“ค์„ ํ™•์ธํ•ด ๋ด…๋‹ˆ๋‹ค. ์•„๋ž˜ ์˜ˆ์ œ์—์„œ๋Š” K8s์˜ Service ๋ชฉ๋ก์„ ํ™•์ธํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ๊ธฐ๋ณธ์œผ๋กœ ์ƒ์„ฑ๋˜๋Š” ์„œ๋น„์Šค์™ธ ์‚ฌ์šฉ์ž๊ฐ€ ์ƒ์„ฑํ•œ ์„œ๋น„์Šค๋Š” ๋ณด์ด์ง€ ์•Š๋Š” ๊ฒƒ์„ ํ™•์ธํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

    windows_ansible_step6.png

     

    1. ansible-server์—์„œ playbook ํŒŒ์ผ์˜ ๋‚ด์šฉ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. windows์— ๋ช…๋ น์–ด๋ฅผ ์ „๋‹ฌํ•  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์—, ์•„๋ž˜ ์˜ˆ์ œ์™€ ๊ฐ™์ด win_command ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  (MacOS์˜ ๊ฒฝ์šฐ command ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉ) ์‹คํ–‰ํ•˜๊ณ ์ž ํ•˜๋Š” manifest ํŒŒ์ผ์˜ ์œ„์น˜๋ฅผ ์ ˆ๋Œ€๊ฒฝ๋กœ๋กœ ๋ช…์‹œํ•ด ์ค๋‹ˆ๋‹ค. playbook ํŒŒ์ผ์„ ์‹คํ–‰ํ•˜์—ฌ ์‹คํ–‰๋œ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•ด ๋ณด์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    windows_ansible_step7.png

     

    1. ๋งˆ์ง€๋ง‰์œผ๋กœ windows์—์„œ ์‹คํ–‰ํ•œ ๋ฆฌ์†Œ์Šค๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ๋ฐ˜์˜๋˜์—ˆ๋Š”์ง€, kubectl ๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•˜์—ฌ ํ™•์ธํ•ด ๋ณด์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    windows_ansible_step8.png

     

    ์œ„ ๋‚ด์šฉ์— ๋Œ€ํ•ด ์ถ”๊ฐ€ ์งˆ๋ฌธ์‚ฌํ•ญ ์žˆ์œผ์‹œ๋ฉด ์งˆ๋ฌธ ๊ฒŒ์‹œํŒ์— ๊ธ€ ๋‚จ๊ฒจ์ฃผ์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

    ํ•ด๋‹น ๋ฌธ์ œ๊ฐ€ ๊ณ ๋ฏผํ•˜์…จ๋˜ ๋ถ„๋“ค๊ป˜ ๋„์›€์ด ๋˜์—ˆ์œผ๋ฉด ์ข‹๊ฒ ์Šต๋‹ˆ๋‹ค.

    ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

    0
  • Dowon Lee๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€

    ์•ˆ๋…•ํ•˜์„ธ์š”, ์ด๋„์›์ž…๋‹ˆ๋‹ค.

    "Jenkins๋ฅผ ์ด์šฉํ•œ CI/CD Pipeline ๊ตฌ์ถ•" ๊ฐ•์˜๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ, ์‹ค์Šต ํ™˜๊ฒฝ ๊ตฌ์„ฑ์— ์–ด๋ ค์›€์„ ๊ฒช๋Š” ๋ถ„๋“ค์ด ๋งŽ์•„ VM์œผ๋กœ ํ™˜๊ฒฝ ๊ตฌ์„ฑ์„ ๋‹ค๋ฃจ๋Š” ๋ถ€๋ถ„์— ๋Œ€ํ•œ ๊ฐ•์˜๋ฅผ ๋ณ„๋„๋กœ ์ œ์ž‘ํ•˜์—ฌ ๊ณต์œ ํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์‹ค์Šต ํ™˜๊ฒฝ์€ Windows ๋ฐ MacOS (Intell chip) ์‚ฌ์šฉ์ž ๋ถ„๋“ค์ด ๊ธฐ์กด์˜ Docker + SSH ํ™˜๊ฒฝ์ด ์•„๋‹ˆ๋ผ, VirtualBox๋ฅผ ์ด์šฉํ•œ ํ™˜๊ฒฝ์œผ๋กœ VM์„ ๊ตฌ์„ฑํ•ด ๋ณด์‹ค ์ˆ˜ ์žˆ๋„๋ก ํ•˜์˜€์Šต๋‹ˆ๋‹ค. VM์— ์„ค์น˜ ๋œ Docker๋ฅผ ์ด์šฉํ•˜์—ฌ, ์กฐ๊ธˆ์ด๋ผ๋„ ์ˆ˜์›”ํ•˜๊ฒŒ ์‹ค์Šต ํ™˜๊ฒฝ์„ ๊ตฌ์„ฑํ•˜์˜€์œผ๋‹ˆ, ์ฐธ๊ณ ํ•ด ์ฃผ์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

    ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

    0
  • Dowon Lee๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€

    ์•ˆ๋…•ํ•˜์„ธ์š”, ์ด๋„์›์ž…๋‹ˆ๋‹ค.

    ๋จผ์ € ๊ฐ•์˜์— ๊ด€์‹œ๋ฏˆ ๊ฐ€์ ธ์ฃผ์‹  ๋ถ„๋“ค๊ป˜ ๊ฐ์‚ฌ์˜ ์ธ์‚ฌ ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

    ๋ณธ ๊ฐ•์˜๋Š” ์‹ค์Šต์ด ๊ธฐ๋ณธ์œผ๋กœ ํ•จ๊ป˜๋˜์–ด์•ผ ํ•˜๋Š” ๊ฐ•์˜์ž…๋‹ˆ๋‹ค. ํŠนํžˆ Jenkins ๋ฐ Tomcat์ด๋‚˜ Docker ์„œ๋ฒ„๋Š” ์ง์ ‘ ์„ค์น˜ํ•˜๊ณ  ์‹ค์Šตํ•ด ๋ณด์‹œ๋Š” ๊ฒƒ์„ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

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

    ์•ž์„œ ๊ณต์œ ํ•ด ๋“œ๋ฆฐ, ์งˆ๋ฌธ๋‹ต๋ณ€ ๋ฐ ์ถ”๊ฐ€ ์˜์ƒ๋“ฑ์„ ํ†ตํ•ด Windows + SSH + Dokcer ํ™˜๊ฒฝ์—์„œ์˜ ์‹ค์Šต ๊ฐ€์ด๋“œ๋ฅผ ์ œ๊ณตํ•ด ๋“œ๋ ธ๋Š”๋ฐ, ์ถ”๊ฐ€ํ•ด ํ™•์ธ ๋œ ์‚ฌํ•ญ์ด ์žˆ์–ด ๊ณต์œ ํ•ด ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

    • Windows) SSH ์„œ๋ฒ„ (with ๋„์ปค) ์‹คํ–‰ ๋ช…๋ น์–ด (๋ฐฉ๋ฒ•1)

      • docker run --privileged --name docker-server -itd -p 10022:22 -p 8081:8080 -e container=docker -v /sys/fs/cgroup:/sys/fs/cgroup edowon0623/docker:latest /usr/sbin/init

    • Windows) SSH ์„œ๋ฒ„ (with ๋„์ปค) ์‹คํ–‰ ๋ช…๋ น์–ด (๋ฐฉ๋ฒ•2, ์œ„ ๋ช…๋ น์–ด๋กœ ์‹คํ–‰๋˜์ง€ ์•Š์„ ๊ฒฝ์šฐ)

      • docker run -itd --name docker-server -p 10022:22 -e container=docker --tmpfs /run --tmpfs /tmp -v /sys/fs/cgroup:/sys/fs/cgroup:ro -v /var/run/docker.sock:/var/run/docker.sock edowon0623/docker:latest /usr/sbin/init

    ์ €ํฌ๊ฐ€ ํ…Œ์ŠคํŠธํ•œ ์ผ๋ถ€ Windows PC์—์„œ๋Š” ์•„๋ž˜ ์‹ค์Šต ๋ฐฉ๋ฒ•์ด ๋ชจ๋‘ ์ •์ƒ ์ž‘๋™๋˜์—ˆ๋Š”๋ฐ, ์ตœ๊ทผ ๊ตฌ์ž…ํ•œ Windows PC(WSL2 ์„ค์น˜)์—์„œ ์‹ค์Šต1๋ฒˆ์— ์˜ค๋ฅ˜๊ฐ€ ์žˆ์Œ์„ ํ™•์ธํ•˜์˜€์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ํŒŒ์•…ํ•œ ์˜ค๋ฅ˜์˜ ์›์ธ์€ WSL2์—์„œ iptables์˜ ์ƒ์„ฑ๊ณผ์ •์—์„œ ์•„๋ž˜์™€ ๊ฐ™์€ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฑฐ์˜€๋Š”๋ฐ, ์—ฌ๋Ÿฌ ์ •๋ณด๋ฅผ ์ฐพ์•„์„œ ํ•ด๊ฒฐํ•ด ๋ด๋„ ์ €ํฌ๊ฐ€ ์ž‘์„ฑํ•œ ์ด๋ฏธ์ง€์—์„œ๋Š” ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™๋˜์ง€ ์•Š์•„์„œ, ์ž„์‹œ๋กœ iptables์˜ ๊ธฐ๋Šฅ์„ ๋นผ๊ณ  ์ด๋ฏธ์ง€๋ฅผ ์ž‘์„ฑํ•˜์—ฌ ํ…Œ์ŠคํŠธ ํ•ด ๋ณด๋‹ˆ, ํ˜„์žฌ๊นŒ์ง€๋Š” ํฐ ๋ฌธ์ œ์—†์ด ์‹ค์Šต์ด ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ํŒ๋‹จ๋˜์–ด ํ•ด๋‹น ์ด๋ฏธ์ง€์™€ Dockerfile ๊ณต์œ ํ•ด ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

    https://hub.docker.com/r/edowon0623/docker/tags -> docker pull edowon0623/docker:no_iptables

    https://github.com/joneconsulting/docker-files

    ๋”ฐ๋ผ์„œ, Windows ํ™˜๊ฒฝ์—์„œ Dind ๋ฐฉ์‹ (์‹ค์Šต ์Šคํฌ๋ฆฌ๋ธŒ ๋ฐฉ๋ฒ•1)์œผ๋กœ Docker ์„œ๋ฒ—๊ฐ€ ๊ธฐ๋™๋˜์ง€ ์•Š์œผ์‹œ๋ฉด, ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•˜์—ฌ ์‹ค์Šตํ•ด ๋ณด์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

    • Windows) SSH ์„œ๋ฒ„ (with ๋„์ปค) ์‹คํ–‰ ๋ช…๋ น์–ด (๋ฐฉ๋ฒ•3)

      • docker run --privileged --name docker-server -itd -p 10022:22 -p 8081:8080 -e container=docker -v /sys/fs/cgroup:/sys/fs/cgroup edowon0623/docker:no_iptables /usr/sbin/init

    ๋ฌผ๋ก , ํ•ด๋‹น Docker ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๊ธฐ๋™ํ•˜์‹  ๋‹ค์Œ์—, SSH ์ ‘์† ํ›„, systemctl start docker ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ด ์ฃผ์…”์•ผ Docker ์„œ๋ฒ„๊ฐ€ ๊ธฐ๋™๋ฉ๋‹ˆ๋‹ค.

    ๋‹ค์‹œ ํ•œ๋ฒˆ, ๊ฐ•์˜์— ๊ด€์‹ฌ์„ ๊ฐ€์ ธ ์ฃผ์…”์„œ ๊ฐ์‚ฌ๋“œ๋ฆฌ๋ฉด, ๋” ์ข‹์€ ์ฝ˜ํ…์ธ ๋ฅผ ๊ฐ€์ง€๊ณ  ์ƒˆ๋กœ์šด ๊ฐ•์˜๋„ ์ค€๋น„ํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

    ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

    0
  • Dowon Lee๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€

    ์•ˆ๋…•ํ•˜์„ธ์š”, ์ด๋„์›์ž…๋‹ˆ๋‹ค. 

    Jenkins๋ฅผ ์ด์šฉํ•œ CI/CD Pipline ๊ตฌ์ถ• ๊ฐ•์˜์—์„œ Nodejs๋กœ ์ž‘์„ฑ ๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ฐฐํฌํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๊ฐ•์˜์ž๋ฃŒ๋ฅผ ์ถ”๊ฐ€ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ํ•ด๋‹น ์ฝ˜ํ…์ธ ๋ฅผ ์ง€๋‚œ 9์›”๋ถ€ํ„ฐ ์š”์ฒญํ•˜์…จ๋Š”๋ฐ, ๋งŽ์ง€๋„ ์•Š์€ ๋ถ„๋Ÿ‰์ด์—ˆ์Œ์—๋„ ์ด์ œ์„œ์•ผ ์—…๋กœ๋“œ ํ•ด๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์ž๋ฃŒ๊ฐ€ ๋„ˆ๋ฌด ๋Šฆ๊ฒŒ ์—…๋กœ๋“œ ๋˜์–ด ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. 

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

    https://www.inflearn.com/course/%EC%A0%A0%ED%82%A8%EC%8A%A4-ci-cd-%ED%8C%8C%EC%9D%B4%ED%94%84%EB%9D%BC%EC%9D%B8/unit/138551

    ๋‚จ์€ 2022๋…„ ํ•œํ•ด ๋ฌดํƒˆํ•˜๊ฒŒ ์ž˜ ๋งˆ๋ฌด๋ฆฌํ•˜์‹œ๊ณ , ํ•˜์‹œ๋Š” ์ผ ๋ชจ๋‘ ์ž˜ ์„ฑ์ทจํ•˜์‹œ๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค. 

    ๊ฐ์‚ฌํ•ฉ๋‹ˆ. 

    1

2026 ์ƒˆํ•ด ๋ณต ๋งˆ๐Ÿด๋‹ˆ ํ• ์ธ ์ค‘ (7์ผ ๋‚จ์Œ)

โ‚ฉ61,600

30%

โ‚ฉ88,000