2023. 8. 2. 12:28ใSystem ์์ ์ค/Docker
(์๋ฌธ๋์) Automating DevOps with GitLab CI/CD Pipelines: Build efficient CI/CD pipelines to verify sec... Paperback
COUPANG
www.coupang.com
"์ด ํฌ์คํ ์ ์ฟ ํก ํํธ๋์ค ํ๋์ ์ผํ์ผ๋ก, ์ด์ ๋ฐ๋ฅธ ์ผ์ ์ก์ ์์๋ฃ๋ฅผ ์ ๊ณต๋ฐ์ต๋๋ค."
๐ Ubuntu 22.04 LTS Gitlab Docker ์ค์น
๐ฝ ๊ฐ์
๐ฆ ์๊ฐ
์ฃผ๋๊ฐ ํ์ฌ ์ด์์ค์ธ ํ๋ก์ ํธ ๋ชจ์์์ ์ฌ์ฉํ๋ ํ์๊ด๋ฆฌ ํด์ ์ธ๋ถ์์ ์ฌ์ฉํ ์ ์๋ github(๊นํ), gitlab(๊น๋ฉ)์ด ์๋ gitea(๊นํฐ)๋ฅผ ์ฌ์ฉํ๊ณ ์์ด์.
์ด๋ ๊ตฌ์ฑ์์ ์ฝ๋ ํ๋ํ๋๊ฐ ์ฐ๋ฆฌ์ ์์คํ ์์ฐ์ด๊ณ , ์ต๋ํ ๋ณด์์ ์ผ๋ก ๋ฐฉ์ดํ์ฌ ์ธ๋ถ ์ ์ถ์ ๋ง๊ธฐ ์ํจ์ด์์.
ํ์ง๋ง, ์ค๋ฌด์์๋ AWS Code Commit(์ฝ๋ ์ปค๋ฐ)์ด๋, ๊นํ, ๊น๋ฉ์ ๋ง์ด ์ฌ์ฉํ๊ณ ์๊ธฐ ๋๋ฌธ์ ์ค๋ฌด ๊ธฐ๋ฐ์ ์ง์์ ์ตํ๊ธฐ ์ํด์ ์ด๋ป๊ฒ ํด์ผ ํ ๊น? ๋ฅผ ๊ณ ๋ฏผํ๊ฒ ๋์์ด์.
๋ด๋ถ์์ ์ฌ์ฉ์ค์ธ ์๋ฒ์ ๋ฉ๋ชจ๋ฆฌ๋ ์ถฉ๋ถํ๊ณ , ๊น๋ฉ์ ๋ด๋ถ์ ์ผ๋ก ์ค์นํ๋ฉด ์ข๊ฒ ๋ค! ๋ผ๋ ๊ฒฐ๋ก ์ ํ๊ฒ ๋์๊ณ , ์ด๋ฅผ ํตํด ๋์ปค ๊ธฐ๋ฐ์ ๊น๋ฉ์ ์ค์นํ์ฌ ์ด์ํด ๋ณด๋ ค๊ณ ํฉ๋๋ค.
์ฐธ๊ณ ๋ก ๊น๋ฉ ๊ด๋ จ ์ด๋ฏธ์ง๋ gitlab-ce์ gitlab-ee๊ฐ ์๋๋ฐ, ce๋ community (๋ฌด๋ฃ),
ee๋ enterprise (์ ๋ฃ) ์ ์ฉ์ด์์.
์์ง ์ ๋ฃ ๋ฒ์ ์ ์ฌ์ฉํ ์ด์ ๊ฐ ์๊ธฐ ๋๋ฌธ์ ์ฃผ๋๋ ce๋ฅผ ์ค์นํ ๊ฒ์ด๊ณ , ์ถํ ์ ๋ฃ ๋ฒ์ ์ ์ฌ์ฉํ๊ณ ์ถ์ ๋, ๋ค์ ee ๋ฒ์ ์ ์ค์นํ ํ์๊ฐ ์์ด์.
GitLab CE vs EE | InfoGrab, DevOps ์ ๋ฌธ ๊ธฐ์ ๊ธฐ์ | ์ธํฌ๊ทธ๋ฉ | GitLab๊ธฐ๋ฐ DevSecOps ๊ตฌ์ถ,์ปจ์คํ ,๊ต์ก,๊ธฐ์
GitLab์ ์ฌ์ฉํ๋ ค๋ ๊ฒฝ์ฐ, GitLab Enterprise Edition(EE)์ ์ค์นํ๋ ๊ฒ์ด ์ข์ต๋๋ค. GitLab CE vs EE์์๋ GitLab์ ๋ฐฐํฌํ์ ๋ํ ์ค๋ช ์ ํฉ๋๋ค.
insight.infograb.net
๐ฝ ์ค์นํ๊ธฐ
๐ฆ ๋์ปค ์ด๋ฏธ์ง ๋ด๋ ค๋ฐ๊ธฐ
์ต์ด ๋์ปค ์ด๋ฏธ์ง๋ฅผ ๋ด๋ ค ๋ฐ์ ์ฃผ๋๋ก ํ ๊ฒ์.
๐ฆ ๋์ปค ๊ธฐ๋
๋์ปค ์ด๋ฏธ์ง ๊ธฐ๋ฐ์ผ๋ก ๋์ปค๋ฅผ ๊ธฐ๋ํ๋๋ฐ๋ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์์ด์.
์ฒซ๋ฒ์งธ๋ก๋ ๋ช
๋ น์ด๋ฅผ ์
๋ ฅํด์ ๊ธฐ๋ํ๋ ๋ฐฉ๋ฒ์ด๊ณ , ๋๋ฒ์งธ๋ Docker Compose(๋์ปค ์ปดํฌ์ฆ)๋ฅผ ์ด์ฉํ๋ ๋ฐฉ๋ฒ์ด์์.
๋ง์ฝ ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ๋ค๋ฉด ์ ์คํฌ๋ฆฝํธ๋ฅผ ๋ง๋ค์ด์ ์ ์ฅํด ๋๋๊ฑธ ์ถ์ฒํด์.
docker run --detach \
--hostname gitlab.example.com \
-p 1980:80 \
-p 1922:22 \
-p 1443:443 \
-v $HOME/gitlab/config:/etc/gitlab \
-v $HOME/gitlab/logs:/var/log/gitlab \
-v $HOME/gitlab/data:/var/opt/gitlab \
--name gitlab \
--restart=unless-stopped \
gitlab/gitlab-ce:latest
๋ช
๋ น์ด๋ ์์ ๊ฐ์์.
๋ช ๋ น์ด Option | ์์ธ ๋ด์ฉ |
detach | Back Ground ์คํ |
hostname | gitlab ์ ์ฉ ๋๋ฉ์ธ ์ค์ ๋ฐ ์ปจํ ์ด๋ ๋ด๋ถ ํธ์คํธ ๋ค์ ์ค์ |
p(publish) | gitlab์์๋ 22(ssh), 80(http), 443(https) ํฌํธ๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์ด๋ฅผ ํฌํธํฌ์๋ฉ ํ๊ธฐ ์ํ ์ต์ |
name | ๋์ปค ์ปจํ ์ด๋ ์ด๋ฆ |
restart | server๊ฐ ๊ธฐ๋๋ ๋ ์๋์ผ๋ก ์คํํ๋ผ๊ณ ์ต์ ์ผ๋ก ๋ถํ ์ ์๋์ผ๋ก ์ปจํ ์ด๋๋ฅผ ์ฌ์์ํ๋ฉฐ, ์ฌ์ฉ์๊ฐ ์ข ๋ฃํ์ ๋๋ ๋ถํ ํ์ง ์๋๋ก ์ค์ . |
v(volume) | ํธ์คํธ ์๋ฒ์ ๋์ปค ์ปจํ
์ด๋ ๊ฐ ๋ณผ๋ฅจ ๋งคํ. ํธ์ค ์๋ฒ์ $HOME/gitlab ๋๋ ํฐ๋ฆฌ๋ฅผ ๋ง๋ค์ด์ฃผ๊ณ , ๊ทธ ๊ณณ์ ์ปจํ ์ด๋์ ์์ฑ๋๋ ๋๋ ํฐ๋ฆฌ ๋ด์ฉ์ ์ ์ฅํ์ฌ ๋งคํ |
์ฃผ๋๋ ๋์ปค ์ปดํฌ์ฆ๋ฅผ ์ด์ฉํด์ ์งํํด ๋ณด๋ ค๊ณ ํด์.
์์ ๊ฐ์ด ํธ์คํธ ์๋ฒ์ ๋์ปค ์ปจํ
์ด๋ ๋ณผ๋ฅจ ๋งคํ์ ์ํ ๋๋ ํฐ๋ฆฌ๋ฅผ ์์ฑํด ์ฃผ์์ด์.
์ฃผ๋๋ ์ฒซ๋ฒ์งธ ์ฌ์ง๊ณผ ๊ฐ์ด ๋์ปค ์ปดํฌ์ฆ ํ์ผ์ ๋ง๋ค์ด ์ฃผ์์ด์.
๋ง์ฝ ๋๋ฉ์ธ์ด ์๋ค๋ฉด ๋๋ฒ์งธ ์ฌ์ง์ฒ๋ผ ํด ์ฃผ์ด๋ ๋์.
environment์ GITLAB_OMNIBUS_CONFIG์ gitlab.rb์ ์๋ ๋ด์ฉ์ ๋ณ๊ฒฝ ํน์ ์ฝ์
ํ ๋ด์ฉ์ ๋ฃ์ด ์ค ์ ์์ด์.
์ปจํ
์ด๋ ๊ธฐ๋ ๋ค ์ปจํ
์ด๋ ๋ด๋ถ์ /etc/gitlab ๋๋ ํฐ๋ฆฌ์์ gitlab.rb๋ฅผ ํ์ธํ๋ฉด ์ ๋ด์ฉ์ด ์ค์ ๋๊ฑธ ํ์ธํ ์ ์์ด์.
๋์ปค๋ฅผ ๊ธฐ๋ ์์ผ ๋ณด์์ด์.
์์ ๊ฐ์ด ์ ์์ ์ผ๋ก ์ ์ ๋๋ ๊ฑธ ํ์ธํ ์ ์์ด์.
๐ฝ ์ค์ ํ๊ธฐ
๐ฆ ๊น๋ฉ ๋ฃจํธ ๊ณ์ ์ ๋ณด ํ์ธ ๋ฐ ์ ์
์ด์ ๊น๋ฉ์ ๋ฃจํธ ๊ณ์ ์ ๋น๋ฐ๋ฒํธ๋ฅผ ์ฐพ์ ๋ณผ๊ฒ์.
์ต์ด ๊น๋ฉ ์ปจํ
์ด๋์ ์ ์ํด ์ค์ผ ํด์.
์ด์ ์ ์ํด ๋ณผ๊ฒ์.
์์ ๊ฐ์ด ์ด๊ธฐ ๋น๋ฐ๋ฒํธ๋ฅผ ๋ณ๊ฒฝํด ์ฃผ์์ด์.
์ด๋ ๊ฒ ๊น๋ฉ์ ์ค์นํด ๋ณด์์ด์.
ํน์๋ผ๋ ๊ถ๊ธํ์๊ฑฐ๋, ํผ๋๋ฐฑ ์ฃผ์ค ๋ด์ฉ์ด ์์ผ์๋ค๋ฉด ๋๊ธ ๋ถํ๋๋ฆด๊ฒ์!
๐ Mail ๊ธฐ๋ฅ
๐ฝ Gitlab Mail
๐ฆ Gmail
Gitlab์ ํตํด ์์
๋ฑ์ ๋ํ ์๋ฆผ์ ์ด์ฉ์๋ค์ด ๋ฑ๋กํ Mail๋ก ๋ฐ์ก๋ ์ ์๋๋ก ์์
ํด ์ค๊ฒ์.
์ต์ด ์ฃผ๋๋ Gmail์ ์ด์ฉํด์ Mail์ด ๋ฐ์ก๋๊ฒ ํ๊ธฐ ์ํด ์์
์ ํด์ค๊ฑฐ์์.
๊ตฌ๊ธ์์ ์์ ๊ฐ์ ํ๋ฉด์ด ๋์ค๋ฉด ๊ณ์ ์ ์ ํํด ์ค๋๋ค.
๊ทธ๋ฐ ๋ค ๋ณด์ Tab์์ 2๋จ๊ณ ์ธ์ฆ์ ํด๋ฆญํด ์ค๊ฒ์.
๋ฐ์ผ๋ก ๋ด๋ฆฌ๋ฉด ์์ ๊ฐ์ด ์ฑ ๋น๋ฐ๋ฒํธ๊ฐ ์์๊ฑฐ์์.
์ด ๊ณณ์ ํด๋ฆญํด ์ค๊ฒ์.
์์ ๊ฐ์ด ์ด๋ฆ์ ์
๋ ฅํ๊ณ , ๋ง๋ค๊ธฐ๋ฅผ ๋๋ฌ์ค๊ฒ์.
๊ทธ๋ผ ์์ ๊ฐ์ด ๋์ฌํ ๋ฐ, ๊ธฐ๊ธฐ์ฉ ์ฑ ๋น๋ฐ๋ฒํธ๊ฐ Git Lab์ ๋น๋ฐ๋ฒํธ๊ฐ ๋ ๊ฑฐ์์.
๐ฆ Gitlab ์ค์
์์ ๊ฐ์ด Gitlab Docker์ ์ ์ํด ์ค๋๋ค.
์ต์ด ์์ ๊ฐ์ด Email ์ค์ ๋ถ๋ถ์ด ์ฃผ์ ์ฒ๋ฆฌ๊ฐ ๋์ด ์์ ๊ฑฐ์์.
์ด ๋ถ๋ถ์ ์๋ด์ฃผ๋ ค๊ณ ํด์.
์์ ๊ฐ์ด Gmail๋ก ๋ณด๋ผ ์ ์๋๋ก ์ค์ ํด ์ฃผ์์ด์.
์ฌ๊ธฐ์ Password ๋ถ๋ถ์ ์์์ ์ฑ ๋น๋น๋ฒํธ๋ก ๋ฐ์ ๋ด์ฉ์ ๋ฃ์ด์ฃผ๋ฉด ๋ผ์.
์ ๋ช
๋ น์ด๋ฅผ ์
๋ ฅํ์ฌ ์ค์ ํ ๋ด์ฉ์ด ์ธ์๋ ์ ์๋๋ก ํด ์ฃผ์์ด์.
Notify.test_email('junyharang8592@gmail.com', 'Gitlab Mail ํ
์คํธ', 'GitLab Mailing ํ์ธ ์ค ์
๋๋ค.').deliver_now
์์ ๊ฐ์ด Mail์ด ์ ์์ ์ผ๋ก ๊ฐ๋์ง ํ์ธํด ๋ณผ ์ ์์ด์.
์์ ๊ฐ์ด ๋ฉ์ผ๋ ์ ๋์ฐฉํ ๊ฑธ ํ์ธํ ์ ์๋ต๋๋ค.
๋ง์ฝ Mail์ด ์ค์ง ์๊ฑฐ๋, Mail Test ์ค Error๊ฐ ๋ฐ์ํ๋ค๋ฉด Docker Host Server์ ๋ฐฉํ๋ฒฝ์ด ์ฐจ๋จํ๋ ๊ฒ์ ์๋์ง ํ์ธํด ๋ณผ ํ์๊ฐ ์์ด์.
๐ง ์ฐธ๊ณ ์๋ฃ
[Docker] GitLab ์ค์น ๋ฐ ์ ์ํ๊ธฐ
๋์ปค๋ก GitLab ์ ์ํ๊ธฐ
velog.io
(์๋ฌธ๋์) Automating DevOps with GitLab CI/CD Pipelines: Build efficient CI/CD pipelines to verify sec... Paperback
COUPANG
www.coupang.com
"์ด ํฌ์คํ ์ ์ฟ ํก ํํธ๋์ค ํ๋์ ์ผํ์ผ๋ก, ์ด์ ๋ฐ๋ฅธ ์ผ์ ์ก์ ์์๋ฃ๋ฅผ ์ ๊ณต๋ฐ์ต๋๋ค."