๋ฉ๋ชจ. ๋ฒ์ญ: ์ต๊ทผ ์ถํ ์ดํ
XNUMX๋
์ ์ ์ฐ๋ฆฌ๋ ์ถํํ์ต๋๋ค.
ํด๋น ๊ธฐ์ฌ๊ฐ ์ธ๊ธฐ๋ฅผ ์ป์์ต๋๋ค. ๋ค๋ฅธ ์ฌ๋๋ค์ GitOps์ ๋ํด ์ด์ผ๊ธฐํ๊ธฐ ์์ํ๊ณ GitOps๋ฅผ ์ํ ์๋ก์ด ๋๊ตฌ๋ฅผ ๊ฒ์ํ๊ธฐ ์์ํ์ต๋๋ค.
์ฐ๋ฆฌ๋ ๊ณง ๋ค์๊ณผ ๊ฐ์ ์๋ก์ด ์ค๋ช ์ด ํ์ํ๋ค๋ ๊ฒ์ ๊นจ๋ฌ์์ต๋๋ค.
- ์๋ง์ ์ฌ๋ก์ ์ด์ผ๊ธฐ;
- GitOps์ ๊ตฌ์ฒด์ ์ธ ์ ์
- ๊ธฐ์กด ์ง์์ ์ ๋ฌ๊ณผ ๋น๊ต.
์ด ๊ธฐ์ฌ์์ ์ฐ๋ฆฌ๋ ์ด๋ฌํ ๋ชจ๋ ์ฃผ์ ๋ฅผ ๋ค๋ฃจ๋ ค๊ณ ๋ ธ๋ ฅํ์ต๋๋ค. GitOps์ ๋ํ ์ ๋ฐ์ดํธ๋ ์๊ฐ์ ๊ฐ๋ฐ์ ๋ฐ CI/CD ๊ด์ ์ ์ ๊ณตํฉ๋๋ค. ๋ชจ๋ธ์ด ์ผ๋ฐํ๋ ์ ์์ง๋ง ์ฐ๋ฆฌ๋ ์ฃผ๋ก Kubernetes์ ์ค์ ์ ๋ก๋๋ค.
GitOps๋ฅผ ๋ง๋๋ณด์ธ์
์จ๋ฆฌ์ค๋ฅผ ์์ํด ๋ณด์ธ์. ๊ทธ๋ ๋ ๋๋ฌด ๋ฐ๋น ์ ๊ณ์ฝ ๋ด์ฉ์ ์ง์ ํ์ ํ ์ ์๋ ์ฌ๋๋ค์๊ฒ ๊ฑด๊ฐ, ์๋์ฐจ, ์ฃผํ ๋ฐ ์ฌํ ๋ณดํ์ ์ ๊ณตํ๋ ๊ฐ์กฑ ๋ณดํ(Family Insurance)์ ์ด์ํ๊ณ ์์ต๋๋ค. ๊ทธ๋ ์ ์ฌ์ ์ Alice๊ฐ ์ํ์์ ๋ฐ์ดํฐ ๊ณผํ์๋ก ์ผํ ๋ ์ฌ์ด๋ ํ๋ก์ ํธ๋ก ์์๋์์ต๋๋ค. ์ด๋ ๋ ๊ทธ๋ ๋ ๊ณ ๊ธ ์ปดํจํฐ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ค ํจ๊ณผ์ ์ผ๋ก ๋ถ์ํ๊ณ ๋ณดํ ํจํค์ง๋ฅผ ๊ตฌ์ฑํ ์ ์๋ค๋ ๊ฒ์ ๊นจ๋ฌ์์ต๋๋ค. ํฌ์์๋ค์ด ์ด ํ๋ก์ ํธ์ ์๊ธ์ ์ง์ํ๊ณ , ์ด์ ๊ทธ๋ ์ ํ์ฌ๋ ์ฐ๊ฐ 20์ฒ๋ง ๋ฌ๋ฌ ์ด์์ ๋ฒ์ด๋ค์ด๋ฉฐ ๋น ๋ฅด๊ฒ ์ฑ์ฅํ๊ณ ์์ต๋๋ค. ํ์ฌ ๋ค์ํ ์ง์์์ 180๋ช ์ ์ง์์ ๊ณ ์ฉํ๊ณ ์์ต๋๋ค. ์ฌ๊ธฐ์๋ ์น ์ฌ์ดํธ, ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ฐ๋ฐ, ์ ์ง ๊ด๋ฆฌํ๊ณ ๊ณ ๊ฐ ๊ธฐ๋ฐ์ ๋ถ์ํ๋ ๊ธฐ์ ํ์ด ํฌํจ๋ฉ๋๋ค. 60๋ช ์ผ๋ก ๊ตฌ์ฑ๋ ํ์ ํ์ฌ์ ๊ธฐ์ ์ด์ฌ์ธ Bob์ด ์ด๋๊ณ ์์ต๋๋ค.
Bob์ ํ์ ํด๋ผ์ฐ๋์ ํ๋ก๋์ ์์คํ ์ ๋ฐฐํฌํฉ๋๋ค. ํต์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ GKE์์ ์คํ๋๋ฉฐ Google Cloud์ Kubernetes๋ฅผ ํ์ฉํฉ๋๋ค. ๋ํ ๊ทธ๋ค์ ์ ๋ฌด์ ๋ค์ํ ๋ฐ์ดํฐ ๋ฐ ๋ถ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
Family Insurance๋ ์ปจํ ์ด๋ ์ฌ์ฉ์ ์ฐฉ์ํ์ง ์์์ง๋ง Docker ์ด์ ์ ์ฌ๋ก์กํ์ต๋๋ค. ํ์ฌ๋ GKE๋ฅผ ์ฌ์ฉํ๋ฉด ํด๋ฌ์คํฐ๋ฅผ ์ฝ๊ฒ ๋ฐฐํฌํ์ฌ ์๋ก์ด ๊ธฐ๋ฅ์ ํ ์คํธํ ์ ์๋ค๋ ์ฌ์ค์ ๊ณง ์๊ฒ ๋์์ต๋๋ค. ์ปจํ ์ด๋ ๋ ์ง์คํธ๋ฆฌ๋ฅผ ๊ตฌ์ฑํ๊ธฐ ์ํด CI ๋ฐ Quay์ฉ Jenkins๊ฐ ์ถ๊ฐ๋์์ผ๋ฉฐ, ์ ์ปจํ ์ด๋์ ๊ตฌ์ฑ์ GKE์ ํธ์ํ๋ Jenkins์ฉ ์คํฌ๋ฆฝํธ๊ฐ ์์ฑ๋์์ต๋๋ค.
์๊ฐ์ด ์ข ์ง๋ฌ์ต๋๋ค. Alice์ Bob์ ์์ ๋ค์ด ์ ํํ ์ ๊ทผ ๋ฐฉ์์ ์ฑ๊ณผ์ ๊ทธ๊ฒ์ด ๋น์ฆ๋์ค์ ๋ฏธ์น๋ ์ํฅ์ ์ค๋งํ์ต๋๋ค. ์ปจํ ์ด๋๋ฅผ ๋์ ํด๋ ํ์ด ๊ธฐ๋ํ๋ ๋งํผ ์์ฐ์ฑ์ด ํฅ์๋์ง๋ ์์์ต๋๋ค. ๋๋๋ก ๋ฐฐํฌ๊ฐ ์ค๋จ๋๊ณ ์ฝ๋ ๋ณ๊ฒฝ์ด ์์ธ์ธ์ง ์ฌ๋ถ๊ฐ ๋ถ๋ถ๋ช ํ์ต๋๋ค. ๋ํ ๊ตฌ์ฑ ๋ณ๊ฒฝ ์ฌํญ์ ์ถ์ ํ๋ ๊ฒ๋ ์ด๋ ค์ด ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค. ์ ํด๋ฌ์คํฐ๋ฅผ ์์ฑํ๊ณ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ทธ ํด๋ฌ์คํฐ๋ก ์ด๋ํด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์๋๋ฐ, ์ด๊ฒ์ด ์์คํ ์ ํผ๋์ ์ ๊ฑฐํ๋ ๊ฐ์ฅ ์ฌ์ด ๋ฐฉ๋ฒ์ด์๊ธฐ ๋๋ฌธ์ ๋๋ค. Alice๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด ๊ฐ๋ฐ๋จ์ ๋ฐ๋ผ ์ํฉ์ด ๋์ฑ ์ ํ๋ ๊ฒ์ ๋๋ ค์ํ์ต๋๋ค(๋ํ ๊ธฐ๊ณ ํ์ต์ ๊ธฐ๋ฐ์ผ๋ก ํ ์๋ก์ด ํ๋ก์ ํธ๊ฐ ์ค๋น ์ค์ด์์ต๋๋ค). Bob์ ๋๋ถ๋ถ์ ์์ ์ ์๋ํํ๋๋ฐ ์ ํ์ดํ๋ผ์ธ์ด ์ฌ์ ํ ๋ถ์์ ํ๊ณ , ํ์ฅ์ด ์ ์ ๋๊ณ , ์ฃผ๊ธฐ์ ์ผ๋ก ์๋ ๊ฐ์ ์ด ํ์ํ์ง ์ดํดํ์ง ๋ชปํ์ จ๋์?
๊ทธ๋ฐ ๋ค์ GitOps์ ๋ํด ๋ฐฐ์ ์ต๋๋ค. ์ด ๊ฒฐ์ ์ ๊ทธ๋ค์ด ์์ ๊ฐ ์๊ฒ ์์ผ๋ก ๋์๊ฐ๋ ๋ฐ ๊ผญ ํ์ํ ๊ฒฐ์ ์ด์์ต๋๋ค.
Alice์ Bob์ ์๋
๋์ Git, DevOps ๋ฐ ์ฝ๋ ์ํฌํ๋ก๋ก์์ ์ธํ๋ผ์ ๋ํด ๋ค์ด์์ต๋๋ค. GitOps์ ๋
ํนํ ์ ์ Kubernetes์ ๋งฅ๋ฝ์์ ์ด๋ฌํ ์์ด๋์ด๋ฅผ ๊ตฌํํ๊ธฐ ์ํ ์ผ๋ จ์ ๋ช
ํํ๊ณ ๊ท๋ฒ์ ์ธ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์ ๊ณตํ๋ค๋ ๊ฒ์
๋๋ค. ์ด ํ
๋ง
Family Insurance๋ GitOps๋ฅผ ๊ตฌํํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค. ์ด์ ํ์ฌ๋ Kubernetes์ ํธํ๋๊ณ ๋ค์์ ๊ฒฐํฉํ ์๋ํ๋ ์ด์ ๋ชจ๋ธ์ ๋ณด์ ํ๊ณ ์์ต๋๋ค. ์๋ ๊ณผ ์์ ์๋ํ๋ฉด ๊ทธ๋ค์:
- ๋๊ตฌ๋ ๋ฏธ์ณ๋ฒ๋ฆฌ์ง ์๊ณ ํ์ ์์ฐ์ฑ์ด ๋ ๋ฐฐ๋ก ์ฆ๊ฐํ๋ค๋ ์ฌ์ค์ ๋ฐ๊ฒฌํ์ต๋๋ค.
- ์คํฌ๋ฆฝํธ ์ ๊ณต์ ์ค์งํ์ต๋๋ค. ๋์ ์ด์ ์๋ก์ด ๊ธฐ๋ฅ์ ์ง์คํ๊ณ ์์ง๋์ด๋ง ๋ฐฉ๋ฒ์ ๊ฐ์ ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ์นด๋๋ฆฌ์ ์ถ์ ๋ฐ ํ ์คํธ ๊ฐ์ ๋ฑ์ด ์์ต๋๋ค.
- ์ฐ๋ฆฌ๋ ๋ฐฐํฌ ํ๋ก์ธ์ค๊ฐ ๊ฑฐ์ ์ค๋จ๋์ง ์๋๋ก ๊ฐ์ ํ์ต๋๋ค.
- ๋ถ๋ถ์ ์ธ ์คํจ ํ ์๋ ๊ฐ์ ์์ด ๋ฐฐํฌ๋ฅผ ๋ณต์ํ ์ ์๋ ๊ธฐํ๋ฅผ ์ป์์ต๋๋ค.
- ๊ตฌ์ ํ ์ค๊ณ ะพ๋ฐฐ์ก ์์คํ ์ ๋ํ ์ ๋ขฐ๋๊ฐ ๋์์ก์ต๋๋ค. Alice์ Bob์ ํ์ ๋ณ๋ ฌ๋ก ์์ ํ๋ ๋ง์ดํฌ๋ก์๋น์ค ํ์ผ๋ก ๋๋ ์ ์๋ค๋ ๊ฒ์ ๋ฐ๊ฒฌํ์ต๋๋ค.
- ๊ฐ ๊ทธ๋ฃน์ ๋ ธ๋ ฅ์ ํตํด ๋งค์ผ ํ๋ก์ ํธ๋ฅผ 30~50๊ฐ ๋ณ๊ฒฝํ๊ณ ์๋ก์ด ๊ธฐ์ ์ ์๋ํ ์ ์์ต๋๋ค.
- ๋ช ์๊ฐ ๋ด์ ๋์ด์ค๊ธฐ ์์ฒญ์ ์ฌ์ฉํ์ฌ ํ๋ก๋์ ์ ๋ฐ์ดํธ๋ฅผ ์ถ์ํ ์ ์๋ ๊ธฐํ๋ฅผ ๊ฐ์ง ์๋ก์ด ๊ฐ๋ฐ์๋ฅผ ํ๋ก์ ํธ์ ์ฝ๊ฒ ์ ์นํ ์ ์์ต๋๋ค.
- SOC2 ํ๋ ์์ํฌ ๋ด์์ ์ฝ๊ฒ ๊ฐ์ฌ๋ฅผ ํต๊ณผํฉ๋๋ค. (์๋น์ค ์ ๊ณต์
์ฒด์ ์์ ํ ๋ฐ์ดํฐ ๊ด๋ฆฌ ์๊ตฌ ์ฌํญ ์ค์๋ฅผ ์ํด, ์์ธํ ๋ด์ฉ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ฌ๊ธฐ์ - ๋๋ต. ๋ฒ์ญ).
๋ฌด์จ ์ผ์ด ์์์ฃ ?
GitOps๋ ๋ ๊ฐ์ง์ ๋๋ค.
- Kubernetes ๋ฐ ํด๋ผ์ฐ๋ ๋ค์ดํฐ๋ธ๋ฅผ ์ํ ์ด์ ๋ชจ๋ธ์
๋๋ค. ์ปจํ
์ด๋ํ๋ ํด๋ฌ์คํฐ์ ์ ํ๋ฆฌ์ผ์ด์
์ ๋ฐฐํฌ, ๊ด๋ฆฌ, ๋ชจ๋ํฐ๋งํ๊ธฐ ์ํ ์ผ๋ จ์ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์ ๊ณตํฉ๋๋ค. ํ์์ ์ฐ์ํ ์ ์
์ฌ๋ผ์ด๋ ํ๋ ๋ถํฐ๋ฃจ์ด์ค ํ์ธ์ด๋ผ : - ๊ฐ๋ฐ์ ์ค์ฌ์ ์ ํ๋ฆฌ์ผ์ด์ ๊ด๋ฆฌ ํ๊ฒฝ์ ๊ตฌ์ถํ๋ ๊ฒฝ๋ก์ ๋๋ค. ์ฐ๋ฆฌ๋ ์ด์๊ณผ ๊ฐ๋ฐ ๋ชจ๋์ Git ์ํฌํ๋ก์ฐ๋ฅผ ์ ์ฉํฉ๋๋ค. ์ด๋ ๋จ์ง Git ํธ์์ ๊ดํ ๊ฒ์ด ์๋๋ผ ์ ์ฒด CI/CD ๋ฐ UI/UX ๋๊ตฌ ์ธํธ๋ฅผ ๊ตฌ์ฑํ๋ ๊ฒ์ ๊ดํ ๊ฒ์ ๋๋ค.
Git์ ๋ํ ๋ช ๋ง๋
๋ฒ์ ์ ์ด ์์คํ
๊ณผ Git ๊ธฐ๋ฐ ์ํฌํ๋ก์ฐ์ ์ต์ํ์ง ์๋ค๋ฉด ์ด์ ๋ํด ํ์ตํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ๋ธ๋์น ๋ฐ ๋์ด์ค๊ธฐ ์์ฒญ ์์
์ ์ฒ์์๋ ํ๋ง๋ฒ์ฒ๋ผ ๋ณด์ผ ์ ์์ง๋ง ๋
ธ๋ ฅํ ๋งํผ์ ์ด์ ์ ์ป์ ์ ์์ต๋๋ค. ์ฌ๊ธฐ
Kubernetes ์๋ ๋ฐฉ์
์ฐ๋ฆฌ ์ด์ผ๊ธฐ์์ Alice์ Bob์ ํ๋์ Kubernetes๋ก ์์ ํ ํ GitOps๋ก ์ ํํ์ต๋๋ค. ์ค์ ๋ก GitOps๋ Kubernetes์ ๋ฐ์ ํ ๊ด๋ จ์ด ์์ต๋๋ค. ์ด๋ Kubernetes ๊ธฐ๋ฐ ์ธํ๋ผ ๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ ์ด์ ๋ชจ๋ธ์ ๋๋ค.
Kubernetes๋ ์ฌ์ฉ์์๊ฒ ๋ฌด์์ ์ ๊ณตํฉ๋๊น?
๋ค์์ ๋ช ๊ฐ์ง ์ฃผ์ ๊ธฐ๋ฅ์ ๋๋ค.
- Kubernetes ๋ชจ๋ธ์์๋ ๋ชจ๋ ๊ฒ์ ์ ์ธ์ ํ์์ผ๋ก ์ค๋ช ํ ์ ์์ต๋๋ค.
- Kubernetes API ์๋ฒ๋ ์ด ์ ์ธ์ ์ ๋ ฅ์ผ๋ก ๋ฐ์๋ค์ธ ๋ค์ ํด๋ฌ์คํฐ๋ฅผ ์ ์ธ์ ์ค๋ช ๋ ์ํ๋ก ๋ง๋ค๊ธฐ ์ํด ์ง์์ ์ผ๋ก ์๋ํฉ๋๋ค.
- ์ ์ธ์ ๋ค์ํ ์ํฌ๋ก๋, ์ฆ "์ ํ๋ฆฌ์ผ์ด์ "์ ์ค๋ช ํ๊ณ ๊ด๋ฆฌํ๋ ๋ฐ ์ถฉ๋ถํฉ๋๋ค.
- ๊ฒฐ๊ณผ์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ ์ด์ ๋ก ์ ํ๋ฆฌ์ผ์ด์
๊ณผ ํด๋ฌ์คํฐ๊ฐ ๋ณ๊ฒฝ๋ฉ๋๋ค.
- ์ปจํ ์ด๋ ์ด๋ฏธ์ง์ ๋ณ๊ฒฝ;
- ์ ์ธ์ ์ฌ์ ๋ณ๊ฒฝ
- ํ๊ฒฝ ์ค๋ฅ(์: ์ปจํ ์ด๋ ์ถฉ๋)
Kubernetes์ ๋ฐ์ด๋ ์ตํฉ ๊ธฐ๋ฅ
๊ด๋ฆฌ์๊ฐ ๊ตฌ์ฑ์ ๋ณ๊ฒฝํ๋ฉด Kubernetes ์ค์ผ์คํธ๋ ์ดํฐ๋ ์ํ๊ฐ ๋ค์๊ณผ ๊ฐ์ ํ ์ด๋ฅผ ํด๋ฌ์คํฐ์ ์ ์ฉํฉ๋๋ค. ์๋ก์ด ๊ตฌ์ฑ์ ๊ทผ์ ํ์ง ์์ ๊ฒ์ ๋๋ค. ์ด ๋ชจ๋ธ์ ๋ชจ๋ Kubernetes ๋ฆฌ์์ค์ ๋ํด ์๋ํ๋ฉฐ CRD(์ฌ์ฉ์ ์ ์ ๋ฆฌ์์ค ์ ์)๋ก ํ์ฅ ๊ฐ๋ฅํฉ๋๋ค. ๋ฐ๋ผ์ Kubernetes ๋ฐฐํฌ์๋ ๋ค์๊ณผ ๊ฐ์ ํ๋ฅญํ ์์ฑ์ด ์์ต๋๋ค.
- ์คํ ๋ฉ์ด์ : Kubernetes ์ ๋ฐ์ดํธ๋ ๋ณ๊ฒฝ ์ฌํญ์ ์ ์์ ์ ์ ํ๊ฒ ์ ์ฉํ๋ ํ๋ก์ธ์ค๋ฅผ ์๋ํํ๋ ๋ฉ์ปค๋์ฆ์ ์ ๊ณตํฉ๋๋ค.
- ์๋ ด: Kubernetes๋ ์ฑ๊ณตํ ๋๊น์ง ๊ณ์ ์ ๋ฐ์ดํธ๋ฅผ ์๋ํฉ๋๋ค.
- ๋ฉฑ๋ฑ์ฑ: ์ตํฉ์ ๋ฐ๋ณต์ ์ผ๋ก ์ ์ฉํ๋ฉด ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ๋์จ๋ค.
- ๊ฒฐ์ ๋ก : ๋ฆฌ์์ค๊ฐ ์ถฉ๋ถํ๋ฉด ์ ๋ฐ์ดํธ๋ ํด๋ฌ์คํฐ์ ์ํ๋ ์ํ๋ ์ํ์๋ง ์์กดํฉ๋๋ค.
GitOps ์๋ ๋ฐฉ์
GitOps์ ์๋ ๋ฐฉ์์ ์ค๋ช ํ๊ธฐ ์ํด Kubernetes์ ๋ํด ์ถฉ๋ถํ ๋ฐฐ์ ์ต๋๋ค.
Family Insurance์ ๋ง์ดํฌ๋ก์๋น์ค ํ์ผ๋ก ๋์๊ฐ ๋ณด๊ฒ ์ต๋๋ค. ๊ทธ๋ค์ ๋ณดํต ๋ฌด์์ ํด์ผ ํฉ๋๊น? ์๋ ๋ชฉ๋ก์ ์ดํด๋ณด์ธ์. (ํน์ ๋ฏ์ค๊ฑฐ๋ ๋ฏ์ค๊ฒ ๋ณด์ด๋ ํญ๋ชฉ์ด ์์ผ๋ฉด ๋นํ์ ์ ์ ๋ฉ์ถ๊ณ ํจ๊ปํด์ฃผ์ธ์.) ์ด๋ Jenkins ๊ธฐ๋ฐ ์ํฌํ๋ก์ ์์ผ ๋ฟ์ ๋๋ค. ๋ค๋ฅธ ๋๊ตฌ๋ก ์์ ํ ๋ ๋ค๋ฅธ ํ๋ก์ธ์ค๋ ๋ง์ด ์์ต๋๋ค.
๊ฐ์ฅ ์ค์ํ ์ ์ ๊ฐ ์ ๋ฐ์ดํธ๊ฐ ๊ตฌ์ฑ ํ์ผ ๋ฐ Git ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ณ๊ฒฝ์ผ๋ก ๋๋๋ ๊ฒ์ ํ์ธํ๋ค๋ ๊ฒ์ ๋๋ค. Git์ ๋ํ ์ด๋ฌํ ๋ณ๊ฒฝ์ผ๋ก ์ธํด "GitOps ์ด์์"๊ฐ ํด๋ฌ์คํฐ๋ฅผ ์ ๋ฐ์ดํธํฉ๋๋ค.
1.์์
๊ณผ์ : "Jenkins ๋น๋ - ๋ง์คํฐ ๋ธ๋์น".
์์
๋ชฉ๋ก:
- Jenkins๋ ํ๊ทธ๋ ์ด๋ฏธ์ง๋ฅผ Quay์ ํธ์ํฉ๋๋ค.
- Jenkins๋ ๊ตฌ์ฑ ๋ฐ Helm ์ฐจํธ๋ฅผ ๋ง์คํฐ ์คํ ๋ฆฌ์ง ๋ฒํท์ ํธ์ํฉ๋๋ค.
- ํด๋ผ์ฐ๋ ๊ธฐ๋ฅ์ ๋ง์คํฐ ์คํ ๋ฆฌ์ง ๋ฒํท์ ๊ตฌ์ฑ๊ณผ ์ฐจํธ๋ฅผ ๋ง์คํฐ Git ์ ์ฅ์๋ก ๋ณต์ฌํฉ๋๋ค.
- GitOps ์ด์์๊ฐ ํด๋ฌ์คํฐ๋ฅผ ์ ๋ฐ์ดํธํฉ๋๋ค.
2. Jenkins ๋น๋ - ๋ฆด๋ฆฌ์ค ๋๋ ํซํฝ์ค ๋ถ๊ธฐ:
- Jenkins๋ ํ๊ทธ๊ฐ ์ง์ ๋์ง ์์ ์ด๋ฏธ์ง๋ฅผ Quay๋ก ํธ์ํฉ๋๋ค.
- Jenkins๋ ๊ตฌ์ฑ ๋ฐ Helm ์ฐจํธ๋ฅผ ์คํ ์ด์ง ์คํ ๋ฆฌ์ง ๋ฒํท์ ํธ์ํฉ๋๋ค.
- ํด๋ผ์ฐ๋ ๊ธฐ๋ฅ์ ์คํ ์ด์ง ์คํ ๋ฆฌ์ง ๋ฒํท์ ๊ตฌ์ฑ ๋ฐ ์ฐจํธ๋ฅผ ์คํ ์ด์ง Git ์ ์ฅ์๋ก ๋ณต์ฌํฉ๋๋ค.
- GitOps ์ด์์๊ฐ ํด๋ฌ์คํฐ๋ฅผ ์ ๋ฐ์ดํธํฉ๋๋ค.
3. Jenkins ๋น๋ - ๋ธ๋์น ๊ฐ๋ฐ ๋๋ ๊ธฐ๋ฅ:
- Jenkins๋ ํ๊ทธ๊ฐ ์ง์ ๋์ง ์์ ์ด๋ฏธ์ง๋ฅผ Quay๋ก ํธ์ํฉ๋๋ค.
- Jenkins๋ ๊ตฌ์ฑ ๋ฐ Helm ์ฐจํธ๋ฅผ ๊ฐ๋ฐ ์คํ ๋ฆฌ์ง ๋ฒํท์ ํธ์ํฉ๋๋ค.
- ํด๋ผ์ฐ๋ ๊ธฐ๋ฅ์ ๊ฐ๋ฐ ์คํ ๋ฆฌ์ง ๋ฒํท์ ๊ตฌ์ฑ ๋ฐ ์ฐจํธ๋ฅผ ๊ฐ๋ฐ Git ์ ์ฅ์๋ก ๋ณต์ฌํฉ๋๋ค.
- GitOps ์ด์์๊ฐ ํด๋ฌ์คํฐ๋ฅผ ์ ๋ฐ์ดํธํฉ๋๋ค.
4. ์ ํด๋ผ์ด์ธํธ ์ถ๊ฐ:
- ๊ด๋ฆฌ์(LCM/ops)๋ Gradle์ ํธ์ถํ์ฌ ์ด๊ธฐ์ ๋คํธ์ํฌ ๋ก๋ ๋ฐธ๋ฐ์(NLB)๋ฅผ ๋ฐฐํฌํ๊ณ ๊ตฌ์ฑํฉ๋๋ค.
- LCM/ops๋ ์ ๋ฐ์ดํธ ๋ฐฐํฌ๋ฅผ ์ค๋นํ๊ธฐ ์ํด ์ ๊ตฌ์ฑ์ ์ปค๋ฐํฉ๋๋ค.
- GitOps ์ด์์๊ฐ ํด๋ฌ์คํฐ๋ฅผ ์ ๋ฐ์ดํธํฉ๋๋ค.
GitOps์ ๋ํ ๊ฐ๋ตํ ์ค๋ช
- ๊ฐ ํ๊ฒฝ์ ๋ํ ์ ์ธ์ ์ฌ์์ ์ฌ์ฉํ์ฌ ์ ์ฒด ์์คํ
์ ์ํ๋ ์ํ๋ฅผ ์ค๋ช
ํฉ๋๋ค(์ด ์ด์ผ๊ธฐ์์๋ Bob์ ํ์ด Git์์ ์ ์ฒด ์์คํ
๊ตฌ์ฑ์ ์ ์ํฉ๋๋ค).
- Git ์ ์ฅ์๋ ์ ์ฒด ์์คํ ์ ์ํ๋ ์ํ์ ๊ดํ ๋จ์ผ ์ ๋ณด ์์ค์ ๋๋ค.
- ์ํ๋ ์ํ์ ๋ํ ๋ชจ๋ ๋ณ๊ฒฝ์ Git์ ์ปค๋ฐ์ ํตํด ์ด๋ฃจ์ด์ง๋๋ค.
- ์ํ๋ ๋ชจ๋ ํด๋ฌ์คํฐ ๋งค๊ฐ๋ณ์๋ ํด๋ฌ์คํฐ ์์ฒด์์๋ ๊ด์ฐฐํ ์ ์์ต๋๋ค. ์ด๋ฌํ ๋ฐฉ์์ผ๋ก ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ๋ค์ด ์ผ์นํ๋์ง(์๋ ด, ๋ชจ์ด๋ค) ๋๋ ๋ค๋ฆ ๋๋ค (๋ฐ์ฐ, ๋ถ๊ธฐํ๋ค) ์ํ๋ ์ํ์ ๊ด์ฐฐ๋ ์ํ.
- ์ํ๋ ์ํ์ ๊ด์ฐฐ๋ ์ํ๊ฐ ๋ค๋ฅธ ๊ฒฝ์ฐ:
- ์กฐ๋ง๊ฐ ๋์ ์ํ์ ๊ด์ฐฐ๋ ์ํ๋ฅผ ์๋์ผ๋ก ๋๊ธฐํํ๋ ์๋ ด ๋ฉ์ปค๋์ฆ์ด ์์ต๋๋ค. ํด๋ฌ์คํฐ ๋ด์์ Kubernetes๋ ์ด ์์ ์ ์ํํฉ๋๋ค.
- ํ๋ก์ธ์ค๋ "๋ณ๊ฒฝ ์ปค๋ฐ" ๊ฒฝ๊ณ ์ ํจ๊ป ์ฆ์ ์์๋ฉ๋๋ค.
- ๊ตฌ์ฑ ๊ฐ๋ฅํ ์ผ์ ๊ธฐ๊ฐ์ด ์ง๋ ํ ์ํ๊ฐ ๋ค๋ฅธ ๊ฒฝ์ฐ "diff" ๊ฒฝ๊ณ ๊ฐ ์ ์ก๋ ์ ์์ต๋๋ค.
- ์ด๋ฐ ๋ฐฉ์์ผ๋ก Git์ ๋ชจ๋ ์ปค๋ฐ์ ํด๋ฌ์คํฐ์ ๋ํด ๊ฒ์ฆ ๊ฐ๋ฅํ๊ณ ๋ฉฑ๋ฑ์ ์ธ ์
๋ฐ์ดํธ๋ฅผ ๋ฐ์์ํต๋๋ค.
- ๋กค๋ฐฑ์ ์ด์ ์ ์ํ๋ ์ํ๋ก ์๋ ดํ๋ ๊ฒ์ ๋๋ค.
- ์๋ ด์ ์ต์ข
์ ์
๋๋ค. ๊ทธ ๋ฐ์์ ๋ค์๊ณผ ๊ฐ์ด ํ์๋ฉ๋๋ค.
- ํน์ ๊ธฐ๊ฐ ๋์ ์ฐจ์ด ์๋ฆผ์ด ํ์๋์ง ์์ต๋๋ค.
- "์๋ ดํ" ๊ฒฝ๊ณ (์: ์นํ , Git ์ฐ๊ธฐ ์ ์ฅ ์ด๋ฒคํธ).
๋ค์ด๋ฒ์ ์ค๋ ๋ฌด์์ธ๊ฐ?
๋ค์ ๋ฐ๋ณตํด ๋ณด๊ฒ ์ต๋๋ค. ์ํ๋ ๋ชจ๋ ํด๋ฌ์คํฐ ์์ฑ์ ํด๋ฌ์คํฐ ์์ฒด์์ ๊ด์ฐฐ ๊ฐ๋ฅํด์ผ ํฉ๋๋ค..
๋ฐ์ฐ์ ๋ช ๊ฐ์ง ์:
- Git์ ๋ธ๋์น ๋ณํฉ์ผ๋ก ์ธํด ๊ตฌ์ฑ ํ์ผ์ด ๋ณ๊ฒฝ๋์์ต๋๋ค.
- GUI ํด๋ผ์ด์ธํธ์ Git ์ปค๋ฐ์ผ๋ก ์ธํด ๊ตฌ์ฑ ํ์ผ์ด ๋ณ๊ฒฝ๋์์ต๋๋ค.
- Git์ PR๋ก ์ธํด ์ํ๋ ์ํ๊ฐ ์ฌ๋ฌ ๋ฒ ๋ณ๊ฒฝ๋ ํ ์ปจํ ์ด๋ ์ด๋ฏธ์ง๊ฐ ๋น๋๋๊ณ ๊ตฌ์ฑ์ด ๋ณ๊ฒฝ๋์์ต๋๋ค.
- ์ค๋ฅ๋ก ์ธํ ํด๋ฌ์คํฐ ์ํ ๋ณ๊ฒฝ, "์๋ชป๋ ๋์"์ ์ด๋ํ๋ ๋ฆฌ์์ค ์ถฉ๋ ๋๋ ๋จ์ํ ์๋ ์ํ์์ ๋ฌด์์๋ก ๋ฒ์ด๋ ๊ฒฝ์ฐ์ ๋๋ค.
์๋ ด ๋ฉ์ปค๋์ฆ์ ๋ฌด์์ ๋๊น?
๋ช ๊ฐ์ง ์ :
- ์ปจํ ์ด๋์ ํด๋ฌ์คํฐ์ ๊ฒฝ์ฐ Kubernetes์์ ์๋ ด ๋ฉ์ปค๋์ฆ์ ์ ๊ณตํฉ๋๋ค.
- ๋์ผํ ๋ฉ์ปค๋์ฆ์ ์ฌ์ฉํ์ฌ Kubernetes ๊ธฐ๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ๋ฐ ๋์์ธ(์: Istio ๋ฐ Kubeflow)์ ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
- Kubernetes, ์ด๋ฏธ์ง ์ ์ฅ์ ๋ฐ Git ๊ฐ์ ์ด์ ์ํธ ์์ฉ์ ๊ด๋ฆฌํ๋ ๋ฉ์ปค๋์ฆ์ ๋ค์์ ์ ๊ณตํฉ๋๋ค.
GitOps ์ด์์ Weave Flux , ์ด๋ ์ผ๋ถ์ ๋๋ค์๋ธ ํด๋ผ์ฐ๋ . - ๊ธฐ๋ณธ ๋จธ์ ์ ๊ฒฝ์ฐ ์๋ ด ๋ฉ์ปค๋์ฆ์ ์ ์ธ์ ์ด๊ณ ์์จ์ ์ด์ด์ผ ํฉ๋๋ค. ์ฐ๋ฆฌ ์์ ์ ๊ฒฝํ์ ํตํด ๋ค์๊ณผ ๊ฐ์ด ๋งํ ์ ์์ต๋๋ค.
ํ ๋ผ ํผ ์ด ์ ์์ ๊ฐ์ฅ ๊ฐ๊น์ง๋ง ์ฌ์ ํ ์ธ๊ฐ์ ํต์ ๊ฐ ํ์ํฉ๋๋ค. ์ด๋ฌํ ์๋ฏธ์์ GitOps๋ ์ฝ๋ํ ์ธํ๋ผ์ ์ ํต์ ํ์ฅํฉ๋๋ค.
GitOps๋ Git๊ณผ Kubernetes์ ํ์ํ ์ตํฉ ์์ง์ ๊ฒฐํฉํ์ฌ ํ์ฉ ๋ชจ๋ธ์ ์ ๊ณตํฉ๋๋ค.
GitOps๋ฅผ ์ฌ์ฉํ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ๋งํ ์ ์์ต๋๋ค. ์ค๋ช ํ๊ณ ๊ด์ฐฐํ ์ ์๋ ์์คํ ๋ง ์๋ํํ๊ณ ์ ์ดํ ์ ์์ต๋๋ค..
GitOps๋ ์ ์ฒด ํด๋ผ์ฐ๋ ๋ค์ดํฐ๋ธ ์คํ(์: Terraform ๋ฑ)์ ๋์์ผ๋ก ํฉ๋๋ค.
GitOps๋ ๋จ์ํ Kubernetes๊ฐ ์๋๋๋ค. ์ฐ๋ฆฌ๋ ์ ์ฒด ์์คํ ์ด ์ ์ธ์ ์ผ๋ก ๊ตฌ๋๋๊ณ ์๋ ด์ ์ฌ์ฉํ๊ธฐ๋ฅผ ์ํฉ๋๋ค. ์ ์ฒด ์์คํ ์ด๋ Kubernetes์ ํจ๊ป ์๋ํ๋ ํ๊ฒฝ ๋ชจ์์ ์๋ฏธํฉ๋๋ค(์: "๊ฐ๋ฐ ํด๋ฌ์คํฐ 1", "ํ๋ก๋์ " ๋ฑ). ๊ฐ ํ๊ฒฝ์๋ ์์คํ , ํด๋ฌ์คํฐ, ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฌผ๋ก ๋ฐ์ดํฐ, ๋ชจ๋ํฐ๋ง์ ์ ๊ณตํ๋ ์ธ๋ถ ์๋น์ค์ฉ ์ธํฐํ์ด์ค๊ฐ ํฌํจ๋ฉ๋๋ค. ๋ฑ๋ฑ
์ด ๊ฒฝ์ฐ ๋ถํธ์คํธ๋ํ ๋ฌธ์ ์ Terraform์ด ์ผ๋ง๋ ์ค์ํ์ง ํ์ธํ์ธ์. Kubernetes๋ ์ด๋๊ฐ์ ๋ฐฐํฌ๋์ด์ผ ํ๋ฉฐ Terraform์ ์ฌ์ฉํ๋ค๋ ๊ฒ์ ๋์ผํ GitOps ์ํฌํ๋ก๋ฅผ ์ ์ฉํ์ฌ Kubernetes์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ท๋ฐ์นจํ๋ ์ ์ด ๊ณ์ธต์ ์์ฑํ ์ ์์์ ์๋ฏธํฉ๋๋ค. ์ด๋ ์ ์ฉํ ๋ชจ๋ฒ ์ฌ๋ก์ ๋๋ค.
Kubernetes ์์ ์๋ ๋ ์ด์ด์ GitOps ๊ฐ๋ ์ ์ ์ฉํ๋ ๋ฐ ์ค์ ์ ๋๊ณ ์์ต๋๋ค. ํ์ฌ Istio, Helm, Ksonnet, OpenFaaS ๋ฐ Kubeflow๋ฅผ ์ํ GitOps ์ ํ ์๋ฃจ์ ์ด ์์ผ๋ฉฐ, ์๋ฅผ ๋ค์ด ํด๋ผ์ฐ๋ ๋ค์ดํฐ๋ธ์ฉ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ์ํ ๊ณ์ธต์ ์์ฑํ๋ Pulumi์ฉ ์๋ฃจ์ ๋ ์์ต๋๋ค.
Kubernetes CI/CD: GitOps์ ๋ค๋ฅธ ์ ๊ทผ ๋ฐฉ์ ๋น๊ต
์ธ๊ธํ๋ฏ์ด GitOps๋ ๋ ๊ฐ์ง์ ๋๋ค.
- ์์์ ์ค๋ช ํ Kubernetes ๋ฐ ํด๋ผ์ฐ๋ ๋ค์ดํฐ๋ธ์ ์ด์ ๋ชจ๋ธ์ ๋๋ค.
- ๊ฐ๋ฐ์ ์ค์ฌ ์ ํ๋ฆฌ์ผ์ด์ ๊ด๋ฆฌ ํ๊ฒฝ์ผ๋ก ๊ฐ๋ ๊ธธ.
๋ง์ ๊ฒฝ์ฐ GitOps๋ ์ฃผ๋ก Git ํธ์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ์ํฌํ๋ก์ ๋๋ค. ์ฐ๋ฆฌ๋ ๊ทธ๋ฅผ ์ข์ํด์. ํ์ง๋ง ๊ทธ๊ฒ ๋ค๊ฐ ์๋๋๋ค. ์ด์ CI/CD ํ์ดํ๋ผ์ธ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
GitOps๋ฅผ ์ฌ์ฉํ๋ฉด Kubernetes์ ๋ํ CD(์ง์์ ๋ฐฐํฌ)๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
GitOps๋ ๋ณ๋์ "๋ฐฐํฌ ๊ด๋ฆฌ ์์คํ "์ด ํ์ ์๋ ์ง์์ ์ธ ๋ฐฐํฌ ๋ฉ์ปค๋์ฆ์ ์ ๊ณตํฉ๋๋ค. Kubernetes๋ ์ฌ์ฉ์๋ฅผ ์ํด ๋ชจ๋ ์์ ์ ์ํํฉ๋๋ค.
- ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ๋ฐ์ดํธํ๋ ค๋ฉด Git์์ ์ ๋ฐ์ดํธํด์ผ ํฉ๋๋ค. ์ด๋ ์ํ๋ ์ํ์ ๋ํ ํธ๋์ญ์ ์ ๋ฐ์ดํธ์ ๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ ๋ฐ์ดํธ๋ ์ค๋ช ์ ๊ธฐ๋ฐ์ผ๋ก Kubernetes ์์ฒด์ ์ํด ํด๋ฌ์คํฐ ๋ด์์ "๋ฐฐํฌ"๊ฐ ์ํ๋ฉ๋๋ค.
- Kubernetes ์๋ ๋ฐฉ์์ ํน์ฑ์ผ๋ก ์ธํด ์ด๋ฌํ ์ ๋ฐ์ดํธ๋ ์๋ ด๋ฉ๋๋ค. ์ด๋ ๋ชจ๋ ์ ๋ฐ์ดํธ๊ฐ ์์์ฑ์ธ ์ง์์ ์ธ ๋ฐฐํฌ๋ฅผ ์ํ ๋ฉ์ปค๋์ฆ์ ์ ๊ณตํฉ๋๋ค.
- ์ฐธ๊ณ :
์๋ธ ํด๋ผ์ฐ๋ Git๊ณผ Kubernetes๋ฅผ ํตํฉํ๊ณ ํด๋ฌ์คํฐ์ ์ํ๋ ์ํ์ ํ์ฌ ์ํ๋ฅผ ์กฐ์ ํ์ฌ CD๋ฅผ ์ํํ ์ ์๋ GitOps ์ฐ์ฐ์๋ฅผ ์ ๊ณตํฉ๋๋ค.
kubectl ๋ฐ ์คํฌ๋ฆฝํธ ์์ด
ํด๋ฌ์คํฐ๋ฅผ ์ ๋ฐ์ดํธํ๊ธฐ ์ํด Kubectl์ ์ฌ์ฉํ๋ ๊ฒ์ ํผํด์ผ ํ๋ฉฐ, ํนํ kubectl ๋ช ๋ น์ ๊ทธ๋ฃนํํ๊ธฐ ์ํด ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ํผํด์ผ ํฉ๋๋ค. ๋์ GitOps ํ์ดํ๋ผ์ธ์ ์ฌ์ฉํ๋ฉด ์ฌ์ฉ์๊ฐ Git์ ํตํด Kubernetes ํด๋ฌ์คํฐ๋ฅผ ์ ๋ฐ์ดํธํ ์ ์์ต๋๋ค.
ํํ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์ค๋ฅธ์ชฝ. ์ผ๋ จ์ ์ ๋ฐ์ดํธ๋ฅผ ์ ์ฉํ๊ณ ์๋ ดํ๊ณ ์ต์ข ์ ์ผ๋ก ๊ฒ์ฆํ ์ ์์ด ์์ ๋ฐฐํฌ ๋ชฉํ์ ๋ ๊ฐ๊น์์ง ์ ์์ต๋๋ค. ๋์กฐ์ ์ผ๋ก, ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ๋ฉด ์๋ ด์ด ๋ณด์ฅ๋์ง ์์ต๋๋ค(์์ธํ ๋ด์ฉ์ ์๋ ์ฐธ์กฐ).
- ะะตะทะพะฟะฐัะฝะพััั.
์ธ์ฉ Kelsey Hightower: "Kubernetes ํด๋ฌ์คํฐ์ ๋ํ ์ก์ธ์ค๋ฅผ ์๋ํ ๋๊ตฌ์ ๋๋ฒ๊น ๋๋ ์ ์ง ๊ด๋ฆฌ๋ฅผ ๋ด๋นํ๋ ๊ด๋ฆฌ์๋ก ์ ํํ์ธ์." ๋ํ๋ณด์ญ์์ค๋ด ์ถํ๋ฌผ ์์ ๋ฐ ๊ธฐ์ ์ฌ์ ์ค์์ ๊ดํ ๊ฒ๋ฟ๋ง ์๋๋ผHomebrew ํดํน์ ๊ดํ ๊ธฐ์ฌ ๋ถ์ฃผ์ํ๊ฒ ์์ฑ๋ Jenkins ์คํฌ๋ฆฝํธ์์ ์๊ฒฉ ์ฆ๋ช ์ ํ์ณ์. - ์ฌ์ฉ์ ๊ฒฝํ. Kubectl์ ์๋นํ ๋ณต์กํ Kubernetes ๊ฐ์ฒด ๋ชจ๋ธ์ ๋ฉ์ปค๋์ฆ์ ๊ณต๊ฐํฉ๋๋ค. ์ด์์ ์ผ๋ก๋ ์ฌ์ฉ์๊ฐ ๋ ๋์ ์ถ์ํ ์์ค์์ ์์คํ
๊ณผ ์ํธ ์์ฉํด์ผ ํฉ๋๋ค. ์ฌ๊ธฐ์ ๋ค์ Kelsey๋ฅผ ์ธ๊ธํ๊ณ ์์ฒญ์ ๊ถ์ฅํฉ๋๋ค.
๊ทธ๋ฐ ์ด๋ ฅ์ .
CI์ CD์ ์ฐจ์ด์
GitOps๋ ๊ธฐ์กด CI/CD ๋ชจ๋ธ์ ๊ฐ์ ํฉ๋๋ค.
์ต์ CI ์๋ฒ๋ ์ค์ผ์คํธ๋ ์ด์ ๋๊ตฌ์ ๋๋ค. ํนํ CI ํ์ดํ๋ผ์ธ์ ์กฐ์ ํ๊ธฐ ์ํ ๋๊ตฌ์ ๋๋ค. ์ฌ๊ธฐ์๋ ๋น๋, ํ ์คํธ, ํธ๋ ํฌ๋ก ๋ณํฉ ๋ฑ์ด ํฌํจ๋ฉ๋๋ค. CI ์๋ฒ๋ ๋ณต์กํ ๋ค๋จ๊ณ ํ์ดํ๋ผ์ธ ๊ด๋ฆฌ๋ฅผ ์๋ํํฉ๋๋ค. ์ผ๋ฐ์ ์ธ ์ ํน์ Kubernetes ์ ๋ฐ์ดํธ ์ธํธ๋ฅผ ์คํฌ๋ฆฝํ ํ๊ณ ์ด๋ฅผ ํ์ดํ๋ผ์ธ์ ์ผ๋ถ๋ก ์คํํ์ฌ ๋ณ๊ฒฝ ์ฌํญ์ ํด๋ฌ์คํฐ์ ํธ์ํ๋ ๊ฒ์ ๋๋ค. ์ค์ ๋ก ๋ง์ ์ ๋ฌธ๊ฐ๋ค์ด ์ด๋ ๊ฒ ํ๊ณ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ ์ต์ ์ด ์๋๋ฉฐ ๊ทธ ์ด์ ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
CI๋ฅผ ์ฌ์ฉํ์ฌ ์
๋ฐ์ดํธ๋ฅผ ํธ๋ ํฌ์ ํธ์ํด์ผ ํ๋ฉฐ, Kubernetes ํด๋ฌ์คํฐ๋ ํด๋น ์
๋ฐ์ดํธ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์์ฒด์ ์ผ๋ก ๋ณ๊ฒฝํ์ฌ CD๋ฅผ ๋ด๋ถ์ ์ผ๋ก ๊ด๋ฆฌํด์ผ ํฉ๋๋ค. ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ ๋ถ๋ฅธ๋ค
CI ์๋ฒ๊ฐ Kubernetes์ ์ง์ ์ ๋ฐ์ดํธ๋ฅผ ํตํด CD๋ฅผ ์ํํ๋ฉด ์๋๋ ์ด์
CI ์์
์ธํธ๋ก Kubernetes์ ๋ํ ์ง์ ์
๋ฐ์ดํธ๋ฅผ ์กฐ์ ํ๊ธฐ ์ํด CI ์๋ฒ๋ฅผ ์ฌ์ฉํ์ง ๋ง์ญ์์ค. ์ด๊ฒ์ด ์ฐ๋ฆฌ๊ฐ ๋งํ๋ ์ํฐํจํด์ด๋ค
์จ๋ฆฌ์ค์ ๋ฐฅ์ ์ด์ผ๊ธฐ๋ก ๋์๊ฐ ๋ณด๊ฒ ์ต๋๋ค.
๊ทธ๋ค์ ์ด๋ค ๋ฌธ์ ์ ์ง๋ฉดํ์ต๋๊น? Bob์ CI ์๋ฒ๋ ๋ณ๊ฒฝ ์ฌํญ์ ํด๋ฌ์คํฐ์ ์ ์ฉํ์ง๋ง ํ๋ก์ธ์ค ์ค์ ์ถฉ๋์ด ๋ฐ์ํ๋ ๊ฒฝ์ฐ Bob์ ํด๋ฌ์คํฐ๊ฐ ์ด๋ค ์ํ์ธ์ง(๋๋ ์์ด์ผ ํ๋์ง) ๋๋ ์ด๋ฅผ ์์ ํ๋ ๋ฐฉ๋ฒ์ ์ ์ ์์ต๋๋ค. ์ฑ๊ณตํ ๊ฒฝ์ฐ์๋ ๋ง์ฐฌ๊ฐ์ง์ด๋ค.
Bob์ ํ์ด ์ ์ด๋ฏธ์ง๋ฅผ ๊ตฌ์ถํ ๋ค์ ๋ฐฐํฌ๋ฅผ ํจ์นํ์ฌ ์ด๋ฏธ์ง๋ฅผ ๋ฐฐํฌํ๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค(๋ชจ๋ CI ํ์ดํ๋ผ์ธ์์).
์ด๋ฏธ์ง๊ฐ ์ ์์ ์ผ๋ก ๋น๋๋์์ง๋ง ํ์ดํ๋ผ์ธ์ด ์คํจํ๋ ๊ฒฝ์ฐ ํ์ ๋ค์ ์ฌํญ์ ํ์ ํด์ผ ํฉ๋๋ค.
- ์ ๋ฐ์ดํธ๊ฐ ์ถ์๋์๋์?
- ์๋ก์ด ๋น๋๋ฅผ ์ถ์ํ๋์? ์ด๋ก ์ธํด ๋์ผํ ๋ถ๋ณ ์ด๋ฏธ์ง์ ๋ ๋น๋๊ฐ ๋ฐ์ํ ๊ฐ๋ฅ์ฑ๊ณผ ํจ๊ป ๋ถํ์ํ ๋ถ์์ฉ์ด ๋ฐ์ํฉ๋๊น?
- ๋น๋๋ฅผ ์คํํ๊ธฐ ์ ์ ๋ค์ ์ ๋ฐ์ดํธ๋ฅผ ๊ธฐ๋ค๋ ค์ผ ํฉ๋๊น?
- ์ ํํ ๋ฌด์์ด ์๋ชป๋์๋์? ์ด๋ค ๋จ๊ณ๋ฅผ ๋ฐ๋ณตํด์ผ ํฉ๋๊น(๊ทธ๋ฆฌ๊ณ ์ด๋ค ๋จ๊ณ๋ฅผ ๋ฐ๋ณตํด๋ ์์ ํฉ๋๊น)?
Git ๊ธฐ๋ฐ ์ํฌํ๋ก๋ฅผ ์ค์ ํ๋ค๊ณ ํด์ Bob์ ํ์ด ์ด๋ฌํ ๋ฌธ์ ์ ์ง๋ฉดํ์ง ์๋๋ค๋ ๋ณด์ฅ์ ์์ต๋๋ค. ์ปค๋ฐ ํธ์, ํ๊ทธ ๋๋ ๊ธฐํ ๋งค๊ฐ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ์ ํ ์ค์๋ฅผ ํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ ํ โโ๋ช ์์ ์ธ ์ ๋ถ ์๋๋ฉด ์ ๋ฌด ์ ๊ทผ ๋ฐฉ์์ ํจ์ฌ ๋ ๊ฐ๊น์ต๋๋ค.
์์ฝํ๋ฉด CI ์๋ฒ๊ฐ CD๋ฅผ ์ฒ๋ฆฌํ๋ฉด ์๋๋ ์ด์ ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์ ๋ฐ์ดํธ ์คํฌ๋ฆฝํธ๊ฐ ํญ์ ๊ฒฐ์ ์ ์ด์ง๋ ์์ต๋๋ค. ์ค์ํ๊ธฐ ์ฝ์ต๋๋ค.
- CI ์๋ฒ๋ ์ ์ธ์ ํด๋ฌ์คํฐ ๋ชจ๋ธ๋ก ์๋ ด๋์ง ์์ต๋๋ค.
- ๋ฉฑ๋ฑ์ฑ์ ๋ณด์ฅํ๊ธฐ๋ ์ด๋ ต์ต๋๋ค. ์ฌ์ฉ์๋ ์์คํ ์ ๊น์ ์๋ฏธ๋ฅผ ์ดํดํด์ผ ํฉ๋๋ค.
- ๋ถ๋ถ์ ์ธ ์คํจ๋ก๋ถํฐ ๋ณต๊ตฌํ๋ ๊ฒ์ด ๋ ์ด๋ ต์ต๋๋ค.
Helm์ ๋ํ ์ฐธ๊ณ ์ฌํญ: Helm์ ์ฌ์ฉํ๋ ค๋ฉด ๋ค์๊ณผ ๊ฐ์ GitOps ์ฐ์ฐ์์ ๊ฒฐํฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
Kubernetes์ฉ ์ง์์ ์ ๋ฌ์ ๊ตฌํํ๋ ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ธ GitOps
Alice์ Bob์ ํ์ GitOps๋ฅผ ๊ตฌํํ๊ณ ์ํํธ์จ์ด ์ ํ์ผ๋ก ์์ ํ๊ณ ๋์ ์ฑ๋ฅ๊ณผ ์์ ์ฑ์ ์ ์งํ๋ ๊ฒ์ด ํจ์ฌ ์ฌ์์ก๋ค๋ ์ฌ์ค์ ๋ฐ๊ฒฌํ์ต๋๋ค. ๊ทธ๋ค์ ์๋ก์ด ์ ๊ทผ ๋ฐฉ์์ด ์ด๋ค ๊ฒ์ธ์ง ๋ณด์ฌ์ฃผ๋ ๊ทธ๋ฆผ์ผ๋ก ์ด ๊ธฐ์ฌ๋ฅผ ๋ง๋ฌด๋ฆฌํ๊ฒ ์ต๋๋ค. ์ฐ๋ฆฌ๋ ์ฃผ๋ก ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ์๋น์ค์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ์์ง๋ง GitOps๋ ์ ์ฒด ํ๋ซํผ์ ๊ด๋ฆฌํ๋ ๋ฐ ์ฌ์ฉ๋ ์ ์๋ค๋ ์ ์ ๋ช ์ฌํ์ธ์.
Kubernetes์ ์ด์ ๋ชจ๋ธ
๋ค์ ๋ค์ด์ด๊ทธ๋จ์๋ณด์ญ์์ค. ์ด๋ Git๊ณผ ์ปจํ ์ด๋ ์ด๋ฏธ์ง ์ ์ฅ์๋ฅผ ๋ ๊ฐ์ง ์กฐ์ ๋ ์๋ช ์ฃผ๊ธฐ์ ๋ํ ๊ณต์ ๋ฆฌ์์ค๋ก ์ ๊ณตํฉ๋๋ค.
- Git์์ ํ์ผ์ ์ฝ๊ณ ์ฐ๊ณ ์ปจํ ์ด๋ ์ด๋ฏธ์ง ์ ์ฅ์๋ฅผ ์ ๋ฐ์ดํธํ ์ ์๋ ์ง์์ ์ธ ํตํฉ ํ์ดํ๋ผ์ธ์ ๋๋ค.
- ๋ฐฐํฌ์ ๊ด๋ฆฌ ๋ฐ ๊ด์ฐฐ ๊ธฐ๋ฅ์ ๊ฒฐํฉํ ๋ฐํ์ GitOps ํ์ดํ๋ผ์ธ์ ๋๋ค. Git์์ ํ์ผ์ ์ฝ๊ณ ์ฐ๊ณ ์ปจํ ์ด๋ ์ด๋ฏธ์ง๋ฅผ ๋ค์ด๋ก๋ํ ์ ์์ต๋๋ค.
์ฃผ์ ๊ฒฐ๊ณผ๋ ๋ฌด์์ ๋๊น?
- ์ฐ๋ ค์ ๋ถ๋ฆฌ: ๋ ํ์ดํ๋ผ์ธ ๋ชจ๋ Git ๋๋ ์ด๋ฏธ์ง ์ ์ฅ์๋ฅผ ์
๋ฐ์ดํธํด์ผ๋ง ํต์ ํ ์ ์์ต๋๋ค. ์ฆ, CI์ ๋ฐํ์ ํ๊ฒฝ ์ฌ์ด์ ๋ฐฉํ๋ฒฝ์ด ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ์ด๋ฅผ "๋ถ๋ณ์ฑ ๋ฐฉํ๋ฒฝ"์ด๋ผ๊ณ ๋ถ๋ฆ
๋๋ค. (๋ถ๋ณ์ฑ ๋ฐฉํ๋ฒฝ), ๋ชจ๋ ์ ์ฅ์ ์
๋ฐ์ดํธ๋ ์ ๋ฒ์ ์ ์์ฑํ๊ธฐ ๋๋ฌธ์
๋๋ค. ์ด ์ฃผ์ ์ ๋ํ ์์ธํ ๋ด์ฉ์ ์ฌ๋ผ์ด๋ 72-87์ ์ฐธ์กฐํ์ญ์์ค.
์ด ํ๋ ์ ํ ์ด์ . - ๋ชจ๋ CI ๋ฐ Git ์๋ฒ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.: GitOps๋ ๋ชจ๋ ๊ตฌ์ฑ์์์ ์๋ํฉ๋๋ค. ์ ํธํ๋ CI ๋ฐ Git ์๋ฒ, ์ด๋ฏธ์ง ์ ์ฅ์, ํ ์คํธ ์ ํ๊ตฐ์ ๊ณ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์์ค์ ๋์ ์๋ ๊ฑฐ์ ๋ชจ๋ ๋ค๋ฅธ Continuous Delivery ๋๊ตฌ์๋ ์์ฒด CI/Git ์๋ฒ ๋๋ ์ด๋ฏธ์ง ์ ์ฅ์๊ฐ ํ์ํฉ๋๋ค. ์ด๋ ํด๋ผ์ฐ๋ ๋ค์ดํฐ๋ธ ๊ฐ๋ฐ์ ์ ํ ์์๊ฐ ๋ ์ ์์ต๋๋ค. GitOps๋ฅผ ์ฌ์ฉํ๋ฉด ์น์ํ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ํตํฉ ๋๊ตฌ๋ก์์ ์ด๋ฒคํธ: Git์ ๋ฐ์ดํฐ๊ฐ ์ ๋ฐ์ดํธ๋๋ ์ฆ์ Weave Flux(๋๋ Weave Cloud ์ด์์)๊ฐ ๋ฐํ์์ ์ด๋ฅผ ์๋ฆฝ๋๋ค. Kubernetes๊ฐ ๋ณ๊ฒฝ ์ธํธ๋ฅผ ์๋ฝํ ๋๋ง๋ค Git์ด ์ ๋ฐ์ดํธ๋ฉ๋๋ค. ์ด๋ ์๋์ ๊ฐ์ด GitOps์ ์ํฌํ๋ก๋ฅผ ๊ตฌ์ฑํ๊ธฐ ์ํ ๊ฐ๋จํ ํตํฉ ๋ชจ๋ธ์ ์ ๊ณตํฉ๋๋ค.
๊ฒฐ๋ก
GitOps๋ ์ต์ CI/CD ๋๊ตฌ์ ํ์ํ ๊ฐ๋ ฅํ ์ ๋ฐ์ดํธ ๋ณด์ฅ์ ์ ๊ณตํฉ๋๋ค.
- ์คํ ๋ฉ์ด์ ;
- ์๋ ด;
- ๋ฉฑ๋ฑ์ฑ;
- ๊ฒฐ์ ๋ก .
์ด๋ ํด๋ผ์ฐ๋ ๋ค์ดํฐ๋ธ ๊ฐ๋ฐ์๋ฅผ ์ํ ์ด์ ๋ชจ๋ธ์ ์ ๊ณตํ๊ธฐ ๋๋ฌธ์ ์ค์ํฉ๋๋ค.
- ์์คํ ๊ด๋ฆฌ ๋ฐ ๋ชจ๋ํฐ๋ง์ ์ํ ๊ธฐ์กด ๋๊ตฌ๋ Runbook ๋ด์์ ์ด์๋๋ ์ด์ ํ๊ณผ ์ฐ๊ฒฐ๋ฉ๋๋ค. (์ผ๋ จ์ ์ ์ฐจ ๋ฐ ์์ ์ธํธ - ๋๋ต์ ์ธ ๋ฒ์ญ), ํน์ ๋ฐฐํฌ์ ์ฐ๊ฒฐ๋ฉ๋๋ค.
- ํด๋ผ์ฐ๋ ๋ค์ดํฐ๋ธ ๊ด๋ฆฌ์์ ๊ด์ฐฐ ๊ฐ๋ฅ์ฑ ๋๊ตฌ๋ ๊ฐ๋ฐ ํ์ด ์ ์ํ๊ฒ ๋์ํ ์ ์๋๋ก ๋ฐฐํฌ ๊ฒฐ๊ณผ๋ฅผ ์ธก์ ํ๋ ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ ๋๋ค.
์์ฒด ํ๊ณผ ๋ฐฐํฌ ๊ณํ์ ๊ฐ์ถ ๋ค์ํ ํด๋ผ์ฐ๋์ ๋ค์ํ ์๋น์ค์ ๋ถ์ฐ๋ ๋ง์ ํด๋ฌ์คํฐ๋ฅผ ์์ํด ๋ณด์ธ์. GitOps๋ ์ด๋ฌํ ๋ชจ๋ ํ๋ถํจ์ ๊ด๋ฆฌํ๊ธฐ ์ํ ๊ท๋ชจ ๋ถ๋ณ ๋ชจ๋ธ์ ์ ๊ณตํฉ๋๋ค.
๋ฒ์ญ๊ฐ์ ์ถ์
๋ธ๋ก๊ทธ์์๋ ์ฝ์ด๋ณด์ธ์.
- ยซ
GitOps: ํ ๋ฐ ํธ์ ๋ฐฉ๋ฒ ๋น๊ต "; - ยซ
Kubernetes ๋ฆฌ์์ค ๋ชจ๋ํฐ๋ง์ ์ํ kubedog ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์๊ฐ "; - ยซ
Kubernetes ํ์ฅ ๋ฐ ๋ณด์(๊ฐ์ ๋ฐ ๋์์ ๋ณด๊ณ ์) ".
๋ฑ๋ก๋ ์ฌ์ฉ์๋ง ์ค๋ฌธ ์กฐ์ฌ์ ์ฐธ์ฌํ ์ ์์ต๋๋ค.
์ด ๋ ๊ฐ์ง ๋ฒ์ญ์ด Habrรฉ์ ๊ฒ์ฌ๋๊ธฐ ์ ์ GitOps์ ๋ํด ์๊ณ ๊ณ์ จ๋์?
-
์, ๋ ๋ค ์๊ณ ์์์ด
-
ํ๋ฉด์ ์ผ๋ก๋ง
-
์๋
35๋ช
์ ์ฌ์ฉ์๊ฐ ํฌํํ์ต๋๋ค. 10๋ช
์ ์ฌ์ฉ์๊ฐ ๊ธฐ๊ถํ์ต๋๋ค.
์ถ์ฒ : habr.com