โข ์๋ ํ์ธ์~ ์ด์ ์ ์ด์ํ๋ ๋ธ๋ก๊ทธ ๋ฐ GitHub, ๊ณต๋ถ ๋ด์ฉ์ ์ ๋ฆฌํ๋ Study-GitHub ๊ฐ ์์ต๋๋ค!
โข ๐
โ CLASS101 ๋ฐฑ์๋ ์์คํ ์ค๋ฌด - Chapter2 CPU Bound ์ ํ๋ฆฌ์ผ์ด์
์๋ ํ์ธ์, ํด๋์ค101 ๋ฐฑ์๋ ์์คํ ์ค๋ฌด ๊ฐ์๋ฅผ ๋ฃ๊ณ , ๋ณต์ต ์ฐจ์์ผ๋ก ์ ๋ฆฌํ์ฌ ๋จ๊ธฐ๋ ค๊ณ ํฉ๋๋ค! ํน์ ๋ฌธ์ ๊ฐ ๋๋ค๋ฉด ๊ธ์ ์ญ์ ํ๊ฒ ์ต๋๋ค !! |
class101.net/products/5fc4a3b4fc231b000d85661b
ํ์ง ๋๊ธฐ์ ๊ฐ๋ฐ์ ํธ์ ํจ๊ปํ๋ ์ง์ง ๋ฐฑ์๋ ์์คํ ์ค๋ฌด!
IT ๋๊ธฐ์ ๋ค์ ๋ฐฑ์๋ ๊ฐ๋ฐ์ ์ฑ์ฉ๊ณต๊ณ ๋ฅผ ๋ณธ ์ ์๋์? ๐์ ๋ฐ์ค ์น ๋ถ๋ถ์ ๋ฐฐ์ธ ์ ์๋๋ก ์ปค๋ฆฌํ๋ผ์ ๊ตฌ์ฑํ์ด์. ๊ฒ๋ณด๊ธฐ์ ์ด๋ ค์ ๋ณด์ด์ง๋ง, ๊ฒฐ๊ตญ ๋ฐฐ์ฐ๊ณ ๋๋ฉด ๋๋ ์ ๋ฐ ๊ณณ์์ ์ผํ ์ ์
class101.net
โ 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 |
๋๊ธ