- Aiden's Lab แแ ฒแแ ณแ แ ฆแแ ฅ
- Posts
- ๐ญGitOpsแ แ ณแฏ แแ ตแแ ขแแ กแแ ณแซ แแ ฆ แแ ฉแจ แแ ตแฏแแ ญแแ กแซ แแ ตแฏแแ ฎ แแ ขแแ งแทแแ ช แแ ญแผแแ ฅแ แ ณแฏ แแ ฅแผแ แ ตแแ ขแแ ฉแแ ก!
๐ญGitOpsแ แ ณแฏ แแ ตแแ ขแแ กแแ ณแซ แแ ฆ แแ ฉแจ แแ ตแฏแแ ญแแ กแซ แแ ตแฏแแ ฎ แแ ขแแ งแทแแ ช แแ ญแผแแ ฅแ แ ณแฏ แแ ฅแผแ แ ตแแ ขแแ ฉแแ ก!
GitOpsแแ ด แแ ตแฏแแ ฎ แแ ขแแ งแทแแ ช แแ ญแผแแ ฅแแ ณแฏแแ ณแฏ แแ ฎแซแแ ฅแจแแ ขแแ ฅ แแ กแฏแแ ต แแ ฑแธแแ ฆ แแ ฅแผแ แ ตแแ ขแปแแ ณแธแแ ตแแ ก.
์๋ ํ์ธ์, Aidenโs Lab ๋ด์ค๋ ํฐ์ ๋๋ค.

GitOps๋ DevOps ์ ๊ณ์์ ๊พธ์คํ ์ฃผ๋ชฉ๋ฐ๋ ํค์๋์ ๋๋ค. GitOps๋, ์ ํ๋ฆฌ์ผ์ด์ ์ฝ๋๋ถํฐ ์ธํ๋ผ ๊ตฌ์ฑ๊น์ง ํ์ํ ๋ชจ๋ ์ ๋ณด๋ฅผ Git ์ ์ฅ์์ ์ ์ฅํ๊ณ ๊ด๋ฆฌํ๋ DevOps ๋ฐฉ๋ฒ๋ก ์ค ํ๋์ธ๋ฐ์.
์ต๊ทผ๊น์ง GitOps ์์์๋ ๋ค์ํ ๊ฐ๋ ๊ณผ ์ฉ์ด๊ฐ ์ ๋ฆฝ๋๊ณ ์๋ค๋ณด๋, ์ด๋ฅผ ์๊ธฐ ์ฝ๊ฒ ์ ๋ฆฌํ๋ฉด ์ฌ๋ฌ๋ถ๋ค๊ป ๋์์ด ๋ ๊ฒ ๊ฐ์์ GitOps์ ํ์ ๊ฐ๋ ๋ค์ ์ปดํฉํธํ๊ฒ ์ ๋ฆฌํด๋ณด๊ฒ ์ต๋๋ค.
์ด๋ฒ ์ํฐํด์์๋ ์ค์ง์ ์ผ๋ก ๋์์ด ๋๋ GitOps ๊ด๋ จ ์ ๋ณด๋ฅผ ์ฒด๊ณ์ ์ผ๋ก ์ ๋ฌํด๋๋ฆฌ๊ธฐ ์ํด CNCF ์ฌ๋จ ๊ณต์ธ GitOps ์๊ฒฉ์ฆ Certified GitOps Associate (CGOA)์ ์ปค๋ฆฌํ๋ผ์ ์ฐธ๊ณ ํด์ ๊ตฌ์ฑํ๋๋ฐ์. ํด๋น ์๊ฒฉ์ฆ์ ์ค๋นํ๊ณ ๊ณ์ ๋ถ๋ค์๊ฒ๋ ์ ์ฉํ๊ฒ ์ฃ ?
์๋์ ๊ฐ์ด GitOps ๊ด๋ จ 5๊ฐ์ง ์์ฃผ์ ์ ๋ํด ์๊ธฐ ์ฝ๊ฒ ํ์ด์ ์ ๋ฆฌํ์ผ๋, ์ด๋ฒ ์ํฐํด์ ๋๊น์ง ์ฝ์ผ์๋ฉด GitOps์ ๋ํด ํํํ ๊ธฐ๋ฐ ์ง์์ ์ป์ด๊ฐ์ค ์ ์์ ๊ฒ๋๋ค.
GitOps์ ํต์ฌ ์์น
GitOps ๊ด๋ จ ์ฉ์ด
GitOps ๋ฐฐํฌ ํจํด
GitOps ๊ด๋ จ ๋ฐฉ๋ฒ๋ก
GitOps ๊ด๋ จ ๋๊ตฌ
GitOps์ ํต์ฌ ์์น
GitOps์ ๋ํด ์ดํดํ๊ธฐ ์ํด์ ๊ฐ์ฅ ๋จผ์ GitOps์ ํต์ฌ ์์น 4๊ฐ์ง๋ฅผ ์ง๊ณ ๋์ด๊ฐ์ผ ํฉ๋๋ค.
1. ์ ์ธ์ (Declarative) ๊ด๋ฆฌ
GitOps์ ์ฒซ ๋ฒ์งธ ์ฃผ์ ์์น์ ์์คํ ์ ์ต์ข ์ํ๋ฅผ ์์ค์ฝ๋๋ก, ๋ฌ๋ฆฌ ๋งํ์๋ฉด ์ ์ธ์ (Declarative)์ผ๋ก ์ ์ํ๋ ๊ฒ์ ๋๋ค. ์์คํ ์ด '์ด๋ป๊ฒ' ์ํ๋ ์ํ๋ก ๋๋ฌํ ์ง๋ฅผ ๊ธฐ์ ํ๋ ์ ์ฐจ์ (Procedural) ๋ฐฉ์๊ณผ ๋ฌ๋ฆฌ, '์ด๋ค' ์ํ๊ฐ ๋์ด์ผ ํ๋์ง๋ฅผ ๋ช ์ํ๋ ๋ฐฉ์์ ๋งํ๋๋ฐ์.
์ฐ๋ฆฌ์๊ฒ ์ต์ํ Kubernetes์ ๋ฆฌ์์ค๋ฅผ ์ ์ํ YAML ํ์ผ์ด ์ด๋ฐ ์ ์ธ์ ์ ๊ทผ ๋ฐฉ์์ ๋ํ์ ์ธ ์์๋ผ๊ณ ํ ์ ์์ต๋๋ค. GitOps๋ ์ด๋ ๊ฒ ์ ์ธ๋ ์ต์ข ๋ชฉํ ์ํ๋ฅผ ๊ธฐ์ค์ผ๋ก ์์คํ ์ ๊ด๋ฆฌํ๋ ๊ฒ์ด๊ณ ์.
2. ๋ฒ์ ๊ด๋ฆฌ
๋ค์ ์ฃผ์ ์์น์ ๋ฒ์ ๊ด๋ฆฌ์ ๋๋ค. GitOps์์ ํด๋ฌ์คํฐ๊ฐ ๋์ด์ผ ํ๋ ์ต์ข ๋ชฉํ ์ํ(๋๋ ์ฌ์ฉ์๊ฐ ์ํ๋ ์ํ๋ผ๊ณ ํด์ Desired State๋ผ๊ณ ํฉ๋๋ค.)์ ๋ํ ๋ชจ๋ ์ ๋ณด๋ Git ์ ์ฅ์์ ์ ์ฅ ๋ฐ ๊ด๋ฆฌ๋ฉ๋๋ค.
์ฆ, ์ฌ์ฉ์๊ฐ ์ ์ํ๋ ํด๋ฌ์คํฐ์ ์ต์ข ์ํ๋ ์ค์ง Git ์ ์ฅ์์์๋ง ์ ์ฅ๋๊ณ ๋ณ๊ฒฝ๋๋ค๋ ๋ป์ธ๋ฐ์. ์ด๋ฅผ ์ค๊ณ ์ด๋ก ์์ ์ฌ์ฉํ๋ ์ ๋ฌธ์ ์ธ ๋ง๋ก ๋ฐ๊ฟ ๋งํ๋ฉด, 'Git์ด ๋จ์ผ ์ง์ค ๊ณต๊ธ์(Single Source of Truth, SSoT)์ ์ญํ ์ ์ํํ๋ค'๊ณ ๋งํฉ๋๋ค. ์์คํ ์ด ์ฐธ์กฐํ ์ ์๋ ์ง์ง ์ ๋ณด๋ ์ค์ง Git ํ ๊ณณ์์๋ง ๊ด๋ฆฌํ๋ค๋ ์๋ฏธ์ ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ด๋ฐ Desired State๋ Git ํ์คํ ๋ฆฌ์ ์ปค๋ฐ ๋ฉ์์ง์ ํจ๊ป ๊ฐ ๋ฒ์ ์ด ๊ธฐ๋ก๋๋๋ฐ์. ๊ทธ ๋์ ํน์ ์ํ๊ฐ ์ธ์ , ์, ์ด๋ป๊ฒ ๋ณ๊ฒฝ๋์๋์ง ์ถ์ ํ๊ณ ๊ด๋ฆฌํ๊ธฐ ์ฝ์ต๋๋ค. ๋ง์ฝ ์์ ํ ๋ฌธ์ ๊ฐ ๋ฐ์ํด๋ ์ด์ ์ํ๋ก ์์ ํ๊ฒ ๋กค๋ฐฑ(Rollback)ํ๊ธฐ๋ ์ฉ์ดํ์ฃ .
3. Pull ๋ฐฉ์ ์๋ํ
Pull ๋ฐฉ์ ์๋ํ๋ ์ ํต์ ์ธ ์ง์์ ๋ฐฐํฌ(CD)์ ์ ๋ฐ์ดํธ ๋ฐฉ์๊ณผ GitOps์ ์ ๋ฐ์ดํธ ๋ฐฉ์์ ๋ค๋ฅด๋ค๋ ๊ฒ์์ ์ถ๋ฐํฉ๋๋ค.
์ฐ๋ฆฌ๊ฐ ์ด๋ฏธ ์๊ณ ์๋ CD ํ์ดํ๋ผ์ธ์ ํด๋ฌ์คํฐ๋ก ๋ณ๊ฒฝ ์ฌํญ์ ๋ฐ์ด๋ฃ๋(Push) ๋ฐฉ์์ธ๋ฐ์. GitOps๋ ์ด์ ๋ฐ๋๋ก, ํด๋ฌ์คํฐ ๋ด๋ถ์ ์ค์น๋ Argo CD๋ Flux์ ๊ฐ์ ์์ด์ ํธ๊ฐ Git ์ ์ฅ์๋ก๋ถํฐ ํด๋ฌ์คํฐ์ ์ต์ ์ํ๋ฅผ ๋น๊ฒจ์ค๋(Pull) ๋ฐฉ์์ ๋๋ค. ์ด๊ฑด ๊ธฐ์กด์ DevOps ๋ฐฉ์๊ณผ ํ์ฐํ ์ฐจ์ด๊ฐ ์๊ธฐ ๋๋ฌธ์ Pull ๋ฐฉ์ ์๋ํ๊ฐ GitOps์ ์ฃผ์ ์์น์ด๋ผ ๋ถ๋ฆฌ๋ ๊ฒ์ ๋๋ค.
๊ฒ๋ค๊ฐ Pull ๋ฐฉ์์ ํด๋ฌ์คํฐ ์ธ๋ถ์ ์์นํ ์์คํ (์: CD ํ์ดํ๋ผ์ธ)์ ํด๋ฌ์คํฐ ์ ๊ทผ ๊ถํ์ ๋ถ์ฌํ ํ์๊ฐ ์๊ธฐ ๋๋ฌธ์ ์ ์ฌ์ ์ธ ๋ณด์ ์ํ๋ ๊ฐ์ํฉ๋๋ค. ํด๋ฌ์คํฐ์ ๊ฒฝ๊ณ๋ฅผ ๋์ฑ ๋ช ํํ๊ฒ ํ๊ณ , ๊ณต๊ฒฉ ํ๋ฉด์ ์ค์ด๋ ํจ๊ณผ๊ฐ ์๋ ๊ฒ์ด์ฃ .
4. ์ง์์ ์กฐ์ (Continuously Reconciled)
GitOps์ ๋ง์ง๋ง ํต์ฌ ์์น์ธ ์ง์์ ์กฐ์ ์, ํด๋ฌ์คํฐ์ ์ค์ ์ํ(Actual State)๊ฐ Git์์ ์ ์๋ ์ต์ข ๋ชฉํ ์ํ(Desired State)์ ์ผ์นํ ๋๊น์ง ๋์์์ด ์กฐ์ (Reconcile)ํ๋ ๊ฒ์ ๋งํฉ๋๋ค.
ํด๋ฌ์คํฐ ๋ด์ Argo CD๋ Flux์ ๊ฐ์ GitOps ์์ด์ ํธ๊ฐ ์ด ๋ ์ํ๋ฅผ ๊ณ์ ๋น๊ตํ๋ค๊ฐ ๋ง์ฝ ๋ถ์ผ์น(๋์ค์ ์ธ๊ธํ๊ฒ ์ง๋ง, ์ด๋ฐ ์ํ ๋ถ์ผ์น๋ฅผ State Drift๋ผ๊ณ ํฉ๋๋ค.)๊ฐ ๋ฐ์ํ๋ฉด ์ด๋ฅผ ๊ฐ์งํ๊ณ , ์๋์ผ๋ก ์กฐ์ ํ๊ธฐ๋ ํ์ฃ .
์ง์์ ์ผ๋ก ์กฐ์ ์ ๋ฐ๋ณตํ๋ ๊ณผ์ ์ ํด๋ฌ์คํฐ์ ์ผ๊ด์ฑ๊ณผ ์์ ์ฑ์ ๋ณด์ฅํ๋ ํต์ฌ ๋ฉ์ปค๋์ฆ์ ๋๋ค.
GitOps ๊ด๋ จ ์ฉ์ด
์์์ GitOps์ ํต์ฌ ์์น์ ์ค๋ช ํ๋ ๊ณผ์ ์์ ์๋ง ์ต์ํ์ง ์์ ์ฉ์ด๋ฅผ ๋ง๋์ จ์ ์๋ ์๋๋ฐ์. ๊ทธ๋์ GitOps์์ ๊ผญ ์์์ผ ํ๋ ํต์ฌ ์ฉ์ด 4๊ฐ์ง๋ฅผ ์ง๊ณ ๋์ด๊ฐ๊ฒ ์ต๋๋ค.
1. Desired State
ํด๋ฌ์คํฐ์ Desired State๋, ๊ฐ๋ฐ์ ๋๋ ๊ด๋ฆฌ์๊ฐ ์ต์ข ๋ชฉํ๋ก ์ ์ํ ์ํ๋ฅผ ๋งํฉ๋๋ค. ํนํ GitOps์์ Git ์ ์ฅ์์ ์ฝ๋๋ก ์ ์๋ ์ต์ข ๋ชฉํ ์ํ๋ฅผ ์๋ฏธํ์ฃ .
Git ์ ์ฅ์์์ ๊ด๋ฆฌ๋๊ธฐ ๋๋ฌธ์ Desired State์ ๋ณ๊ฒฝ ์ด๋ ฅ๋ ๋น์ฐํ ๊ด๋ฆฌ์ ์ถ์ ์ด ๊ฐ๋ฅํฉ๋๋ค.
GitOps์ ๋ชจ๋ ํ๋์ ํด๋ฌ์คํฐ์ ์ค์ ์ํ(Actual State)๋ฅผ Desired State์ ์ผ์น์ํค๋ ๊ฒ์ ๋ชฉํ๋ก ํฉ๋๋ค.
2. State Drift
State Drift(์ํ ๋๋ฆฌํํธ)๋ Git ์ ์ฅ์์ ์ ์ธ๋ Desired State์ ํ์ฌ ํด๋ฌ์คํฐ์ ์ค์ ์ํ๊ฐ ์ผ์นํ์ง ์๋ ํ์์ ๋งํฉ๋๋ค. ๊ด๋ฆฌ์์ ์ํ ์ฝ๋ ์๋ ๋ณ๊ฒฝ์ด๋ ์ค์ ์ค๋ฅ, ์๊ธฐ์น ๋ชปํ ์ฅ์ ๋ฑ ๋ค์ํ ์์ธ์ผ๋ก State Drift๊ฐ ๋ฐ์ํ ์ ์๋๋ฐ์.
Argo CD๋ Flux ๊ฐ์ GitOps ์์ด์ ํธ๋ ์ด๋ฐ Drift๋ฅผ ์ง์์ ์ผ๋ก ๊ฐ์งํ๊ณ , ์์ ํ๊ฑฐ๋ ์ฌ์ฉ์์๊ฒ ๊ฒฝ๊ณ ์๋ฆผ์ ๋ณด๋ด๋ ์ญํ ์ ์ํํฉ๋๋ค.
3. Feedback Loop
GitOps์ ๋ง์ง๋ง ํต์ฌ ์์น์์๋ ์ธ๊ธํ๋ '์กฐ์ (Reconcile)์ ๋ฐ๋ณต'์ Feedback Loop๋ผ๋ ๊ฐ๋ ์ ์ค์ ๋ก ๊ตฌํํ ๊ฒ์ ๋๋ค.
Feedback Loop๋ ์ง์์ ์ผ๋ก ํด๋ฌ์คํฐ์ ์ค์ ์ํ๋ฅผ ์ธก์ ํ๊ณ , ์ด๋ฅผ Desired State์ ๋น๊ตํ์ฌ ๊ทธ ์ฐจ์ด๋ฅผ ์ค์ด๋ ๋ฐฉํฅ์ผ๋ก ํด๋ฌ์คํฐ๋ฅผ ์ ์ดํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์ธ๋ถ์ ๋ณํ๋ ๋ด๋ถ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋๋ผ๋ ํด๋ฌ์คํฐ๊ฐ ์์ ์ ์ธ ์ํ๋ฅผ ์ ์งํ ์ ์๋๋ก ํ๋ ๊ฒ์ด์ฃ .
4. Rollback
ํด๋ฌ์คํฐ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ฌ ์ด์ ์ํ๋ก ๋๋๋ ค์ผ ํ ๋, GitOps๋ ์์ฃผ ํจ๊ณผ์ ์ผ๋ก Rollbackํ ์ ์์ต๋๋ค.
Desired State๊ฐ Git์์ ๊ด๋ฆฌ๋๋ฏ๋ก, git revert
๋ ์ํฉ์ ๋ฐ๋ผ์๋ git reset
๋ช
๋ น์ด๋ก ์ด์ ์ปค๋ฐ์ ๊ฐ๋ฆฌํค๋๋ก ๋ณ๊ฒฝํ๋ ๊ฒ์ด ์ด๋ ต์ง ์๊ธฐ ๋๋ฌธ์ธ๋ฐ์.
์ด๋ ๊ฒ Rollback๋๋ฉด GitOps ์์ด์ ํธ๊ฐ ๊ทธ ๋ณ๊ฒฝ์ ๊ฐ์งํ์ฌ ํด๋ฌ์คํฐ๋ฅผ ํด๋น ๋ฒ์ ์ผ๋ก ์๋ ๋ณต๊ตฌํ๋ฏ๋ก ๋น ๋ฅด๊ณ ์์ ์ ์ธ ์ฅ์ ๋ณต๊ตฌ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
GitOps ๋ฐฐํฌ ํจํด
GitOps ๋ฐฉ๋ฒ๋ก ์์ ์ฌ์ฉํ ์ ์๋ ๋ฐฐํฌ ํจํด์ ๋ค์ํ๋ฐ์. ๊ทธ ์ค์์๋ GitOps์ ํต์ฌ ๋ฐฐํฌ ํจํด 4๊ฐ์ง๋ฅผ ์ปดํฉํธํ๊ฒ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
1. ๋ฐฐํฌ ๋ฐ ๋ฆด๋ฆฌ์ฆ ํจํด
ํ๊ฒฝ๋ณ ๋ธ๋์น ํจํด
๊ฐ๋ฐ(
dev
), ์คํ ์ด์ง(staging
), ์ด์(prod
) ๋ฑ ๊ฐ ๋ฐฐํฌ ํ๊ฒฝ์ ํด๋นํ๋ ๋ณ๋์ Git ๋ธ๋์น๋ฅผ ์ด์ํ๋ ๋ฐฉ์์ ๋๋ค.๋ณ๊ฒฝ ์ฌํญ์ ๋๊ฐ Pull Request๋ฅผ ํตํด
dev
์์staging
์ผ๋ก, ๋ค์staging
์์prod
์์๋ก ๋ณํฉ๋ฉ๋๋ค.๊ฐ ํ๊ฒฝ์ ์ํ๋ฅผ ๋ช ํํ๊ฒ ๊ฒฉ๋ฆฌํ๊ณ ๊ด๋ฆฌํ ์ ์๋ ๊ฒ์ด ์ฅ์ ์ ๋๋ค.
ํ๊ฒฝ๋ณ ๋๋ ํ ๋ฆฌ ํจํด
์ฌ๋ฌ ๋ธ๋์น๋ฅผ ์ฌ์ฉํ์ง ์๊ณ , ๋จ์ผ
main
๋ธ๋์น ๋ด์์overlays/dev
,overlays/prod
์ ๊ฐ์ด ๊ฐ ํ๊ฒฝ์ ํด๋นํ๋ ๋๋ ํ ๋ฆฌ๋ฅผ ๋ง๋ค์ด ์ค์ ์ ๊ด๋ฆฌํ๋ ๋ฐฉ์์ ๋๋ค.Kustomize์ ๊ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ๊ณตํต๋ ๊ธฐ๋ณธ ์ค์ ์ ๊ฐ ํ๊ฒฝ๋ณ ๋ณ๊ฒฝ ์ฌํญ์ ๋ง์์ฐ๋ ๋ฐฉ์์ผ๋ก ๋์ํฉ๋๋ค.
๋ธ๋์น ๊ด๋ฆฌ์ ๋ณต์ก์ฑ์ ์ค์ผ ์ ์๋ ๊ฒ์ด ์ฅ์ ์ ๋๋ค.
App of Apps ํจํด
๋ค์์ ๋ง์ดํฌ๋ก์๋น์ค๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐฐํฌํ๊ณ ๊ด๋ฆฌํด์ผ ํ ๋ ์ ์ฉํ ์ฌ์ฉ๋๋ ํจํด์ ๋๋ค.
์ฌ๋ฌ ๊ฐ์ ํ์ ์ ํ๋ฆฌ์ผ์ด์ ๋ค์ ๊ด๋ฆฌํ๋ ํ๋์ ์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋๋ ๋ฐฉ์์ ๋๋ค.
Agro CD์ ๊ฐ์ ๋๊ตฌ์์ ์ฃผ๋ก ์ฌ์ฉ๋๋ฉฐ, ๋ณต์กํ ์์คํ ์ ๋ฐฐํฌ๋ฅผ ์ค์์์ ์ผ๊ด๋๊ฒ ๊ด๋ฆฌํ ์ ์๋ ๊ฒ์ด ์ฅ์ ์ ๋๋ค.
2. ์ ์ง์ ๋ฐฐํฌ(Progressive Delivery) ํจํด
์นด๋๋ฆฌ ๋ฐฐํฌ ํจํด
์๋ก์ด ์ ํ๋ฆฌ์ผ์ด์ ๋ฒ์ ์ ์ผ๋ถ ์ฌ์ฉ์์๊ฒ๋ง ๋จผ์ ๋ฐฐํฌํ๋ ๋ฐฉ์์ ๋๋ค.
Git ์ ์ฅ์์ ๋งค๋ํ์คํธ ํ์ผ์์ ํธ๋ํฝ ๊ฐ์ค์น(์:
stable: 90%
,canary: 10%
)๋ฅผ ๋ณ๊ฒฝํ๋ ์์ผ๋ก ๊ตฌํํ ์ ์์ต๋๋ค.์ ๋ฒ์ ์ ์์ ์ฑ์ ์ค์ ํธ๋ํฝ์ผ๋ก ๊ฒ์ฆํ์ฌ ์ํ์ ์ต์ํํ ์ ์๋ ๊ฒ์ด ์ฅ์ ์ ๋๋ค.
Blue/Green ๋ฐฐํฌ ํจํด
ํ์ฌ ์ด์ ์ค์ธ ๋ฒ์ (Blue)๊ณผ ๋์ผํ ํ๊ฒฝ์ ์๋ก์ด ๋ฒ์ (Green)์ ๋ฐฐํฌํ ํ, ํธ๋ํฝ์ ํ ๋ฒ์ ์ ํํ๋ ๋ฐฉ์์ ๋๋ค.
GitOps ํ๊ฒฝ์์๋ Git์ ๋งค๋ํ์คํธ๋ฅผ ์์ ํ์ฌ ํธ๋ํฝ ๋ผ์ฐํ ๋์์ Green ๋ฒ์ ์ผ๋ก ๋ณ๊ฒฝํจ์ผ๋ก์จ ๊ตฌํํ ์ ์์ต๋๋ค.
๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฉด ์ฆ์ ํธ๋ํฝ์ ๋ค์ Blue ๋ฒ์ ์ผ๋ก ๋๋๋ฆด ์๋ ์๊ธฐ ๋๋ฌธ์, ๋ค์ดํ์ ์๋ ์์ ํ ๋ฐฐํฌ๊ฐ ๊ฐ๋ฅํ๋ค๋ ๊ฒ์ด ์ฅ์ ์ ๋๋ค.
3. Pull vs Event-driven
์ฐ๋ฆฌ๊ฐ ์์์ ์ดํด๋ณธ Pull ๋ฐฉ์์ ์ ํด์ง ์ฃผ๊ธฐ๋ง๋ค Git ์ ์ฅ์ ๋ด ๋งค๋ํ์คํธ์ ๋ณ๊ฒฝ ์ฌํญ์ ํ์ธํฉ๋๋ค. ๋ฐ๋ฉด์ Event-driven ๋ฐฉ์์ ํน์ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ์ ๋ ๋๊ธฐํ๋ฅผ ์์ํฉ๋๋ค.
์๋ฅผ ๋ค์ด Git ์ ์ฅ์์ ์๋ก์ด ์ปค๋ฐ์ด ํธ์๋๊ฑฐ๋ ์ด๋ฏธ์ง ๋ ์ง์คํธ๋ฆฌ์ ์๋ฒ์ ์ ์ด๋ฏธ์ง๊ฐ ๋ฑ๋ก๋๋ฉด, Webhook ๋ฑ์ ํตํด GitOps ์์ด์ ํธ๊ฐ ์ด๋ฌํ ๋ณ๊ฒฝ ์ฌํญ์ ์ธ์งํ ์ ์๊ฒ ๋๋ ๊ฒ์ด์ฃ .
๊ทธ๋์ Event-driven ๋ฐฉ์์ด ๋ณด๋ค ๋ ๋น ๋ฅธ ํผ๋๋ฐฑ๊ณผ ์ ์ํ ๋ฐฐํฌ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
4. ์ํคํ ์ฒ ํจํด
GitOps ์ํคํ ์ฒ์์๋ ์ ํ๋ฆฌ์ผ์ด์ ์์ค์ฝ๋๋ฅผ ๋ด๋ ์ ์ฅ์์, ํด๋น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐฐํฌ ๋ฐฉ๋ฒ์ ์ ์ํ k8s ๋งค๋ํ์คํธ๋ฅผ ๋ด๋ ์ ์ฅ์๋ฅผ ๋ถ๋ฆฌํ์ฌ ๊ด๋ฆฌํ๋ ๊ฒ์ด ๊ถ์ฅ๋ฉ๋๋ค.
์ด ๋ฐฉ์์ ๊ด์ฌ์ฌ์ ๋ถ๋ฆฌ(Seperation of Concerns)๋ผ๋ ์์น์ ๋ฐ๋ผ, ๊ฐ๋ฐํ์ ์ ํ๋ฆฌ์ผ์ด์ ์ฝ๋์ ์ง์คํ๊ณ ์ด์ํ์ ๋ฐฐํฌ์ ์ด์์ ์ง์คํ ์ ์๋๋ก ๋์์ฃผ๋๋ฐ์.
๊ฑฐ๊ธฐ์ ๋งค๋ํ์คํธ ์ ์ฅ์์ ๋ํ ์ ๊ทผ ๊ถํ์ ๋ ์๊ฒฉํ ๊ด๋ฆฌํ ์ ์์ด ๋ณด์์๋ ์ ๋ฆฌํฉ๋๋ค.
GitOps ๊ด๋ จ ๋ฐฉ๋ฒ๋ก
์ด ์์ ์์ GitOps์ ๊น์ด ์ฐ๊ด๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ๋ก ์ ํจ๊ป ๋ณด๋ฉด GitOps์ ๋ํด ๋ ํจ๊ณผ์ ์ผ๋ก ์ดํดํ ์ ์์ต๋๋ค. ๊ทธ๋์ ์ด๋ฒ์ GitOps ๊ด๋ จ ์ฃผ์ ๋ฐฉ๋ฒ๋ก 4๊ฐ์ง๋ฅผ ์์๋ณด๊ฒ ์ต๋๋ค.

1. Configuration as Code (CaC)
CaC๋ ์ธํ๋ผ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ฑ์ ์คํฌ๋ฆฝํธ๋ ์์ค์ฝ๋ ํ์ผ๋ก ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ๋ก ์ ๋๋ค. GitOps๋ Kubernetes ๋งค๋ํ์คํธ YAML ํ์ผ์ ์ฌ์ฉํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ฑ์ ์ฝ๋๋ก ๋ช ํํ๊ฒ ์ ์ํ๊ณ , Git์ผ๋ก ๋ฒ์ ๊ด๋ฆฌํ์ฌ CaC๋ฅผ ์คํํ ์ ์๋๋ฐ์.
GitOps์ CaC๋ฅผ ๊ฒฐํฉํ๋ฉด, ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐฐํฌ ๋ฒ์ ๋ถํฐ ๋ฆฌ์์ค ์๊ตฌ๋, ํ๊ฒฝ ๋ณ์ ๋ฑ ๋ค์ํ ๊ตฌ์ฑ์ ์ ๋ฐ์ดํธ๊ฐ Git ์ปค๋ฐ์ผ๋ก ๋จ๊ธฐ ๋๋ฌธ์ ๋ณ๊ฒฝ ์ฌํญ์ ํฌ๋ช ํ๊ฒ ์ถ์ ํ๊ณ ๊ฒํ ํ ์ ์์ด ์์ ์ ์ผ๋ก ์ด์ํ ์ ์์ต๋๋ค.
2. Infrastructure as Code (IaC)
VM์ด๋ ๋คํธ์ํฌ์ ๊ฐ์ ์ธํ๋ผ๋ฅผ ์ฝ๋๋ก ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ๋ก ์ธ IaC ์ญ์ GitOps์์ ์์ฝ๊ฒ ์คํ๋ ์ ์์ต๋๋ค.
Terraform์ด๋ Pulumi์ ๊ฐ์ IaC ๋๊ตฌ๋ก ์์ฑํ ์ธํ๋ผ ์ฝ๋๋ฅผ Git ์ ์ฅ์์ ์ ์ฅํ๊ณ ๊ด๋ฆฌํ๋ฉด์ ๋ณ๊ฒฝ ์ด๋ ฅ์ ์ถ์ ํ ์ ์๋ค๋ฉด, ์ธํ๋ผ ์ฝ๋๋ ๋์ฑ ์์ ์ ์ผ๋ก ๊ฐ๋ฐํ๊ณ ๊ด๋ฆฌํ ์ ์๊ฒ ์ฃ ?
๊ทธ๋์ GitOps์ IaC๋ ํจ๊ป ํ์ฉ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
3. DevOps ๋ฐ DevSecOps
GitOps๋ ๊ฐ๋ฐ์๊ฐ Git ์ ์ฅ์์ ์ฝ๋๋ฅผ Pushํ๋ ๊ฒ๋ง์ผ๋ก ๋ฐฐํฌ์ ์ฐธ์ฌํ ์ ์๊ฒ ํ๊ณ , ํด๋ฌ์คํฐ ์ด์์๋ Git์ ํตํด ๋ชจ๋ ๋ฐฐํฌ ์ํ๋ฅผ ๋ช ํํ ํ์ ํ ์ ์๋๋ก ํด ํ ๊ฐ์ ํ์ ์ ์ด์ง์ํต๋๋ค. ๊ฒฐ๊ตญ GitOps๋ DevOps๋ฅผ Git ๊ธฐ๋ฐ์ผ๋ก ๊ตฌํํ ๋ฐฉ๋ฒ๋ก ์ด๋ผ๊ณ ํ ์ ์์ฃ .
๋ํ, ์ ์ ๋ถ์์ด๋ ์ทจ์ฝ์ ์ค์บ๊ณผ ๊ฐ์ ๋ณด์ ๊ฒ์ฌ๋ Git Pull Request ๊ธฐ๋ฐ์ ์๋ํ ํ์ดํ๋ผ์ธ์ ํฌํจ๋๊ธฐ ์ฉ์ดํฉ๋๋ค. Git ์ ์ฅ์์ ์ ๊ทผ ์ ์ด์ ๋ธ๋์น ๋ณดํธ ๊ท์น ๋ฑ์ ๋๊ฐ ํด๋ฌ์คํฐ ๊ตฌ์ฑ์์๋ฅผ ๋ณ๊ฒฝํ ์ ์๋์ง๋ฅผ ์๊ฒฉํ ํต์ ํ ์๋ ์๊ณ ์. ๊ทธ๋์ GitOps๋ ๊ฐ๋ฐ ์ด๊ธฐ ๋จ๊ณ๋ถํฐ ๋ณด์์ ๊ณ ๋ คํ๋ DevSecOps ๋ฌธํ๋ฅผ ์คํํ๋ ๊ฒ๋ ๊ฐ๋ฅํฉ๋๋ค.
4. ์ง์์ ํตํฉ(CI)๊ณผ ์ง์์ ๋ฐฐํฌ(CD)
GitOps์์์ CI์ CD์ ๋ํด ์ด์ผ๊ธฐํด๋ณด๊ฒ ์ต๋๋ค.
GitOps ์ํฌํ๋ก์ฐ์์ CI ํ์ดํ๋ผ์ธ์ ์ฃผ์ ์ญํ ์ ์ ํ๋ฆฌ์ผ์ด์ ์์ค์ฝ๋ ๋น๋๋ถํฐ ๋จ์ ํ ์คํธ/ํตํฉ ํ ์คํธ, ๊ทธ๋ฆฌ๊ณ ์ ํ๋ฆฌ์ผ์ด์ ๊ตฌ์ฑ์ ๋ฐฐํฌ ๊ฐ๋ฅํ ์ด๋ฏธ์ง๋ก ๋ง๋ค์ด ์ด๋ฏธ์ง ์ ์ฅ์์ Pushํ๋ ๊ฒ๊น์ง์ ๋๋ค.์ด๋ ๊ฒ GitOps์์์ CI์ ์ฑ ์์ ๋ช ํํ ๊ตฌ๋ถํ ์ ์๋๋ฐ์. ๋ฐ๊ฟ ๋งํ์๋ฉด, CI ํ์ดํ๋ผ์ธ์ด ์ ํ๋ฆฌ์ผ์ด์ ์ ํด๋ฌ์คํฐ์ ์ง์ ๋ฐฐํฌํ์ง ์์ต๋๋ค.
GitOps์์ CD์ ์ญํ ์ ํด๋ฌ์คํฐ ๋ด์์ ์คํ๋๋ GitOps ์์ด์ ํธ๊ฐ ๋ด๋นํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๊ฐ๋ฐ์๊ฐ Git ์ ์ฅ์์์ ๊ด๋ฆฌ๋๋ Kubernetes ๋งค๋ํ์คํธ๋ฅผ ์ ๋ฐ์ดํธํ ๊ฒฝ์ฐ, GitOps ์์ด์ ํธ๊ฐ ํด๋น ๋ณ๊ฒฝ์ ๊ฐ์งํด์ ์๋ก์ด Kubernetes ๋ฆฌ์์ค๋ฅผ ํด๋ฌ์คํฐ์ ๋ฐฐํฌํ๋ ๊ฑฐ์ฃ .
์ด๋ ๊ฒ GitOps์์ ์ธ๋ถ CI ํ์ดํ๋ผ์ธ์ ํด๋ฌ์คํฐ์ ์ ๊ทผํ ํ์๊ฐ ์๊ธฐ ๋๋ฌธ์, ํด๋ฌ์คํฐ ๋ด๋ถ๋ก ์นจํฌํ ์ ์๋ ํ๋ฉด์ ์ค์ฌ ๋ณด์ ์ธก๋ฉด์์ ์ ๋ฆฌํด์ง๋๋ค.
GitOps ๊ด๋ จ ๋๊ตฌ
์ฌ๊ธฐ๊น์ง ์ค์๋๋ผ ๊ณ ์ ๋ง์ผ์ จ์ต๋๋ค. ์ด๋ฒ ์ํฐํด์ ๋ง์ง๋ง ์น์ ์ผ๋ก, GitOps ๊ด๋ จ ๋๊ตฌ๋ค์ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ์๋ง ๋ฏ์ต์ ๋๊ตฌ๋ค๋ ๋ง๋์ค ๊ฑฐ์์.
๋งค๋ํ์คํธ ํฌ๋งคํ (Formatting) ๋ฐ ํจํค์ง(Packaging)
ํฌ๋งคํ ์ด๋ผ ํจ์ ํ์ผ์ ๋ด์ฉ์ ์ํ๋ ํ์์ผ๋ก ๋ฐ๊พธ๋ ๊ฑธ ๋งํฉ๋๋ค. ๋งค๋ํ์คํธ ํฌ๋งคํ ์ด๋ผ๊ณ ํ๋ฉด ๋งคํฐํ์คํธ ํ์ผ์ ๋ด์ฉ์ ์ฌ์ฉ์๊ฐ ์ํ๋ ํ์์ผ๋ก ๋ณํ์ํค๋ ์์ ์ ์๋ฏธํ์ฃ .
๊ฐ ํ๊ฒฝ๋ง๋ค Kubernetes ๋งค๋ํ์คํธ YAML ํ์ผ์ ๋ด์ฉ์ ๋ณ๊ฒฝํด์ผ ํ ๊ฒฝ์ฐ, ์ผ์ผ์ด ํ๊ฒฝ์ด ๋ฐ๋ ๋๋ง๋ค ์ง์ ๋งค๋ํ์คํธ ํ์ผ์ ์์ ํ๋ ๊ฑด ์์ด ๋ง์ด ๊ฐ๊ณ ์ค์๊ฐ ๋ฐ์ํ๊ธฐ๋ ์ฌ์ด๋ฐ์. ์ด๋ฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ฑ์ฅํ ๋งค๋ํ์คํธ ํฌ๋งคํ ํด์ด ์์ต๋๋ค. ๋ํ์ ์ผ๋ก Kustomize๊ฐ ์์ฃ .

Kustomize๋ Base๊ฐ ๋๋ YAML ํ์ผ์ dev
, staging
, prod
์ ๊ฐ์ ๊ฐ๊ธฐ ๋ค๋ฅธ ํ๊ฒฝ์ ๋ง์ถฐ ๋งค๋ํ์คํธ ๋ด์ฉ์ ๋ณ๊ฒฝํด ๋ฐฐํฌํ ์ ์๋๋ก ๋์์ค๋๋ค. Kustomize๋ ์ด๋ฏธ ์ง๋๋ฒ์ ๋ค๋ฃฌ ์ ์ด ์๋๋ฐ์, ๋ง์ฝ Kustomize์ ํต์ฌ ์ปจ์
๊ณผ ์ค์ต ๊ฐ์ด๋๊ฐ ๊ถ๊ธํ์๋ค๋ฉด ์ด์ ์ํฐํด์์ ํ์ธํด๋ณด์ธ์.
Kubernetes ํด๋ฌ์คํฐ์ ๋ฐฐํฌํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ค์ํ Kubernetes ๋ฆฌ์์ค๋ก ๊ตฌ์ฑ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์ด๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ค๋ฅธ ํด๋ฌ์คํฐ์ ๋ฐฐํฌํ๊ธฐ ์ํด ๊ณต์ ํด์ผ ํ๋ค๋ฉด, ๊ตฌ์ฑ ๋ฆฌ์์ค์ ๋ํ ๋งค๋ํ์คํธ YAML ํ์ผ์ ์ง์ ์ฎ๊ฒจ์ผ ํ ๊น์? ๊ทธ๋ด ์๋ ์๊ฒ ์ง๋ง, ๋งค๋ํ์คํธ ํ์ผ๋ค์ ํ๋์ ๋จ์๋ก ๋ฌถ์ด์ ๊ณต์ ํ ์ ์๋ค๋ฉด ๋ ํธ๋ฆฌํ์ง ์์๊น์? ์ด๋ฐ ๋ฌธ์ ์์์์ ๋ฑ์ฅํ ๊ฒ์ด ๋ฐ๋ก ๋งค๋ํ์คํธ ํจํค์ง์ด๊ณ , ๋ํ์ ์ธ ํด๋ก Helm์ด ์์ต๋๋ค.

Helm์ Kubernetes ํจํค์ง ๋งค๋์ ๋ผ๊ณ ๋ ํ๋๋ฐ์. ์ฐ๋ฆฌ๊ฐ Python์ผ๋ก ๊ฐ๋ฐํ ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์น ์ฉ๋๋ก ์ฌ์ฉํ๋ Pip์ฒ๋ผ, Helm์ ์๊ฒฉ์ ์ ์ฅ๋ Kubernetes ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ฝ๊ฒ ๋ค์ด๋ก๋๋ฐ๊ณ ํด๋ฌ์คํฐ์ ๋ฐฐํฌํ ์ ์๋๋ก ๋์์ค๋๋ค.
Helm์ผ๋ก ๊ณต์ ๋๋ Kubernetes ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฆฌ์์ค ๋งค๋ํ์คํธ ํ์ผ๋ค์ ๋ด์ฉ์ ๊ณ ์ ๋์ด ์์ง ์๊ณ ํน์ ๊ฐ์ ๋ฃ์ ์ ์๋๋ก ํ ํ๋ฆฟํ๋์ด ์๊ธฐ ๋๋ฌธ์, ๋์ผํ ์ ํ๋ฆฌ์ผ์ด์ ์ด๋ผ๊ณ ํด๋ ํด๋ฌ์คํฐ๋ ํ๊ฒฝ์ ๋ฐ๋ผ ๋ค๋ฅธ ์ค์ ์ผ๋ก ์ฝ๊ฒ ๋ฐฐํฌํ ์ ์๋ ๊ฒ์ด ์ฅ์ ์ ๋๋ค.
GitOps ์ํฌํ๋ก์ฐ์์๋ Kustomize์ Helm์ด ์ฐธ์กฐํ๋ ํด๋ฌ์คํฐ/ํ๊ฒฝ ์ ์ฉ ์ค์ ๊ฐ๋ค์ Git์ ์ ์ฅํ๊ณ ๊ด๋ฆฌํจ์ผ๋ก์จ ๋ณ๊ฒฝ ์ด๋ ฅ ๊ธฐ๋ก ๋ฐ ์ถ์ ์ ์ฉ์ดํ๊ฒ ๋ง๋ค ์ ์์ต๋๋ค.
State Store ์์คํ
ํด๋ฌ์คํฐ์ Desired State๋ฅผ ์ ์ฅํ๊ณ ๊ด๋ฆฌํ๋ ํต์ฌ ์์คํ ์ State Store๋ผ๊ณ ํ๋๋ฐ์. ์๋ง ๋์น์ฑ์ จ๊ฒ ์ง๋ง, GitOps์์ State Store๋ Git ์ ์ฅ์์ ๋๋ค.
๋ณ๊ฒฝ ์ด๋ ฅ ์ถ์ ์ด๋ Pull Request๋ฅผ ํตํ ํ์ ์ด ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ Git์ State Store๋ก ์์์ด ์์ต๋๋ค. ๋ณ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ํ ๊ด๋ฆฌ ์์คํ ๋ ํ์ํ์ง ์๊ธฐ ๋๋ฌธ์ ์ง๊ด์ ์ผ๋ก ์ฌ์ฉ ๊ฐ๋ฅํ๋ค๋ ๊ฒ๋ ์ฅ์ ์ ๋๋ค.
์กฐ์ ์์ง(Reconciliation Engine)
GitOps์ ํต์ฌ ์์๋ผ ํ ์ ์๋ ์กฐ์ ์์ง์ Argo CD์ Flux๊ฐ ๋ํ์ ์ ๋๋ค.
Argo CD๋ ์ง๊ด์ ์ธ ์น UI๋ฅผ ํตํด ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐฐํฌ ์ํ์ ๋๊ธฐํ ์ํ, ๋ฆฌ์์ค ๊ด๊ณ ๋ฑ์ ํ ๋์ ํ์ ํ ์ ์๊ณ , ์ฌ๋ฌ Kubernetes ํด๋ฌ์คํฐ๋ฅผ ์ค์์์ ๊ด๋ฆฌํ๋ ๊ธฐ๋ฅ๋ ์ ๊ณตํฉ๋๋ค. GitOps ๋ฐฐํฌ ํจํด์์ ์ดํด๋ดค๋ App of Apps ํจํด๋ ์ง์ํฉ๋๋ค.
Flux๋ GitOps Toolkit์ด๋ผ๋ ๋ ๋ฆฝ๋ ์ปดํฌ๋ํธ๋ค์ ์งํฉ์ผ๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค. ์ฌ์ฉ์๊ฐ GitOps ๋์ ์ ํ์ํ ๊ธฐ๋ฅ๋ง ์ ํํด์ ์ค์นํ ์ ์์ด์ ์ ์ฐํ๋ค๋ ๊ฒ์ด ํน์ง์ธ๋ฐ์.
์ฃผ๋ก ํฐ๋ฏธ๋ ํ๊ฒฝ์์ Kubernetes ํด๋ฌ์คํฐ๋ฅผ ๊ด๋ฆฌํ๋ฉฐ, Kubernetes ์ํ๊ณ์ ๊ธด๋ฐํ ํตํฉ์ ์งํฅํ๋ ํด์ ๋๋ค. Argo CD์ ๋นํด ์ข ๋ ๋ฏธ๋๋ฉํ ์ ๊ทผ ๋ฐฉ์์ ์ ํธํ๋ ์ฌ์ฉ์์๊ฒ ์ ํฉํ ํด์ ๋๋ค.

(์ถ์ฒ: https://fluxcd.io/flux/components/)
์๋ฆผ ๋๊ตฌ๋ฅผ ํ์ฉํ ์ํธ์ด์ฉ์ฑ(Interoperability with Notification)
๋๋ถ๋ถ์ GitOps ๋๊ตฌ๋ Slack์ด๋ Microsoft Teams, ์ด๋ฉ์ผ ๊ฐ์ ๋ค์ํ ์๋ฆผ ์ฑ๋๊ณผ ์ฐ๋ํ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๊ณ ์์ต๋๋ค. ๊ทธ๋์ ์ ํ๋ฆฌ์ผ์ด์ ๋ฐฐํฌ ์ฑ๊ณต์ด๋ State Drift ๊ฐ์ง, ๋๊ธฐํ ์คํจ ๊ฐ์ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ฉด ๋ด๋น์์๊ฒ ์ค์๊ฐ์ผ๋ก ์๋ฆด ์ ์๋ ๊ฑฐ์ฃ .
์ด๋ฐ ์๋ฆผ ๋๊ตฌ๋ฅผ ํ์ฉํ ์ํธ์ด์ฉ์ฑ ๋๋ถ์ ํ์ ํด๋ฌ์คํฐ์ ์ํ๋ฅผ ์ ์ํ๊ฒ ์ธ์งํ๊ณ ํ์ํ ์กฐ์น๋ฅผ ์ทจํ ์ ์๊ฒ ๋ฉ๋๋ค.
๋ง๋ฌด๋ฆฌ
์ ์ ๋ณต์กํด์ง๊ณ ๊ณ ๋ํ๋๋ ํด๋ผ์ฐ๋ ํ๊ฒฝ์์ GitOps๋ ์ ์ง๋ณด์์ฑ๊ณผ ์ฒด๊ณ์ฑ์ ๋ชจ๋ ๊ฐ์ถ๊ณ ์ ํ๋ ๊ฐ๋ฐ์๋ค์๊ฒ ์ข์ ๋ชจ๋ฒ ์ฌ๋ก๊ฐ ๋๊ณ ์์ต๋๋ค. ๊ทธ๋์ ์ฌ๋ฌ๋ถ๋ค๊ป ์๊ฐํด๋๋ฆฌ๋ฉด ์์ผ๋ก ํด๋ฌ์คํฐ ๋ฐฐํฌ์ ๊ด๋ จ๋ ์์ฌ๊ฒฐ์ ์ด ํ์ํ ๋ ๋์์ด ๋๊ฒ ๋ค๋ ์๊ฐ์ด ๋ค์์ต๋๋ค.
๊ทธ๋์ ์ด๋ ๊ฒ GitOps๋ฅผ ์ดํดํ๋ ๋ฐ์ ํ์์ ์ธ ๊ฐ๋ ๊ณผ ์ฉ์ด๋ค์ ์ด์ ๋ฆฌํด๋ดค๋๋ฐ์. ์ด๋ฒ ๊ธฐํ์ GitOps์ ๋ํด ๊ฐ์ ํ์คํ๊ฒ ์ก์ผ์ จ๊ธธ ๋ฐ๋๋๋ค.
๋ง์ฝ ๋ณธ ์ํฐํด์ ์ฝ๊ณ GitOps์ ๋ํด ํฅ๋ฏธ๊ฐ ๋ ์๊ธฐ์ จ๋ค๋ฉด Argo CD์ Flux๊ฐ ๊ฐ๊ฐ GitOps๋ฅผ ์ด๋ค ๋ฐฉ์์ผ๋ก ๊ตฌํํ๋์ง ๊ทธ ์ฐจ์ด์ ์ ์์๋ณด์๋ ๊ฑธ ์ถ์ฒ๋๋ฆฝ๋๋ค. GitOps์ ๋ํ ์ด๋ก ์ง์์ ๋์ด์ GitOps๊ฐ ์ด๋ป๊ฒ ์ฐ์ด๋์ง ๋ ๊น์ด ์ดํดํ์๊ฒ ๋ ๊ฑฐ์์.
๊ทธ๋ผ ๋ค์ ์ํฐํด์์ ๋ ํฅ๋ฏธ๋ก์ด ์ฃผ์ ๋ก ์ฐพ์์ค๊ฒ ์ต๋๋ค. ๊ฐ์ฌํฉ๋๋ค.
โจ์ด๋ฒ ๋ด์ค๋ ํฐ๋ ์ด๋ ์ จ๋์?
์ด๋ฒ ๊ธ์์ ๋ค๋ฃฌ ์ฃผ์ ์ ๋ํด ์ด๋ป๊ฒ ์๊ฐํ๋์ง ์๋ ค์ฃผ์ธ์! ๋ด์ค๋ ํฐ๋ฅผ ๋ ๋์ ๋ฐฉํฅ์ผ๋ก ๊ฐ์ ํ๊ธฐ ์ํด ์๋ ํผ์์ ์งง์ ํผ๋๋ฐฑ์ ๋ฐ๊ณ ์์ด์.
๐ ํผ๋๋ฐฑ ๋ณด๋ด๊ธฐ (1~2๋ถ ์์)
์ฌ๋ฌ๋ถ๋ค์ ์์คํ ์๊ฒฌ์ Aidenโs Lab ๋ด์ค๋ ํฐ์๊ฒ ํฐ ํ์ด ๋ฉ๋๋ค!
๐ญAidenโs Lab์์ ๋ ๋ง์ ์ํฐํด์ ๋ง๋๋ณด์ธ์
๋ฐํ๋ ๋ด์ค๋ ํฐ๋ฅผ ์์นด์ด๋นํ๊ณ ๋ค์ํ ์ ๋ณด๋ฅผ ๊ณต์ ํ๋ ๊ธฐ์ ๋ธ๋ก๊ทธ๋ฅผ ์ด์ ์ค์ ๋๋ค.