Jenkins ๋น์ ์ ์ข ๋ฃ ์ ์๋ ์์ํ๋ systemd ์๋น์ค ํ์ผ
ํ ์คํธ ํ๊ฒฝ
- NHN Cloud
- Ubuntu 20.04 LTS
- Docker 23.0.3
- Jenkins 2.399
- Python 3.9
์ํฉ
Jenkins๊ฐ ๋น์ ์์ ์ผ๋ก ์ข ๋ฃ๋์์ ๊ฒฝ์ฐ, Jenkins๊ฐ ์๋ ์คํ๋๊ฒ ํ๋๋ก ํฉ๋๋ค.
ํด๊ฒฐ๋ฐฉ๋ฒ
sudo systemctl enable jenkins
๋ช ๋ น์ด ์คํFailed to enable unit: Unit file jenkins.service does not exist.
์ ๊ฐ์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
- Jenkins Docker ์ปจํ ์ด๋๋ฅผ ์๋ ์์ํ๋ systemd ์๋น์ค ํ์ผ์ ์์ฑํ์ฌ ์ ์ฉํด์ค๋๋ค.
/usr/lib/systemd/system
๋๋ ํ ๋ฆฌ์jenkins.service
ํ์ผ ์์ฑ
sudo vi /usr/lib/systemd/system/jenkins.service
2. ํ์ผ ๋ด์ฉ ์์ฑ
[Unit]
Description=Jenkins container
Requires=docker.service
After=docker.service
[Service]
Restart=on-failure
Group=docker
ExecStart=/usr/bin/docker start -a jenkins
ExecStop=/usr/bin/docker stop -t 2 jenkins
[Install]
WantedBy=multi-user.target
Jenkins Docker ์ปจํ
์ด๋๋ฅผ ๊ด๋ฆฌํ ์ systemd ์๋น์ค์ธ jenkins
๋ฅผ ์ ์ํฉ๋๋ค.
์๋น์ค ํ์ผ์๋ ์ธ ๊ฐ์ ๋ถ๋ถ์ด ์์ต๋๋ค.
[Unit]
: ์๋น์ค๊ฐ ํ์๋กํ๋ ๋ชจ๋ ํญ๋ชฉ์ ๋์ดํฉ๋๋ค. ์ ์ฉํ๊ธฐ ์ํด์๋ Docker ์๋น์ค๊ฐ ์คํ ์ค์ด์ด์ผ ํฉ๋๋ค.[Service]
:Restart=on-failure
: ์๋น์ค๊ฐ ์ด๋ค ์ด์ ๋ก ์คํจํ๊ฑฐ๋ ์ค์ง๋๋ฉด ์๋์ผ๋ก ๋ค์ ์์๋์ด์ผํจ์ ์ง์ - ์๋น์ค๊ฐ ๋น์ ์์ ์ผ๋ก ์ข ๋ฃ๋์์ ๋์๋ง ๋์ํจ. ํธ์คํธ ๋จธ์ ์ด ๊ฐ์ ์ข ๋ฃ๋๋ ๊ฒฝ์ฐ๋ ์์คํ ์์ค์ ์ด๋ฒคํธ๋ก์ ์๋น์ค ์์ฒด์ ์ข ๋ฃ์๋ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ์ผ๋ฐ์ ์ผ๋ก ํธ์คํธ ๋จธ์ ์ด ๊ฐ์ ์ข ๋ฃ๋ ๋๋ systemd๊ฐ ์๋น์ค๋ฅผ ์ฌ์์ํ์ง ์์. -> ๋ฐ๋ชฌ ๊ฐ์ ์คํฌ๋ฆฝํธ ๋ฑ๋ก์ด ํ์ํ ๊ฒ์ผ๋ก ์๊ฐ๋จ
Group
: irteam, irteamsu, root ์ฌ์ฉ์ ๋ชจ๋ ์คํ ๊ฐ๋ฅํ๋๋ก Group ์ค์ ExecStart
: Jenkins ์ปจํ ์ด๋๋ฅผ ์์ํ๋ ๋ช ๋ น์ ์ง์ ExecStop
: Jenkins ์ปจํ ์ด๋๋ฅผ ์ค์งํ๋ ๋ช ๋ น์ ์ง์
[Install]
: ์๋น์ค๊ฐ ์์๋ ๋, ์ด ๊ฒฝ์ฐmulti-user.target
๋ ๋ฒจ์์ ์์๋จ์ ์ง์
3. ์ ์๋น์ค ํ์ผ์ ์ธ์ํ๋๋ก systemd ๋ฐ๋ชฌ์ ๋ค์ ๋ก๋ํฉ๋๋ค.
sudo systemctl daemon-reload
์๋น์ค ํ์ผ์ ๋ํ ๋ณ๊ฒฝ ์ฌํญ์ ์ธ์ํ๋๋ก systemd ๋ฐ๋ชฌ์ ๋ค์ ๋ก๋ํ๋ ๊ฒ์ ๋๋ค.
4. Jenkins ์๋น์ค๋ฅผ ๋ถํ ์ ์๋ ์์ํ๋๋ก ์ค์ ํฉ๋๋ค.
sudo systemctl enable jenkins
๊ฒฐ๊ณผ
- Jenkins ๋น์ ์ ์ข ๋ฃ ์ Jenkins ๋์ปค ์ปจํ ์ด๋๊ฐ ์๋์ผ๋ก ์คํ๋๋ ๊ฒ์ ํ์ธํ๊ธฐ
SIGABRT
๋ก ๋น์ ์ ์ข ๋ฃ ๋จ
- ์๋ ์ฌ์คํ ๋จ
- ๋ก๊ทธ
2. ํธ์คํธ ๋จธ์ ๋น์ ์ ์ข ๋ฃ(reboot) ์ Jenkins ๋์ปค ์ปจํ ์ด๋๊ฐ ์๋์ผ๋ก ์คํ๋๋ ๊ฒ์ ํ์ธํ๊ธฐ
- systemctl enable ๋ช ๋ น์ด๋ก reboot ๊ฐ๋ฅ ํ์ธ!
systemd ์๋น์ค ํ์ผ ์ค์
[Service]
Restart=[no|on-success|on-failure|on-watchdog|on-abort|always]
- ํด๋น ์ ๋์ด ์ฃฝ์์ ๋๋ ํน์
WatchdogSec
๋งํผ์ ์๊ฐ ๋์ ์๋ต์ด ์๋ ๊ฒฝ์ฐ ์ฌ์์ํ๋ค. no
(๊ธฐ๋ณธ๊ฐ) : ์ ๋์ ๋ค์ ์์ํ์ง ์๋๋ค.on-success
: ์ ๋์ด ์ ์์ ์ผ๋ก ์ข ๋ฃ ๋์์ ๋๋ง ์ฌ์์ํ๋ค.- ์ข
๋ฃ ์ '0' ๊ฐ์ ๋ฆฌํดํ์ฌ ์ข
๋ฃ ๋์๊ฑฐ๋ SIGHUP, SIGINT, SIGTERM, SIGPIPE ๋ฑ๊ณผ ๊ฐ์ ์๊ทธ๋ ๋๋
SuccessExitStatus
์ค์ ์์ ์ง์ ๋ ๋ฆฌํด ์ฝ๋ ๋ชฉ๋ก์ ๋ฐ๋ฅธ ์๊ทธ๋์ ๋ํด์ ๋ชจ๋ ์ฑ๊ณต์ผ๋ก ์ธ์ํด ์ฌ์์ ํ๊ฒ ๋๋ค.
- ์ข
๋ฃ ์ '0' ๊ฐ์ ๋ฆฌํดํ์ฌ ์ข
๋ฃ ๋์๊ฑฐ๋ SIGHUP, SIGINT, SIGTERM, SIGPIPE ๋ฑ๊ณผ ๊ฐ์ ์๊ทธ๋ ๋๋
on-failure
: ์ ๋์ด ๋น์ ์์ ์ผ๋ก ์ข ๋ฃ ๋์์ ๋ ์ฌ์์ํ๋ค.- ๋ฆฌํด๊ฐ์ด '0' ์ด ์๋ ๊ฒฝ์ฐ, core dump ์ ๊ฐ์ด ๋น์ ์์ ์ธ ์๊ทธ๋์ ๋ฐ๊ณ ์ข ๋ฃ๋ ๊ฒฝ์ฐ, ํ์ ์์๊ฐ ๋ด ์๋ต์ด ์๋ ๊ฒฝ์ฐ ๋ฑ ์ฌ์์ํ๋ค.
on-watchdog
:WatchdogSec
์ ์ค์ ๋ ์๊ฐ ๋ด ์๋ต์ด ์๋ ๊ฒฝ์ฐ์๋ง ์ฌ์์ํ๋ค.on-abort
: ์ง์ ๋์ง ์์ ๋ฆฌํด๊ฐ์ ๋ฐ์ ๊ฒฝ์ฐ ์ฌ์์ํ๋ค.always
: ์ข ๋ฃ ์ํ ๋ฑ๊ณผ ๋ฌด๊ดํ๊ฒ ๋ฌด์กฐ๊ฑด ์ฌ์์ํ๋ค.- ์ฌ์ฉ์๊ฐ ์ค์งํด๋ ์์คํ ์ด ๋ค์ ๋์์ง๊ฒ ๋๋ฏ๋ก ์ค์ ๋ ์ ๋ ์ค์ง ์ ์ฃผ์ ํ์
์์คํ ๋ฆฌ์์ค ๊ด๋ จ Limit ์ค์
sudo systemctl show jenkins | grep ^Limit
: ๋ฆฌ์์ค๋ณ ์ค์ ๋ Limit ๊ฐ ๋ชฉ๋ก ์กฐํ
- LimitAS
- ์๋น์ค์์ ์ฌ์ฉํ ์ ์๋ ์ต๋ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ
- infinity : ์๋น์ค๊ฐ ํ์ํ ๋งํผ์ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ์ ํํ์ง ์์
- LimitRSS
- ์๋น์ค์์ ์ฌ์ฉํ ์ ์๋ ์ต๋ ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ
- infinity : ์๋น์ค๊ฐ ํ์ํ ๋งํผ์ RAM์ ์ฌ์ฉํ ์ ์๋๋ก ์ ํํ์ง ์์
- LimitCORE
- ์ถฉ๋ ๋ฐ์ ์ ์๋น์ค์์ ์์ฑํ ์ ์๋ ์ฝ์ด ๋คํ ํ์ผ์ ์ต๋ ํฌ๊ธฐ
- infinity : ์ฝ์ด ๋คํ ํ์ผ ํฌ๊ธฐ ์ ํํ์ง ์์
- LimitNOFILE
- ์๋น์ค๊ฐ ๋์์ ๊ฐ์ง ์ ์๋ ์ด๋ฆฐ ํ์ผ(ํ์ผ ๋์คํฌ๋ฆฝํฐ)์ ์ต๋ ๊ฐ์
- 1048576 : ์ต๋ 1048576๊ฐ์ ์ด๋ฆฐ ํ์ผ์ ๋์์ ๊ฐ์ง ์ ์์
์ต๋ ์คํ ํ์ผ ์ ์ค์
- ์ฌ์ฉ์ ๊ณ์ ์ ๋ํ ๋ฆฌ์์ค ์ ํ์ ์ค์ ํ๋ ์์คํ ๊ตฌ์ฑ ํ์ผ
- ๊ฐ๋ณ ์ฌ์ฉ์๋ ํ๋ก์ธ์ค๊ฐ ์์คํ ์์์ ๋ ์ ํ๋ ๊ฒ์ ๋ฐฉ์งํ๊ณ , ์์ ํ ๋น์ ๋ณด์ฅํ๊ธฐ ์ํด ์ฌ์ฉ
/etc/security/limits.conf
- <domain> : ์ ํ์ด ์ ์ฉ๋๋ ๋ฒ์๋ฅผ ์ง์
- @๊ทธ๋ฃน๋ช
- ์ฌ์ฉ์๋ช
- * : ๋ชจ๋ ์ฌ์ฉ์
- <type> : ์ ํ์ ์ ํ ์ง์
- soft : ์ผ์์ ์ผ๋ก ์ด๊ณผํ ์ ์๋ ์ ํ ๊ฐ
- hard : ์ด๊ณผํ ์ ์๋ ์ต๋ ๊ฐ
- <item> : ์ ํ๋๋ ์์ ์ง์
- core : ์ฝ์ด ํ์ผ์ ์ต๋ ํฌ๊ธฐ
- data : ์ต๋ ๋ฐ์ดํฐ ํฌ๊ธฐ
- fsize : ์ต๋ ํ์ผ ํฌ๊ธฐ
- memlock : ์ต๋ ์ ๊ธด ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ ๊ณต๊ฐ(๋ฌผ๋ฆฌ์ RAM์ ์ ๊ธด ์ํ๋ก ์ ์งํ๋ ๋ฉ๋ชจ๋ฆฌ ์, ๋์คํฌ๋ก ์ค์๋์ง ์๊ณ ๋น ๋ฅธ ์ก์ธ์ค๊ฐ ํ์ํ ๋)
- nofile : ์ต๋ ๊ฐ๋ฐฉ ํ์ผ ์
- rss : ์ต๋ ๋ ์ง๋ํธ ์ธํธ ํฌ๊ธฐ(ํ๋ก์ธ์ค๊ฐ ์ค์ RAM์ ๋ณด์ ํ๊ณ ์๋ ๋ฉ๋ชจ๋ฆฌ์ ์ผ๋ถ)
- stack : ์ต๋ ์คํ ํฌ๊ธฐ
- cpu : ์ต๋ CPU ์๊ฐ
- nproc : ์ต๋ ํ๋ก์ธ์ค ์
- as : ์ฃผ์ ๊ณต๊ฐ ์ ํ
- maxlogins : ํด๋น ์ ์ ์ ์ต๋ ๋ก๊ทธ์ธ ์
- priority : ์ ์ ์ฐ์ ์์
- locks : ์ ์ ๊ฐ ๊ฐ์ง๊ณ ์์ ์ ์๋ ์ต๋ ํ์ผ ๊ฐ์
- <value> : ์ง์ ๋ ์์์ ์ ํ ๊ฐ ์ ์
- ์ค์ ๋ด์ฉ ์ ์ฉํ๋ ๋ฐฉ๋ฒ 2๊ฐ์ง
- 1. ์ฌ๋ถํ
ํ๊ธฐ
ulimit -a
๋ก ๋ฆฌ์์ค ์ฌ๋ก๋ํ๊ธฐ
- 1. ์ฌ๋ถํ
ํ๊ธฐ
ulimit -a