Infra

[Infra] Docker, Jenkins๋ฅผ ์ด์šฉํ•˜์—ฌ MSA ํ”„๋กœ์ ํŠธ CI/CD ๊ตฌ์ถ•ํ•˜๊ธฐ(2) - Jenkins ์„ค์น˜

giraffe_ 2023. 5. 28. 23:56

์ด ์‹œ๋ฆฌ์ฆˆ์—์„œ๋Š” MSA ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•œ ๋’ค, Docker์™€ Jenkins๋ฅผ ์ด์šฉํ•˜์—ฌ CI/CD๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๊ณผ์ •์„ ์„ค๋ช…ํ•˜๋„๋ก ํ•˜๊ฒ ๋‹ค.

 

์ด์ „ ํฌ์ŠคํŒ…์—์„œ๋Š” Docker๋ฅผ ์„ค์น˜์™€ ์ˆ˜๋™ ๋ฐฐํฌ ๊ณผ์ •๊ณผ ์ž๋™ ๋ฐฐํฌ์˜ ํ•„์š”์„ฑ์— ๋Œ€ํ•ด ์„ค๋ช…ํ–ˆ์—ˆ๋‹ค.

 

https://programmingiraffe.tistory.com/123

 

[Infra] Docker, Jenkins๋ฅผ ์ด์šฉํ•˜์—ฌ MSA ํ”„๋กœ์ ํŠธ CI/CD ๊ตฌ์ถ•ํ•˜๊ธฐ(1) - Docker ์„ค์น˜

์ด ํฌ์ŠคํŒ…์—์„œ๋Š” MSA ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•œ ๋’ค, Docker์™€ Jenkins๋ฅผ ์ด์šฉํ•˜์—ฌ CI/CD๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๊ณผ์ •์„ ์„ค๋ช…ํ•˜๋„๋ก ํ•˜๊ฒ ๋‹ค. ๊ตฌ๊ธ€๋ง ํ•˜๋ฉด์„œ ๋…ํ•™์„ ํ–ˆ๊ณ , ๋ฌด์ˆ˜ํ•œ ์‚ฝ์งˆ๊ณผ ์ด์ „ ํ”„๋กœ์ ํŠธ๋“ค์˜ ๋ฌธ์„œ์™€ ์ฃผ๋ณ€ ๋™

programmingiraffe.tistory.com

 

 

 

 

 

 

์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ์ง€์†์  ํ†ตํ•ฉ๊ณผ ์ž๋™ ๋ฐฐํฌ๋ฅผ ์œ„ํ•ด ํ•„์š”ํ•œ Jenkins ์„ค์น˜ ๊ณผ์ •์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜๋„๋ก ํ•˜๊ฒ ๋‹ค.

 

 

 

 

 

๐Ÿ’ป ํ™˜๊ฒฝ

  • OS : Window
  • Server : AWS EC2
  • Backend : Spring boot, Spring Cloud(Gateway, Eureka), Gradle, Java11
  • Deploy : Docker, Dockerhub, Jenkins
  • Git : Gitlab

 

 

 

 

 

๐Ÿ“ ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ๋„

์•„ํ‚คํ…์ฒ˜(์ˆ˜์ •๋จ)

 

 

 

 

 

CI/CD ๊ณผ์ •

 

 

 

  1. ์†Œ์Šค์ฝ”๋“œ๊ฐ€ ํ•ด๋‹น ๋ธŒ๋žœ์น˜์— push ๋œ๋‹ค. (ํ‘ธ์‰ฌ ์ด๋ฒคํŠธ ๋ฐœ์ƒ)
  2. ํ”„๋กœ์ ํŠธ ๋‚ด์˜ Jenkinsfile์„ ์ฝ์–ด ์‹คํ–‰ํ•œ๋‹ค.
  3. Git์— ์žˆ๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ Cloneํ•ด, ๋นŒ๋“œ๋ฅผ ํ•œ๋‹ค.
  4. jar ํŒŒ์ผ์ด ์ƒ์„ฑ๋˜๊ณ , ๋„์ปค ์ด๋ฏธ์ง€๋กœ ๋นŒ๋“œํ•œ๋‹ค.
  5. ๋„์ปค ์ด๋ฏธ์ง€๋ฅผ ๋„์ปค ํ—ˆ๋ธŒ์— ์—…๋กœ๋“œ ํ•œ๋‹ค.
  6. ์ง€๊ธˆ ๋„์ปค์—์„œ run ๋˜๊ณ  ์žˆ๋Š” ํ•ด๋‹น ์ด๋ฏธ์ง€๋ฅผ ์ค‘์ง€ํ•˜๊ณ , ์‚ญ์ œ์‹œํ‚จ๋‹ค.
  7. ๊ทธ๋ฆฌ๊ณ  ๋„์ปค ํ—ˆ๋ธŒ์— ์žˆ๋˜ ์ƒˆ ์ด๋ฏธ์ง€๋ฅผ ๋ฐ›์•„ run ํ•œ๋‹ค.
  8. Spring ์„œ๋ฒ„๊ฐ€ ๋„์ปค ์ปจํ…Œ์ด๋„ˆ๋กœ AWS์— ๋ฐฐํฌ๋œ๋‹ค.

 

 

 

 

Jenkins๋ฅผ ์ด์šฉํ•˜๋ฉด, ์œ„์™€ ๊ฐ™์€ ๊ณผ์ •์„ ์ž๋™์œผ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

 

 

 

๐Ÿคต Jenkins ์„ค์น˜

Docker in docker ๋ฐฉ์‹์œผ๋กœ Jenkins๋ฅผ ์„ค์น˜ํ–ˆ๋‹ค.

 

 

  • ์  ํ‚จ์Šค ์„ค์น˜์‹œ ์•„๋ž˜ ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•ด ๋„์ปค์˜ ์†Œ์ผ“ ํŒŒ์ผ ๋งˆ์šดํŠธ
sudo mkdir /home/opendocs/jenkins
sudo docker run \\
--name jenkins \\
-d \\
-p 8080:8080 \\
-p 50000:50000 \\
-v /home/opendocs/jenkins:/var/jenkins_home \\
-v /var/run/docker.sock:/var/run/docker.sock \\
-u root \\
jenkins/jenkins:lts

 

 

 

  • Jenkins ์ปจํ…Œ์ด๋„ˆ ์ ‘์†
docker exec -it jenkins /bin/bash

 

 

 

  • Jenkins ์•ˆ Docker ์„ค์น˜

์ด๊ฑธ ์•ˆํ•˜๋ฉด Jenkins ์•ˆ์— Docker๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋‚˜์ค‘์— docker ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์—†๋‹ค๋ฉฐ ์—๋Ÿฌ๊ฐ€ ๋œฌ๋‹ค.

 

# Docker ์„ค์น˜
## - Old Version Remove
apt-get remove docker docker-engine docker.io containerd runc
## - Setup Repo
apt-get update
apt-get install \\
    ca-certificates \\
    curl \\
    gnupg \\
    lsb-release
mkdir -p /etc/apt/keyrings
curl -fsSL <https://download.docker.com/linux/debian/gpg> | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo \\
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] <https://download.docker.com/linux/debian> \\
  $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
## - Install Docker Engine
apt-get update
apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin

 

 

 

 

 

๐Ÿคต Jenkins ์ ‘์†

  • ๋„๋ฉ”์ธ์ฃผ์†Œ:8080 ์œผ๋กœ ์ ‘์†ํ•œ๋‹ค.

Jenkins ์„ค์น˜ ์‹œ, ํฌํŠธ ๋ฒˆํ˜ธ๋ฅผ ๋‹ค๋ฅด๊ฒŒ ์„ค์ •ํ•ด์คฌ์œผ๋ฉด ๊ทธ ํฌํŠธ ๋ฒˆํ˜ธ๋ฅผ ๋ถ™์—ฌ์ค€๋‹ค.

 

 

 

 

์•”ํ˜ธ๋ฅผ ์ž…๋ ฅํ•ด์ค˜์•ผ ํ•˜๋Š”๋ฐ, ๋นจ๊ฐ•์ƒ‰ ๊ธ€์”จ๋กœ ๋‚˜์˜จ ๊ฒฝ๋กœ๋กœ ์ ‘์†ํ•ด์„œ ๊ด€๋ฆฌ์ž ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์•Œ์•„๋‚ด์•ผ ํ•œ๋‹ค.

 

 

 

  • ๊ด€๋ฆฌ์ž ๋น„๋ฐ€๋ฒˆํ˜ธ ์•Œ์•„๋‚ด๊ธฐ
cat /var/jenkins_home/secrets/initialAdminPassword

 

 

 

  • ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ค์น˜

Install suggested plugins์„ ์„ ํƒํ•œ๋‹ค.

 

 

 

  • Jenkins URL ์„ค์ •

Save and Finish๋ฅผ ๋ˆ„๋ฅด๊ณ  ๋งˆ์น˜๋ฉด ๋œ๋‹ค.

 

 

 

 

 

๋‹ค์Œ ํฌ์ŠคํŒ…์—์„œ GitLab Webhook๊ณผ Jenkinsfile์„ ํ™œ์šฉํ•˜์—ฌ ๋ฐฐํฌ ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์ถ•์„ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•˜๋„๋ก ํ•˜๊ฒ ๋‹ค.