• ์๋ ํ์ธ์~ ์ด์ ์ ์ด์ํ๋ ๋ธ๋ก๊ทธ ๋ฐ GitHub, ๊ณต๋ถ ๋ด์ฉ์ ์ ๋ฆฌํ๋ Study-GitHub ๊ฐ ์์ต๋๋ค!
• ๐
โ CLASS101 ๋ฐฑ์๋ ์์คํ ์ค๋ฌด - Chapter2 CPU Bound ์ ํ๋ฆฌ์ผ์ด์
์๋ ํ์ธ์, ํด๋์ค101 ๋ฐฑ์๋ ์์คํ ์ค๋ฌด ๊ฐ์๋ฅผ ๋ฃ๊ณ , ๋ณต์ต ์ฐจ์์ผ๋ก ์ ๋ฆฌํ์ฌ ๋จ๊ธฐ๋ ค๊ณ ํฉ๋๋ค! ํน์ ๋ฌธ์ ๊ฐ ๋๋ค๋ฉด ๊ธ์ ์ญ์ ํ๊ฒ ์ต๋๋ค !! |
class101.net/products/5fc4a3b4fc231b000d85661b
โ Jenkins๋ฅผ ์ด์ฉํด์ ๋ฐฐํฌํ๊ธฐ
• Build & Deploy
• Batch
• GCP ์ธ์คํด์ค๋ Jenkins์ฉ ์ธ์คํด์ค ํ ๊ฐ์ ์ ํ๋ฆฌ์ผ์ด์ ์คํ์ฉ ์ธ์คํด์ค ํ ๊ฐ, ์ด ๋ ๊ฐ์ ์ธ์คํด์ค๋ก ๊ตฌ์ฑ
๐ GCP ์ธ์คํด์ค ์์ฑ
Jenkins์ฉ GCP ์ธ์คํด์ค๋ฅผ ์์ฑํฉ๋๋ค.
• ์ด๋ฆ & ๋ฆฌ์ (์์ธ) & ๋จธ์ ์ ํ(e2-micro) & ๋ถํ ๋์คํฌ(CentOS 7) & ๋ฐฉํ๋ฒฝ ํ์ฉ ์ ์ค์ ํ๊ณ ์์ฑํฉ๋๋ค.
application์ฉ GCP ์ธ์คํด์ค๋ฅผ ์์ฑํฉ๋๋ค.
• ์ด๋ฆ & ๋ฆฌ์ (์์ธ) & ๋จธ์ ์ ํ(e2-micro) & ๋ถํ ๋์คํฌ(CentOS 7) & ๋ฐฉํ๋ฒฝ ํ์ฉ ์ ์ค์ ํ๊ณ ์์ฑํฉ๋๋ค.
๐ GCP ์ธ์คํด์ค์ Jenkins ์ค์นํ๊ธฐ
• wget ์ค์น
• sudo yum install wget
• Maven ์ค์น
• sudo yum install maven
• git ์ค์น
• sudo yum install git
• docker ์ค์น
• sudo yum install docker
• Jenkins ์ค์น & ๋ฐ๋ชฌ ์คํ
• sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
• sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
• sudo yum install jenkins
• sudo systemctl start jenkins (jenkins ๋ฐ๋ชฌ ์คํ)
• sudo systemctl status jenkins (jenkins ์คํ ์ํ ์ฌ๋ถ ํ์ธ)
๐ GCP ๋ฐฉํ๋ฒฝ 8080 ํฌํธ ์ด๊ธฐ
Jenkins๋ 8080ํฌํธ๋ก ๋ ์๊ธฐ ๋๋ฌธ์, 8080 ํฌํธ๋ฅผ ์ด์ด์ค๋๋ค.
GCP ์ธ์คํด์ค์์ ๋ฐฉํ๋ฒฝ ๊ท์น ์ค์ ํด๋ฆญ
๋ฐฉํ๋ฒฝ ๊ท์น ๋ง๋ค๊ธฐ ํด๋ฆญ
์์ ๊ฐ์ด ์ด๋ฆ, ๋์, ์์ค IP ๋ฒ์, ํํ ํ ์ฝ ๋ฐ ํฌํธ ๋ฅผ ์์ ํ๊ณ ๋ง๋ค๊ธฐ๋ฅผ ๋๋ฆ ๋๋ค.
0.0.0.0/0 ==> ๋ชจ๋ IP ๋์
๐ Jenkins ์ ์ & ์ค์
์ธ์คํด์ค์ ์ธ๋ถIP:8080 ์ผ๋ก ์ ์ํ๋ฉด, ์์ ๊ฐ์ ํ๋ฉด์ด ๋์ต๋๋ค.
์ ํ๋ฉด์์ ๊ด๋ฆฌ์ ํจ์ค์๋๋ฅผ ์ ๋ ฅํ๋ ๋ถ๋ถ์ด ์๋๋ฐ, ์๋ ๋ช ๋ น์ด๋ฅผ ํตํด ๋น๋ฐ๋ฒํธ๋ฅผ ํ์ธํ๊ณ ์ ๋ ฅํฉ๋๋ค.
$ sudo cat /var/lib/jenkins/secrets/initialAdminPassword
๋น๋ฐ๋ฒํธ๋ฅผ ์ ๋ ฅํ๊ณ ๋ค์์ผ๋ก ๋์ด์ค๋ฉด, ์ ํ๋ฉด์ด ๋์ค๋๋ฐ์
์ข์ธก์ ์ถ์ฒ ํ๋ฌ๊ทธ์ธ์ ์ค์นํ๋ ๊ฒ์ด๊ณ , ์ฐ์ธก์ ์ ํ๋ ํ๋ฌ๊ทธ์ธ๋ง ์ค์นํ๋ ๋ฒํผ์ ๋๋ค.
์ฌ๊ธฐ์๋ ์ข์ธก Install suggested plugins ๋ฅผ ํด๋ฆญํฉ๋๋ค.
ํ๋ฌ๊ทธ์ธ์ ๋ชจ๋ ์ค์นํ ๋ค ๊ณ์ ์ ์์ฑํฉ๋๋ค.
Jenkins URL์๋ ํ์ฌ ์ ์ํ URL์ ๊ทธ๋๋ก ์ฌ์ฉํฉ๋๋ค.
์ ํ๋ฉด์์ Start using Jenkins๋ฅผ ํด๋ฆญํ๋ฉด Jenkins ์ค์ ์ ๋ชจ๋ ๋๋๊ฒ๋ฉ๋๋ค.
์์ ๊ฐ์ ์ด๊ธฐ ํ๋ฉด์ด ๋์ค๋ฉด ์ ์์ ์ผ๋ก Jenkins๋ฅผ ์ฌ์ฉํ ์ ์๋ ์ํ์ ๋๋ค.
์ข์ธก Jenkins ๊ด๋ฆฌ > ํ๋ฌ๊ทธ์ธ ๊ด๋ฆฌ > ์ค์น ๊ฐ๋ฅ > SSH ์ ๋ ฅ > Publish Over SSH ํด๋ฆญ > ์ฌ์์ ์์ด ์ค์นํ๊ธฐ
Publish Over SSH ์ ์์ ์ผ๋ก ์ค์น๋ ํ๋ฉด -> ๋ฉ์ธ ํ์ด์ง๋ก ๋์๊ฐ๋๋ค.
• ๋์นญํค, ๋น๋์นญํค
• ๋์นญํค
• ์ํธํ์ ์ฌ์ฉํ๋ ํค์ ๋ณตํธํ์ ์ฌ์ฉํ๋ ํค๊ฐ ๋์ผํ ๊ฒ
• ๋น๋์นญํค
• ์ํธํ์ ์ฌ์ฉํ๋ ํค์ ๋ณตํธํ์ ์ฌ์ฉํ๋ ํค๊ฐ ๋ค๋ฅธ ๊ฒ
๋น๋์นญํค์ ์ํธํ, ๋ณตํธํ์ ์ฌ์ฉ๋๋ ํค๋ ๋ถ๋ช '๋ค๋ฅธ ๊ฐ' ์ด์ง๋ง ์ฐ๊ด๋์ด ์๋ ๊ฐ์ ๋๋ค.
๐ Jenkins ๊ณต๊ฐํค ์ค์
$ ssh-keygen -t rsa -f ~/.ssh/id_rsa
์ ๋ช ๋ น์ด๋ฅผ ํตํด ๊ณต๊ฐํค๋ฅผ ์์ฑํฉ๋๋ค.
(์ค๊ฐ์ ์ํฐ ํค๋ฅผ ํ๋ฒ ๋๋ฆ ๋๋ค.)
ํด๋น ํ์ผ์ /home/zzang9haha/.ssh ํ์ผ์ ์ ์ฅ์ด ์์ฑ ๋์์ต๋๋ค.
• id_rsa => ๊ฐ์ธํค
• id_rsa.pub => ๊ณต๊ฐํค
$ vi id_rsa.pub
application์ฉ GCP ์ธ์คํด์ค์ ๋ฑ๋กํ๊ธฐ ์ํด ์ ๋ช ๋ น์ด๋ฅผ ํตํด ๊ณต๊ฐํค๋ฅผ ํ์ธํ๊ณ ๋ณต์ฌ ํฉ๋๋ค.
๊ทธ ํ application GCP ์ธ์คํด์ค SSH๋ก ์ ์ํฉ๋๋ค.
๋ค์ ๋ช ๋ น์ด๋ฅผ ํตํด ์ค์ ํ์ผ๋ก ๋ค์ด๊ฐ๋๋ค.
$ vi -/.ssh/authorized_keys
์์์ ๋ณต์ฌํ id_rsa.pub ํ์ผ์ ๋ด์ฉ์ ๋ถ์ฌ๋ฃ๊ธฐ ํฉ๋๋ค.
(๊ฐํน ์ํฐํค๋ ๊ฐ์ด ๋ณต์ฌ๊ฐ ๋๋ ๊ฒฝ์ฐ๊ฐ ์์ด์, ์์ ๊ฐ์ด ๋ถ์ฌ๋ฃ๊ธฐ๊ฐ ์ ๋์๋์ง ํ์ธํฉ๋๋ค.)
(esc => :(์ฝ๋ก ) => wq ์ ๋ ฅ ํ ์ํฐ ์น๋ฉด ์ ์ฅ๋๊ณ vi ์๋ํฐ๋ชจ๋๋ฅผ ๋๊ฐ๋ ๋ช ๋ น์ด์ ๋๋ค.)
โป GCP์์ ๋ฐ๋ก Jenkins์ ๊ณต๊ฐํค๋ฅผ ๋ฑ๋กํ๋ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
GCP ์ธ์คํด์ค > ๋ฉํ๋ฐ์ดํฐ > SSHํค > ์์
์๋ก ๋ค์ด๊ฐ์ ๊ณต๊ฐํค๋ฅผ ๋ถ์ฌ๋ฃ๊ธฐ ํด์ฃผ์๋ฉด ๋ฉ๋๋ค.
์ ๋ช ๋ น์ด๋ฅผ ํตํด ๋๋ ํ ๋ฆฌ์ ํ์ผ์ ๊ถํ์ ์์ ํฉ๋๋ค.
Jenkins ์ฌ์ดํธ์์ Jenkins ๊ด๋ฆฌ > ์์คํ ์ค์ ์์ SSH key๋ฅผ ์ค์ ํฉ๋๋ค.
(jenkins GCP ์ธ์คํด์ค์์ id_rsa ํ์ผ์ ๋ด์ฉ์ ๋ณต์ฌํ์๋ฉด ๋ฉ๋๋ค.)
๋ฐ๋ก ์๋ ๋ถ๋ถ์ SSH Servers๋ฅผ ์ถ๊ฐํฉ๋๋ค.
• Name: GCP ์ธ์คํด์ค์ ์ด๋ฆ
• Hostname: GCP ์ธ์คํด์ค์ ๋ด๋ถ IP
• Username: GCP ์ธ์คํด์ค์์ SSH์ ์ ์ํ์ ๋ ๋์ค๋ ๊ณ์
• Remote Directory: GCP์์ hoem ๋๋ ํ ๋ฆฌ์ ๊ฒฝ๋ก(cd ~)
์ Test Configuration ์ ๋๋ฌ Success ๋ผ๋ ๋ฉ์์ง๊ฐ ๋จ๋ฉด ์ ์ฅ์ ๋๋ฌ์ค๋๋ค.
๐ Jenkins์ ๋ฐฐํฌ ์คํฌ๋ฆฝํธ ์์ฑ
Jenkins์์ ๋ฐฐํฌ ์คํฌ๋ฆฝํธ๋ Item์ด๋ผ๋ ๋จ์ด๋ก ๊ด๋ฆฌ๊ฐ ๋๋๋ฐ, ์๋ก์ด Item์ ํด๋ฆญํฉ๋๋ค.
item name์ ์ค์ ํ๊ณ , Freestyle project ํด๋ฆญ ํ OK ๋ฒํผ์ ๋๋ฆ ๋๋ค.
๋ค์ ํ๋ฉด์์ ๋ค๋ฅธ ๋ถ๋ถ์ ์๋์ง๋ง๊ณ , ๋น๋ ํ ์กฐ์น์์ Send build artifacts over SSH ๋ฅผ ํด๋ฆญํฉ๋๋ค.
๊ณ ๊ธ ํด๋ฆญ > Verbose output in console ์ฒดํฌ(๋ก๊ทธ๋ฅผ ์์ธํ ์ถ๋ ฅ) ํฉ๋๋ค.
๊ทธ ํ Exec command ์์ docker run ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ๊ณ ์ ์ฅํฉ๋๋ค.
์ ์ฅ์ด ๋๋ ํ ์ข์ธก์ Build Now๋ฅผ ํด๋ฆญํ๋ฉด ์๋ #1 ์ด๋ผ๊ณ ์์ฑ๋๊ฑธ ๋ณผ ์ ์์ต๋๋ค.
#1 ์ ํด๋ฆญํ๊ณ , Console Output์ ํด๋ฆญํ๋ฉด ์ฝ์ ๋ก๊ทธ๊ฐ ๋์ค๋๋ฐ, ์ ์์ ์ผ๋ก ์คํ์ด ๋์ง ์์์ต๋๋ค.
sudo: docker: command not found
sudo ๋ช ๋ น์ด๋ฅผ ์ฐพ์ ์ ์๋ค๋ ์๋ฌ์ ๋๋ค.
ํ๋ก์ ํธ ๋์๊ฐ๊ธฐ > ๊ตฌ์ฑ ํด๋ฆญ ํ Exec command ๋ถ๋ถ์ ์์ ํฉ๋๋ค.
sudo ๋ฅผ ์ ๊ฑฐํ๊ณ , ์ข์ธก ํฌํธ(์ธ๋ถ)๋ฅผ 8080์ผ๋ก ์์ ํฉ๋๋ค.
๊ทธ ํ ๋ค์ Build Now๋ฅผ ํด๋ฆญํ๋ฉด, #2๊ฐ ์์ฑ๋๋๋ฐ ๋ก๊ทธ๋ฅผ ํ์ธํด๋ด ๋๋ค.
docker๋ฅผ ์ฐพ์ ์ ์๋ค๋ ์ค๋ฅ์ ๋๋ค.
Jenkins GCP์๋ docker์ ์ค์นํ์ผ๋, application GCP์๋ docker์ ์ค์นํ์ง ์์์ ๋ฐ์ํ๋ ์ค๋ฅ์ ๋๋ค.
application GCP์๋ docker์ ์ค์นํ ํ ๋ฐ๋ชฌ์ ์คํํฉ๋๋ค.
$ sudo yum install docker
$ sudo systemctl start docker
์ ๊ณผ์ ์ด ๋๋๋ฉด Jenkins์์ ๋ค์ Build Now๋ฅผ ๋๋ฅด๊ณ , ๋ก๊ทธ๋ฅผ ํ์ธํด๋ด ๋๋ค.
์ด๋ฒ์๋ ๋น๋๊ฐ ์คํจํ์ต๋๋ค. ๊ถํ ๊ด๋ จ ์ค๋ฅ์ ๋๋ค.
ํด๋น ํ์ผ์ ๊ถํ์ ์์ ํฉ๋๋ค.
$ sudo chmod 666 /var/run/docker.sock
๋ค์ Build Now๋ฅผ ํด๋ฆญํ๊ณ ๋ก๊ทธ๋ฅผ ํ์ธํฉ๋๋ค.
์์ ๊ฐ์ด ๋ชจ๋์๊ณ๊ฐ ๋์ค๋ฉด์, ์คํ์ด ๋์ง ์๋๋ฐ์,,
์ด๋ ๋ก๊ทธ๊ฐ ์ถ๋ ฅ๋๋ฉด์ ๋ฐฐํฌ๊ฐ ๋๋ ์ํ๊ฐ ์๋๋ผ๊ณ Jenkins๊ฐ ํ๋จํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
๋จผ์ ์ ์์ ์ ์ข ๋ฃ๋ฅผ ํ ๋ค(X ๋ฒํผ) ๊ตฌ์ฑ์ผ๋ก ๋์๊ฐ๋๋ค.
์์ ๊ฐ์ด Exec command ๋ถ๋ถ์ ์์ ํฉ๋๋ค.
• nohup: ๋ช ๋ น์ ๋ฐฑ๊ทธ๋ผ์ด๋๋ก ์คํ
• > dev/null ~ : ํ์ค ์๋ฌ๋ฅผ ํ์ค ์ถ๋ ฅ์ผ๋ก Redirection
์ด๋ฒ์ ๋ ธ๋์ ๋ถ์ด ์๋ ํ๋์ ๋ถ๋ก ๋ค์ด์๋๋ฐ, ๋ก๊ทธ๋ฅผ ํ์ธํด๋ด ๋๋ค.
์ ์์ ์ผ๋ก ์คํ์ด ๋ ๊ฑธ ๋ณผ ์ ์์ต๋๋ค.
๐ ์ ํ๋ฆฌ์ผ์ด์ ์คํ ํ ์คํธ
๋ง์ง๋ง์ผ๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ ์์ ์ผ๋ก ์คํ ๋์๋์ง ํ ์คํธ๋ฅผ ์งํํฉ๋๋ค.
์๋ URL๋ก ์ ์์ ํฉ๋๋ค.
• URL: ์ธ๋ถ IP:8080/hash/123
๋๋์ด, ์ ์์ ์ผ๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ด ์คํ๋ ๊ฑธ ๋ณผ ์ ์์ต๋๋ค !! ๐
'๊ฐ์ ์ ๋ฆฌ > CLASS101 ๋ฐฑ์๋ ์์คํ ์ค๋ฌด' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Chapter3 - CPU Bound ์ ํ๋ฆฌ์ผ์ด์ ๋ฌด์ค๋จ ๋ฐฐํฌ(์ฑ๋ฅ ์ธก์ ) (0) | 2021.02.28 |
---|---|
Chapter3 - CPU Bound ์ ํ๋ฆฌ์ผ์ด์ ๋ฌด์ค๋จ ๋ฐฐํฌ(Nginx ๋ก๋๋ฐธ๋ฐ์ฑ) (0) | 2021.02.27 |
Chapter2 - CPU Bound ์ ํ๋ฆฌ์ผ์ด์ Dockerized ์ ํ๋ฆฌ์ผ์ด์ GCP ๋ฐฐํฌ (0) | 2021.02.26 |
Chapter2 - CPU Bound ์ ํ๋ฆฌ์ผ์ด์ (0) | 2021.02.22 |
Chapter1 - ๋ฐฑ์๋ ์ฌ์ ์ค๋น (0) | 2021.02.20 |
๋๊ธ