๊ฐ๋ฐ์์๊ฒ ๋น๋๋ ๋งค์ผ ๋ฐ๋ณต๋๋ ์ผ์ ๋๋ค. ํ ๋ฒ์ ๋น๋๊ฐ 4๋ถ์ด๋ผ๋ฉด, ํฌ๊ฒ ๋ถํธํ์ง ์๋ค๊ณ ๋๋ ์๋ ์์ฃ . ํ์ง๋ง ํ๋ฃจ์ ์์ญ ๋ฒ ๋ฐ๋ณต๋๋ค๋ฉด ์ด์ผ๊ธฐ๋ ๋ฌ๋ผ์ง๋๋ค.
โ๋งค๋ฒ 4๋ถ, ํ๋ฃจ 20๋ฒ โ ํ๋ฃจ 1์๊ฐ 20๋ถโ
์ด ๊ธ์ ๊ทธ๋ฐ ๋ฐ๋ณต๋๋ ์๊ฐ ๋ญ๋น๋ฅผ ์ค์ด๊ธฐ ์ํด, Argo Workflow ๊ธฐ๋ฐ ๋น๋ ํ์ดํ๋ผ์ธ์ ์ต์ ํํ๋ฉฐ ์๊ฐ์ 2๋ถ ์ด๋ฐ๋๋ก ์ค์ธ ์ค์ ๊ฒฝํ์ ๊ณต์ ํ๋ ๊ธ์ ๋๋ค.
์ฒ์ ์๋๋ ๋จ์ํ์ต๋๋ค.
โCPU๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ง์ด ์ฃผ๋ฉด ๋น๋๊ฐ ๋นจ๋ผ์ง๊ฒ ์ง?โ
๊ทธ๋์ ๊ฐ ์ํฌํ๋ก์ฐ ์คํ ์ ์๋์ ๊ฐ์ด ์์์ ํ ๋นํ์ต๋๋ค.
(์๋ ์ฝ๋๋ ์ดํด๋ฅผ ๋๊ธฐ ์ํ ์์์ ๋๋ค.)
resources:
limits:
cpu: "4000m"
memory: "4Gi"
ํ์ง๋ง ๊ฒฐ๊ณผ๋ ์๊ฐ๋ณด๋ค ๋ฏธ๋ฏธํ์ต๋๋ค.
๋ฆฌ์์ค๊ฐ ๋ง์๋ Pod๊ฐ ๋ ธ๋์ ์ค์ผ์ค๋ง๋๋ ์๊ฐ, ๊ทธ๋ฆฌ๊ณ ์ปจํ ์ด๋ ์์ฑ๊น์ง์ ์ค๋ฒํค๋๊ฐ ์ฆ๊ฐํ๋ฉด์ ์ ์ฒด ๋น๋ ์๊ฐ์ ๊ฑฐ์ ๋ณํ์ง ์์์ต๋๋ค.
๊ทธ๋์ ์ํฌํ๋ก์ฐ์ ๊ฐ ์คํ ์ ํ์๋ก๊ทธ๋ก ์ธก์ ํด๋ณด์์ต๋๋ค.
| ์คํ | ์์ ์๊ฐ (๊ธฐ์กด) |
|---|---|
| Git clone | ์ฝ 40์ด |
| Build | ์ฝ 40์ด |
| ECR ์ ๋ก๋(push) | ์ฝ 1๋ถ 40์ด |
| ๊ธฐํ | 1๋ถ |
ECR ์ ๋ก๋๊ฐ ๊ฐ์ฅ ๋๋ ธ์ต๋๋ค.
๋น๋ ์์ฒด๋ณด๋ค๋, ์ด๋ฏธ์ง๋ฅผ pushํ๋ ๊ณผ์ ์ด ๋ณ๋ชฉ์ด์์ต๋๋ค.
๊ธฐ์กด์๋ ์๋์ ๊ฐ์ ๋ฒ ์ด์ค ์ด๋ฏธ์ง๊ฐ ์ฌ์ฉ๋๊ณ ์์์ต๋๋ค.
# ์์: ๊ธฐ๋ณธ ์ด๋ฏธ์ง
FROM golang:1.21
์ด๋ฅผ ์๋์ ๊ฐ์ด ๊ฒฝ๋ ์ด๋ฏธ์ง๋ก ๋ณ๊ฒฝํ์ต๋๋ค.
# ์์: ๊ฒฝ๋ ์ด๋ฏธ์ง๋ก ๊ต์ฒด
FROM golang:1.21-alpine
๋ณ๊ฒฝ ํ์๋ Docker ์ด๋ฏธ์ง์ ํฌ๊ธฐ๊ฐ ์ฝ 800MB โ 200MB ์ดํ๋ก ์ค๋ฉด์,
ECR ์ ๋ก๋ ์๊ฐ์ด ์ฝ 1๋ถ 40์ด โ 20์ด ๋ด์ธ๋ก ๊ฐ์ํ์ต๋๋ค.
๐ก ์ฃผ์์ฌํญ: alpine์ glibc ๋์ musl์ ์ฌ์ฉํ๋ฏ๋ก, C ์์กด์ฑ์ด ์๋ ๋ฐ์ด๋๋ฆฌ๋ ํธํ์ฑ ํ์ธ์ด ํ์ํฉ๋๋ค.
kaniko๋ ๋์ปค๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ์ด๋ฏธ์ง ๋น๋๋ฅผ ์ํํ๋ ๋๊ตฌ์ ๋๋ค.
ํ์ง๋ง ๊ธฐ๋ณธ ์ค์ ์ผ๋ก๋ ๋ชจ๋ ๋ ์ด์ด๋ฅผ ๋งค๋ฒ ์ฒ๋ฆฌํ์ฌ ์๋๊ฐ ๋๋ฆด ์ ์์ต๋๋ค.
๊ทธ๋์ ์๋์ ๊ฐ์ ์ต์ ๋ค์ ์ ์ฉํ์ต๋๋ค. (์์์ ๋๋ค)
args:
- --snapshot-mode=redo
- --single-snapshot
- --verbosity=warn
๊ฐ ์ต์ ์ค๋ช
| ์ต์ | ํจ๊ณผ |
|---|---|
| --snapshot-mode=redo | ๋ชจ๋ ๋ณ๊ฒฝ์ฌํญ์ ํ ๋ฒ์ ์ค๋ ์ท |
| --single-snapshot | ํ์ผ ์์คํ ์ ์ฒด๋ฅผ ๋จ์ผ ๋ ์ด์ด๋ก ์ฒ๋ฆฌ |
| --verbosity=warn | ๋๋ฒ๊น ๋ก๊ทธ ์๋ต, ๋ก๊ทธ ๊ฐ๋ ์ฑ ํฅ์ |
CI์์ ์ ์ฒด ํ์คํ ๋ฆฌ๋ฅผ cloneํ ํ์๋ ์์ต๋๋ค.
์๋์ ๊ฐ์ด ๋ธ๋์น 1๊ฐ, ์ปค๋ฐ depth 1๋ง ๊ฐ์ ธ์ค๋๋ก ์์ ํ์ต๋๋ค.
# ์์: git clone ๊ฐ์ํ
git clone --depth=1 --single-branch https://your.repo.url
๋น๋ ๋์ค ๋งค๋ฒ ๋ฒ ์ด์ค ์ด๋ฏธ์ง๋ฅผ pullํ๋ฉด ์๊ฐ์ด ๋ญ๋น๋ฉ๋๋ค.
imagePullPolicy๋ฅผ ์๋์ฒ๋ผ ์ค์ ํ์ฌ, ์ด๋ฏธ ๋ก์ปฌ์ ์ด๋ฏธ์ง๊ฐ ์์ ๊ฒฝ์ฐ ์ฌ์ฌ์ฉํ๋๋ก ํ์ต๋๋ค.
imagePullPolicy: IfNotPresent
๊ธฐ์กด์๋ ๋ชจ๋ ์คํ ์ ๊ณตํต ๋ณผ๋ฅจ์ด ๋ถ์ด ์์ด, Pod ์ด๊ธฐํ ์๊ฐ์ด ๊ธธ์ด์ง๊ณ , ๋ฆฌ์์ค ๋ญ๋น๊ฐ ๋ฐ์ํ์ต๋๋ค.
๊ทธ๋์ ๋ถํ์ํ ์คํ ์์๋ emptyDir๋ฅผ ์ฌ์ฉํ๊ฑฐ๋, ๋ณผ๋ฅจ ์์ฒด๋ฅผ ์ ๊ฑฐํ์ฌ ์ต์ ํํ์ต๋๋ค.
volumes:
- name: tmp
emptyDir: {}
๋ํ, ๋ณ๋ ฌ ์คํ์ด ๊ฐ๋ฅํ ์คํ ๋ค์ ์์กด์ฑ์ ์ ๊ฑฐํ์ฌ ๋์์ ์คํ๋๋๋ก ๋ฆฌํฉํฐ๋งํ์ต๋๋ค.

| ํญ๋ชฉ | ๊ฐ์ ์ | ๊ฐ์ ํ |
|---|---|---|
| ์ ์ฒด ๋น๋ ์๊ฐ | ์ฝ 4๋ถ | ์ฝ 2๋ถ 10์ด |
| ECR Push ์๊ฐ | ์ฝ 1๋ถ 20์ด | ์ฝ 20์ด |
| Git Clone ์๊ฐ | ์ฝ 40์ด | ์ฝ 20์ด |
| ๋น๋ ์คํ ์ | 6~7๊ฐ | 4~5๊ฐ๋ก ์ถ์ |
๋น๋ ์๊ฐ 1~2๋ถ ๋จ์ถ์ ์์ ๋ณด์ผ ์ ์์ต๋๋ค.
ํ์ง๋ง ์ด ์์ ์ฐจ์ด๊ฐ ๊ฐ๋ฐ ๋ฆฌ๋ฌ ์ ์ง, ๋น ๋ฅธ ํผ๋๋ฐฑ, ๋ฆฌ์์ค ๋น์ฉ ์ ๊ฐ์ด๋ผ๋ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ ธ์ต๋๋ค.
์ง๊ธ ๋ฐ๋ก ์ฌ๋ฌ๋ถ์ ๋น๋ ํ์ดํ๋ผ์ธ๋ ๋ถ์ํด๋ณด์ธ์.
์์ ๋ณ๋ชฉ์ด ๋ฐ๋ณต๋๋ฉด, ๊ฒฐ๊ตญ ํฐ ์๊ฐ ๋ญ๋น๋ก ์ด์ด์ง๋๋ค.